Форум » GUI » GuiServer » Ответить

GuiServer

alkresin: Привет всем! Представляю свой новый проект - 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. Возможно, для него она будет полезна при удаленном запуске, т.е., когда основная программа работает на одном компьютере, а ее интерфейс - на другом.

Ответов - 18

Haz: alkresin пишет: Есть библиотека и для Harbour. В целом заманчиво. может есть простенький пример? Просто глянуть своими глазами. Без изысков оформления, ясно что это все пока только в проекте.

alkresin: Пример есть, и для Go, и для Harbour - скачайте с github проект, там в каталоге tests - test2.prg и батник для сборки. Для Go - test2.go в https://github.com/alkresin/external

SergKis: alkresin пишет:Есть библиотека и для Harbour. Haz пишет Просто глянуть своими глазами Без сборок, установил, запустил, исходники посмотрел. Для начала пощупать


SergKis: alkresin пишет скачайте с github проект Скачал, содержимое глянул, но ставить все компоненты для сборки не очень еще хочется

SergKis: PS Сколько клиентов к GuiServer connect делать смогут ?

SergKis: alkresin пишет (readme_ru.md):GuiServer может использовать созданные Дизайнером (утилита HwGUI) экранные формы. Т.е. xml файлы с формами от Дизайнера держим в GuiServer (по путям) и с клиента их вызываем для gui работы и события по формам так же отрабатывает guiServer. Я правильно понял ? И все режимы в объеме HwGui 2.18 b3 уже будут доступны ?

alkresin: SergKis пишет: ставить все компоненты для сборки не очень еще хочется Если вы о HwGui, то он нужен только для самого GuiServer, а его можно скачать готовый. Сколько клиентов к GuiServer connect делать смогут ? Один. Обычно ведь приложению требуется главное окно, а GuiServer - такое же приложение, он не может создать несколько главных окон. Поэтому сразу после установления соединения GuiServer закрывает порты. Другой клиент запустит другой экземпляр GuiServer. Т.е. xml файлы с формами от Дизайнера держим в GuiServer (по путям) и ... И все режимы в объеме HwGui 2.18 b3 уже будут доступны ? Да, все так. Формы можно, конечно, держать в любом месте. Для обратной связи в коде формы можно вставлять вызовы fGo() и pGo() - они вызывают функции и процедуры из основной программы.

SergKis: alkresin пишет:Да, все так. Формы можно, конечно, держать в любом месте. Для обратной связи в коде формы можно вставлять вызовы fGo() и pGo() - они вызывают функции и процедуры из основной программы. Пример такой, хотелось бы увидеть в готовом виде, уже все подзабылось по hwgui.

alkresin: Добавил пример - tests/test1.prg и формы в каталоге forms. GuiServer желательно перекомпилировать - завтра выложу новый готовый бинарник (там ошибка при закрытии формы).

SergKis: alkresin пишет: завтра выложу новый готовый бинарник (там ошибка при закрытии формы). Клиента тоже нужно, hb unicode нет под рукой, для сборки. Есть disigner\samples\testdbf1.xml, он будет работать ?

SergKis: alkresin пишет:Обычно ведь приложению требуется главное окно, а GuiServer - такое же приложение, он не может создать несколько главных окон. Спасибо за разъяснение Подумалось, что по схеме letodb работа GuiServera, для клиента main окно не важно (может быть hide всегда), клиент работает с диалоговыми окнами. Потому спросил о connect-ах

SergKis: alkresin пишет:Формы можно, конечно, держать в любом месте. Для обратной связи в коде формы можно вставлять вызовы fGo() и pGo() - они вызывают функции и процедуры из основной программы. Т.е. если формы на сервере, то они могут вызвать выполнение процедуры на движке клиента и получить результат ?

alkresin: SergKis пишет: Клиента тоже нужно, hb unicode нет под рукой, для сборки. К клиенту таких требований нет, hwgui unicode - это для сервера. Единственное - клиент должен все строки передавать в utf-8. Есть disigner\samples\testdbf1.xml, он будет работать ? Должен. Т.е. если формы на сервере, то они могут вызвать выполнение процедуры на движке клиента и получить результат ? Да.

alkresin: Обновил бинарники GuiServer и добавил еще один тест - test1a.prg. Теперь test1.prg демонстрирует использование xml-формы главного окна, а test1a.prg - использование диалоговой формы. Для сборки теста ничего особенного не надо. Для bcc можно использовать имеющийся там bldtest.bat, для mingw или чего другого - собирайте с файлами extgui.prg, extgui_classes.prg, hbip.c, misc.c, listen.c.

alkresin: У меня на сайте есть новый раздел "Заметки": http://www.kresin.ru/notes/index.php, там, в т.ч., регулярно обновляются записи о GuiServer - вместо отсутствующей пока документации.

alkresin: Написал статью на Хабре о GuiServer: https://habr.com/post/427429/

alkresin: Вышел новый релиз, v1.1 Можно загрузить с github'а.

alkresin: Создал форум на гугле по GuiServer и всему, что к нему относится: https://groups.google.com/d/forum/guiserver Да, и релиз 1.2 несколько дней назад вышел. Сделал на нем и External (Golang пакет для GuiServer) Golang Tutor - аналог моего HwGUI Tutor.



полная версия страницы