Alterator/module/first: различия между версиями

Материал из ALT Linux Wiki
Строка 61: Строка 61:
$ /usr/sbin/alterator-standalone -l
$ /usr/sbin/alterator-standalone -l
</pre>
</pre>
В результате на экране появится окно [[Image:Alterator-simple1.png|frame|left|первый графический интерфейс]] с надписью Simple module.
В результате на экране появится окно [[Image:Alterator-simple1.png|thumb|left|первый графический интерфейс]] с надписью 'Simple module'.


Теперь необходимо наладить взаимодействие с бакендом. Для этого необходимо создать два обработчика событий и воспользоваться функциями:
Теперь необходимо наладить взаимодействие с бакендом. Для этого необходимо создать два обработчика событий и воспользоваться функциями:
* woo-read-first &mdash; прочитать данные из бакенда
* '''woo-read-first''' &mdash; прочитать данные из бакенда
* woo-get-option &mdash; получить значение параметра из ответа бакенда
* '''woo-get-option''' &mdash; получить значение параметра из ответа бакенда
* woo-write &mdash; записать данные в бакенд
* '''woo-write''' &mdash; записать данные в бакенд

Версия от 14:35, 31 июля 2008

Первый модуль

Лучше один раз увидеть, чем сто раз услышать, поэтому давайте сразу попробуем создать простейший модуль alterator. Сделаем проект alterator-simple — модуль который будет изменять значение одной переменной по имени parameter.

Бакенд

Сначала установим пакет alterator, создадим каталог с проектом и скопируем туда стандартный Makefile.

$ sudo apt-get install alterator
$ mkdir alterator-simple
$ cd alterator-simple
$ cp /usr/share/alterator/build/Makefile .

В скопированном Makefile изменим значение переменной NAME на "simple" и тут же воспользуемся стандартным правилом alterator для создания заготовки бакенда на shell:

$ make generate-backend-sh

В результате появится файл backend3/simple. Посмотрим на него внимательнее. Основной цикл работы бакенда — функция message_loop. Функция on_message — главная точка обработки входящих сообщений. Входящие параметры появляются в виде переменных shell с именем вида $in_name. Главный параметр action — определяет вид действия, который запрашивается у бакенда. Основные действия:

  • read — прочитать значение переменной
  • write — изменить значение переменной
  • list — получить список значений

Остановимся более подробно на первых двух действиях. Научим бакенд при запросе "read" считывать значение переменной parameter из файла, а при запросе "write" записывать значение переменной parameter обратно в файл.

case "$in_action" in
    read)
        write_string_param parameter "$(cat /tmp/config 2>/dev/null)"
        ;;
    write)
        [ -n "$in_parameter" ] && echo "$in_parameter" >/tmp/config
        ;;
...

Сразу же проверим бакенд, поработав с ним через интерфейс командной строки — alterator-cmdline.

$ alterator-cmdline -l /simple action read
parameter:
$ alterator-cmdline -l /simple action write parameter value
$ alterator-cmdline -l /simple action read
parameter:value

Можно также заглянуть в файл /tmp/config и убедиться, что он содержит строку 'value'.

Графический интерфейс

Интерфейс командой строки хорошо, но графический — ещё лучше. Установим необходимые дополнительные пакеты и опять воспользуемся стандартными правилами, предоставляемыми alterator для создания простейшего описания интерфейса, а также специального файла, содержащего описание модуля. Последний потребуется для приложения, визуализирующего интерфейс.

$ apt-get install alterator-standalone
$ make generate-desktop-file
$ make generate-ui-qt

В результате появится файл applications/simple.desktop — никакое дополнительное редактирование для него не потребуется, и файл ui/simple/index.scm — в готором мы сохраним следующее описание интерфейса:

(document:surround "/std/frame")

(label text "Simple module")

Как видно описание делается на языке, похожем на scheme и пока содержит текст (команда label) со словами 'Simple module'. Запустим интерфейс. Для этого воспользуемся утилитой alterator-standalone. В качестве параметра эта утилита принимает имя файла описания модуля (без суффикса desktop), в нашем случае это просто 'simple'.

$ /usr/sbin/alterator-standalone -l

В результате на экране появится окно

первый графический интерфейс

с надписью 'Simple module'.

Теперь необходимо наладить взаимодействие с бакендом. Для этого необходимо создать два обработчика событий и воспользоваться функциями:

  • woo-read-first — прочитать данные из бакенда
  • woo-get-option — получить значение параметра из ответа бакенда
  • woo-write — записать данные в бакенд