Вход:  Пароль:  
FreeSource: Мусорка/AltLinux?/Sisyphus?/Alterator?/drivers ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия Мусорка/AltLinux/Sisyphus/Alterator/drivers за 2005-10-26 15:53:10..

Интерфейсные драйверы в alterator


На данный момент в alterator поддерживаются интерфейсы Qt и Http. Как же удаётся lookout одновременно работать со столь различными по подходу вариантами? Всё дело в волшебных пузырьках – то есть в драйверах.

Интерфейс драйвера


Каждый драйвер интерфейса предоставляет как минимум следующую информацию:


Вот небольшой фрагмент описания готового драйвера для http-интферфейса:

Драйвер Qt


Драйвер Qt устроен относительно просто (суммарный объём исходного текста драйвера – чуть больше 120K).
Создание, удаление интерфейса соответствует в точности созданию и удалению QApplication. Описание виджетов практически напрямую отображаются соответствующие объекты Qt: QPushButton, QLabel, и так далее. Корневой виджет – фактически vbox, а Popup – QDialog. Запуск интерфейса состоит в получении описания виджета с идентификатором «/», заключению его в popup и запуске диалога. По завершению работы с основным диалогом работа с интерфейсом заканчивается.


Большая часть драйвера описана на C++, остальное – на Scheme. Мостик между этими языками настолько крошечный что при переходе на другую реализацию схемы менять придётся не много. Связующие функции делатся на две группы:

В части C++ построена иерархия объектов, наследников базового типа qt_widget. Каждый наследник является маленькой оболочкой вокруг того или иного виджета qt и в его задачу входит: разбирать входящие запросы на изменение/получение аттрибутов. Перехватывать события qt и передавать их вызов в соответствующий callback на уровне Scheme. Часть слотов реализована так что их вызов происходит отложенным ибо может происходить изменение объекта «из-под самого себя», чего не могут пережить часть виджетов Qt. Также во избежание проблем с зацикливанием вызов callback'a Scheme происходит только в случае поступления события от пользователя, а не в случае попутного вызова в результате операций set.


В части Scheme построена небольшая иерархия объектов?. Иерархия потребовалась для введения уточнений и более удобной работы с listbox и popup.


Предпочитаемые языки определяются согласно переменным среды, то есть фактически точно также как действовал бы обычный gettext.

Драйвер Http


Более сложный драйвер. Состоит из трёх отдельных частей:
* сервер – обеспечивает хранение состояний пользовательских сессий, аутентификацию и обработку callback'ов.
* fcgi-скрипт – мостик между сервером и web-браузером. Принимает Http-запросы, считывает и выставляет cookies.
* javascript – работает на клиентском браузере, здесь собственно заканчивается alterator и начинается движок интерфейса – *qooxdoo*.
Можно смотреть как на мостик между Javascript и Scheme.


 
Файлов нет. [Показать файлы/форму]
Один комментарий. [Показать комментарии/форму]