Lookout, интерфейсный модуль на шине Woobus, работает с «виртуальными» виджетами. Когда в описании интерфейса вы спрашиваете или меняете те или иные аттрибуты у виджета, на самом деле вы работаете с простым контейнером свойств. Для того чтобы сделанные изменения отразились в реальных виджетах от alterator требуется проделать некоторую дополнительную работу.
Реальные же виджеты предоставляет браузер интерфейса. На данный момент поддерживаются да вида браузеров:
Браузер находится во главе шины Woobus. Возможно что lookout и браузер физически находятся на одной машине, а возможно и нет. Даже внешне обычное GUI-приложение alterator может реально работать с какой-нибудь удалённой машиной.
Например, следующий layout показывает что qt-browser соединён с шиной ведущей через «транспортную развязку» в другую шину.
Обратите внимание на то что необходимо подгрузить расширения для используемых модулей.
А вот традиционное подключение в рамках одной машины:
HTTP-браузер подключается через входящую транспортную точку server-socket, сам же реально существует в виде CGI-скрипта и набора функций на Javascript.
Браузер и lookout общаются между собой на достаточно простом языке. Сначала происходит открытие новой сессии (да, lookout — это много сессионный модуль интерфейсов), возможно для этого потребуется некоторая авторизация. После открытия сессии браузер получает от lookout команды на создание/удаление/модификацию виджетов, а в ответ сообщает о тех или иных интерфейсных событиях (например о нажатии некоторой кнопки). Надо отметить, что оповещать он будет только о тех событиях, о которых его попросили. То есть если у некоторой кнопки не было зарегистрировано обработчика “clicked”, то браузер не будет дёргать лишний раз lookout на предмет этого бессмысленного события.
Протокол общения в некотором смысле «асинхронный». Чтобы каждая сторона не занималась написанием лишних парсеров в одну сторону идёт XML (ответы lookout), в другую — S-выражения (запросы браузера).
Примечание: в новой версии http-интерфейса для связи браузера и alterator используется протокол XML-RPC.
Несколько слов о HTTP-браузере. На данный момент это типичное AJAX-приложение для Web-браузера. При необходимости производятся «скрытые» (xmlHttpRequest) запросы через cgi-шлюз (а потом и через локальный сокет, как вы видели в примере выше) к lookout и в зависимости от ответов производятся те или иные модификации в интерфейсе. Для изображения на web-странице интерфейсов используется Javascript библиотека QuiX.