On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение
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. Возможно, для него она будет полезна при удаленном запуске, т.е., когда основная программа работает на одном компьютере, а ее интерфейс - на другом.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 22 , стр: 1 2 All [только новые]


moderator


Пост N: 1303
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 11.09.18 18:38. Заголовок: alkresin пишет: Ес..


alkresin пишет:

 цитата:

Есть библиотека и для Harbour.


В целом заманчиво. может есть простенький пример? Просто глянуть своими глазами. Без изысков оформления, ясно что это все пока только в проекте.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1071
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 11.09.18 18:51. Заголовок: Пример есть, и для G..


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1990
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.18 18:51. Заголовок: alkresin пишет:Есть ..


alkresin пишет:
 цитата:
Есть библиотека и для Harbour.


Haz пишет
 цитата:
Просто глянуть своими глазами


Без сборок, установил, запустил, исходники посмотрел. Для начала пощупать

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1991
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.18 18:55. Заголовок: alkresin пишет скача..


alkresin пишет
 цитата:
скачайте с github проект


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1992
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.18 18:57. Заголовок: PS Сколько клиентов ..


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост 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 уже будут доступны ?

Спасибо: 0 
ПрофильЦитата Ответить
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() - они вызывают функции и процедуры из основной программы.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1994
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.18 20:08. Заголовок: alkresin пишет:Да, в..


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


Пример такой, хотелось бы увидеть в готовом виде, уже все подзабылось по hwgui.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1073
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 11.09.18 21:00. Заголовок: Добавил пример - tes..


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1995
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.18 22:37. Заголовок: alkresin пишет: завт..


alkresin пишет:
 цитата:
завтра выложу новый готовый бинарник (там ошибка при закрытии формы).


Клиента тоже нужно, hb unicode нет под рукой, для сборки.
Есть disigner\samples\testdbf1.xml, он будет работать ?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1996
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.18 22:48. Заголовок: alkresin пишет:Обычн..


alkresin пишет:
 цитата:
Обычно ведь приложению требуется главное окно, а GuiServer - такое же приложение, он не может создать несколько главных окон.


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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 1997
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 11.09.18 22:58. Заголовок: alkresin пишет:Формы..


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


Т.е. если формы на сервере, то они могут вызвать выполнение процедуры на движке клиента и получить результат ?

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1074
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 12.09.18 10:09. Заголовок: SergKis пишет: Клие..


SergKis пишет:

 цитата:
Клиента тоже нужно, hb unicode нет под рукой, для сборки.


К клиенту таких требований нет, hwgui unicode - это для сервера. Единственное - клиент должен все строки передавать в utf-8.

 цитата:
Есть disigner\samples\testdbf1.xml, он будет работать ?


Должен.

 цитата:
Т.е. если формы на сервере, то они могут вызвать выполнение процедуры на движке клиента и получить результат ?


Да.

Спасибо: 0 
ПрофильЦитата Ответить
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.

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1076
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 16.09.18 15:59. Заголовок: У меня на сайте есть..


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

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1089
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 25.10.18 09:25. Заголовок: Написал статью на Ха..


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

Спасибо: 0 
ПрофильЦитата Ответить
moderator


Пост N: 1091
Зарегистрирован: 06.07.06
ссылка на сообщение  Отправлено: 28.10.18 14:20. Заголовок: Вышел новый релиз, v..


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

Спасибо: 0 
ПрофильЦитата Ответить
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.

Спасибо: 0 
ПрофильЦитата Ответить
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 для реализации наших нужд.

Спасибо: 0 
ПрофильЦитата Ответить
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.
Сам проект здесь, а готовые бинарники можно скачать по ссылке отсюда.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 22 , стр: 1 2 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 681
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет