Многоликие интерфейсы
Lookout, интерфейсный модуль на шине Woobus,
работает с «виртуальными» виджетами. Когда в описании
интерфейса вы спрашиваете или меняете те или иные
аттрибуты у виджета, на самом деле вы работаете
с простым контейнером свойств. Для того чтобы сделанные
изменения отразились в реальных виджетах от alterator
требуется проделать некоторую дополнительную работу.
Реальные же виджеты предоставляет
браузер интерфейса. На данный момент поддерживаются да вида браузеров:
- Qt-browser – внешне выглядит как обычное GUI приложение
- HTTP-browser – рисует виджеты в окне любого WWW-браузера.
Браузер находится во главе шины 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.