Автор | Сообщение |
|
| moderator
|
Пост N: 1070
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.09.18 16:02. Заголовок: GuiServer
Привет всем! Представляю свой новый проект - GuiServer. Это инструмент, предоставляющий GUI-функциональность программам, написанным на разных языках, позволяющий создавать для этих языков GUI-фреймворки. Работает это так. Ваша программа при старте запускает GuiServer, присоединяется к нему по tcp/ip и посылает команды-запросы на создание/модификацию GUI-элементов. Естественно, осуществляется и обратная связь. Т.е., в целом ваша программа состоит из двух процессов - основного и GUI, роль которого исполняет GuiServer. Запуск GuiServer'а, соединение и поддержку связи берет на себя небольшая библиотека, которую надо написать дл каждого конкретного языка. Подробнее см. здесь: http://www.kresin.ru/guisrv.html. Сам проект находится на https://github.com/alkresin/guiserver Библиотека для языка Go (для него я это первоначально и затеял): https://github.com/alkresin/external Есть библиотека и для Harbour. Возможно, для него она будет полезна при удаленном запуске, т.е., когда основная программа работает на одном компьютере, а ее интерфейс - на другом.
|
|
|
Новых ответов нет
, стр:
1
2
All
[см. все]
|
|
|
| |
Пост N: 1303
Зарегистрирован: 20.02.11
|
|
Отправлено: 11.09.18 18:38. Заголовок: alkresin пишет: Ес..
alkresin пишет: цитата: | Есть библиотека и для Harbour. |
| В целом заманчиво. может есть простенький пример? Просто глянуть своими глазами. Без изысков оформления, ясно что это все пока только в проекте.
|
|
|
|
| moderator
|
Пост N: 1071
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.09.18 18:51. Заголовок: Пример есть, и для G..
|
|
|
|
| постоянный участник
|
Пост N: 1990
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.09.18 18:51. Заголовок: alkresin пишет:Есть ..
alkresin пишет: цитата: | Есть библиотека и для Harbour. |
| Haz пишет цитата: | Просто глянуть своими глазами |
| Без сборок, установил, запустил, исходники посмотрел. Для начала пощупать
|
|
|
|
| постоянный участник
|
Пост N: 1991
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.09.18 18:55. Заголовок: alkresin пишет скача..
alkresin пишет Скачал, содержимое глянул, но ставить все компоненты для сборки не очень еще хочется
|
|
|
|
| постоянный участник
|
Пост N: 1992
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.09.18 18:57. Заголовок: PS Сколько клиентов ..
PS Сколько клиентов к GuiServer connect делать смогут ?
|
|
|
|
| постоянный участник
|
Пост N: 1993
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.09.18 19:24. Заголовок: alkresin пишет (read..
alkresin пишет (readme_ru.md): цитата: | GuiServer может использовать созданные Дизайнером (утилита HwGUI) экранные формы. |
| Т.е. xml файлы с формами от Дизайнера держим в GuiServer (по путям) и с клиента их вызываем для gui работы и события по формам так же отрабатывает guiServer. Я правильно понял ? И все режимы в объеме HwGui 2.18 b3 уже будут доступны ?
|
|
|
|
| moderator
|
Пост N: 1072
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.09.18 19:56. Заголовок: SergKis пишет: став..
SergKis пишет: цитата: | ставить все компоненты для сборки не очень еще хочется |
| Если вы о HwGui, то он нужен только для самого GuiServer, а его можно скачать готовый. цитата: | Сколько клиентов к GuiServer connect делать смогут ? |
| Один. Обычно ведь приложению требуется главное окно, а GuiServer - такое же приложение, он не может создать несколько главных окон. Поэтому сразу после установления соединения GuiServer закрывает порты. Другой клиент запустит другой экземпляр GuiServer. цитата: | Т.е. xml файлы с формами от Дизайнера держим в GuiServer (по путям) и ... И все режимы в объеме HwGui 2.18 b3 уже будут доступны ? |
| Да, все так. Формы можно, конечно, держать в любом месте. Для обратной связи в коде формы можно вставлять вызовы fGo() и pGo() - они вызывают функции и процедуры из основной программы.
|
|
|
|
| постоянный участник
|
Пост N: 1994
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.09.18 20:08. Заголовок: alkresin пишет:Да, в..
alkresin пишет: цитата: | Да, все так. Формы можно, конечно, держать в любом месте. Для обратной связи в коде формы можно вставлять вызовы fGo() и pGo() - они вызывают функции и процедуры из основной программы. |
| Пример такой, хотелось бы увидеть в готовом виде, уже все подзабылось по hwgui.
|
|
|
|
| moderator
|
Пост N: 1073
Зарегистрирован: 06.07.06
|
|
Отправлено: 11.09.18 21:00. Заголовок: Добавил пример - tes..
Добавил пример - tests/test1.prg и формы в каталоге forms. GuiServer желательно перекомпилировать - завтра выложу новый готовый бинарник (там ошибка при закрытии формы).
|
|
|
|
| постоянный участник
|
Пост N: 1995
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.09.18 22:37. Заголовок: alkresin пишет: завт..
alkresin пишет: цитата: | завтра выложу новый готовый бинарник (там ошибка при закрытии формы). |
| Клиента тоже нужно, hb unicode нет под рукой, для сборки. Есть disigner\samples\testdbf1.xml, он будет работать ?
|
|
|
|
| постоянный участник
|
Пост N: 1996
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.09.18 22:48. Заголовок: alkresin пишет:Обычн..
alkresin пишет: цитата: | Обычно ведь приложению требуется главное окно, а GuiServer - такое же приложение, он не может создать несколько главных окон. |
| Спасибо за разъяснение Подумалось, что по схеме letodb работа GuiServera, для клиента main окно не важно (может быть hide всегда), клиент работает с диалоговыми окнами. Потому спросил о connect-ах
|
|
|
|
|
| постоянный участник
|
Пост N: 1997
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.09.18 22:58. Заголовок: alkresin пишет:Формы..
alkresin пишет: цитата: | Формы можно, конечно, держать в любом месте. Для обратной связи в коде формы можно вставлять вызовы fGo() и pGo() - они вызывают функции и процедуры из основной программы. |
| Т.е. если формы на сервере, то они могут вызвать выполнение процедуры на движке клиента и получить результат ?
|
|
|
|
| moderator
|
Пост N: 1074
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.09.18 10:09. Заголовок: SergKis пишет: Клие..
SergKis пишет: цитата: | Клиента тоже нужно, hb unicode нет под рукой, для сборки. |
| К клиенту таких требований нет, hwgui unicode - это для сервера. Единственное - клиент должен все строки передавать в utf-8. цитата: | Есть disigner\samples\testdbf1.xml, он будет работать ? |
| Должен. цитата: | Т.е. если формы на сервере, то они могут вызвать выполнение процедуры на движке клиента и получить результат ? |
| Да.
|
|
|
|
| moderator
|
Пост N: 1075
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.09.18 13:23. Заголовок: Обновил бинарники Gu..
Обновил бинарники GuiServer и добавил еще один тест - test1a.prg. Теперь test1.prg демонстрирует использование xml-формы главного окна, а test1a.prg - использование диалоговой формы. Для сборки теста ничего особенного не надо. Для bcc можно использовать имеющийся там bldtest.bat, для mingw или чего другого - собирайте с файлами extgui.prg, extgui_classes.prg, hbip.c, misc.c, listen.c.
|
|
|
|
| moderator
|
Пост N: 1076
Зарегистрирован: 06.07.06
|
|
Отправлено: 16.09.18 15:59. Заголовок: У меня на сайте есть..
|
|
|
|
| moderator
|
Пост N: 1089
Зарегистрирован: 06.07.06
|
|
Отправлено: 25.10.18 09:25. Заголовок: Написал статью на Ха..
|
|
|
|
| moderator
|
Пост N: 1091
Зарегистрирован: 06.07.06
|
|
Отправлено: 28.10.18 14:20. Заголовок: Вышел новый релиз, v..
Вышел новый релиз, v1.1 Можно загрузить с github'а.
|
|
|
|
| moderator
|
Пост N: 1106
Зарегистрирован: 06.07.06
|
|
Отправлено: 12.11.18 15:54. Заголовок: Создал форум на гугл..
Создал форум на гугле по GuiServer и всему, что к нему относится: https://groups.google.com/d/forum/guiserver Да, и релиз 1.2 несколько дней назад вышел. Сделал на нем и External (Golang пакет для GuiServer) Golang Tutor - аналог моего HwGUI Tutor.
|
|
|
|
| moderator
|
Пост N: 1109
Зарегистрирован: 06.07.06
|
|
Отправлено: 14.11.18 21:06. Заголовок: Меня еще вот какая м..
Меня еще вот какая мысль посетила. GuiServer можно использовать не только как инструмент создания GUI для Golang и пр., но и как инструмент для Harbour - программистов, позволяющий получить доступ ко всем средствам того же Golang - а для него много написано в последние годы. Пишем вот такую ф-ю main для Go: func main() { if egui.Init("") != 0 { return } egui.OpenMainForm("forms/main.xml") egui.Exit() } Эта мини-программа запустит GuiServer и даст ему команду открыть форму главного окна, созданную HwGui Дизайнером. Дальше выполняется код, написанный на Harbour из этой формы. Этот код может вызывать функции из программы на Golang, чтобы сделать что-то, что Golang умеет лучше, чем Harbour - от парсинга веб-страниц до работы с Mongo DB. Т.е., программа на Go будет состоять из вышеприведенной главной ф-ии и ряда др. ф-й, вызываемых из Harbour для реализации наших нужд.
|
|
|
|
| moderator
|
Пост N: 1144
Зарегистрирован: 06.07.06
|
|
Отправлено: 14.01.19 16:19. Заголовок: В продолжение темы, ..
В продолжение темы, начатой в предыдущем посте. Написал программу, иллюстрирующую этот подход - mailagent. Это простая программа, которая в цикле через заданный промежуток времени опрашивает ваши почтовые ящики и сигнализирует, когда появляется что-то новое. Можно посмотреть заголовки последних писем и удалить явно ненужные. Таких программ было в свое время немало, но теперь большинство из них не работает из-за ssl и пр. У Harbour тоже не все хорошо с ssl, а на Golang все нужное реализовано. На Go написан вызов формы главного окна и несколько функций для работы с почтой. Вся логика - в коде формы, на Harbour И HwGUI. Программа работает через imap, поэтому адреса надо указывать именно imap-серверов, например, imap.yandex.ru:993. Проверено с yandex.ru, mail.ru, yahoo.com. Сам проект здесь, а готовые бинарники можно скачать по ссылке отсюда.
|
|
|
Новых ответов нет
, стр:
1
2
All
[см. все]
|
|