Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/Alterator/module ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Это старая версия AltLinux/Sisyphus/Alterator/module за 2008-06-23 13:03:36..

Оглавление документа

Руководство по написанию модулей Alterator

Структура модуля

Название модуля

Все модули называются в стиле alterator-<имя>. Предпочтительно в качестве <имя> использовать название конкретного сервиса, а не решаемую задачу. Например, alterator-postfix лучше чем alterator-mail, потому что может существовать ещё модуль alterator-sendmail.

Расположение файлов и каталогов

Стандартный модуль alterator может содержать следующие каталоги (их может инициализировать скрипт из пакета alterator-sdk):


Каталоги с бакендами не имеют никакой вложенной иерархии: бакенд, адресуемый как /foo должен находиться в файле backend3/foo, если это внешний бакенд, и backend2/foo, если это нативный бакенд.


Файлы описания интерфейсов раскладываются следующим образом:


Документация пишется в формате html и раскладывается в подкаталоги, соответствующие названию локали. Справка, по теме “foo” для русского языка должна находиться в файле help/ru_RU/foo.html, а для украинского — в файле help/uk_UA/foo.html


Файлы стилей размещаются в директории design, ссылка в html-интерфейсе на файл стилей /design/my.css

Регистрация в центре управления


Центр управления – это прежде всего способ объединить разрозненные модули alterator.
Каждый модуль содержит некоторое описание, на основании которого вычисляется его имя и местоположение внутри
двухуровневого меню. Это описание имеет традиционный формат desktop-файла и располагается в каталоге applications.
Модули объединяются в группы (первый уровень меню), каждая группа имеет описание в виде directory-файла и располагается в каталоге desktop-directories. Группы связаны с модулями косвенно через так называемые категории.

Описание группы


В файле описания группы модулей используются следующие параметры:


Пример описания группы:

Описание модуля


В файле описания модуля используются следующие параметры:


Пример описания модуля:



Замечание про разные интерфейсы:
Система меню и справки едина и для GUI и HTML интерфейса, однако до сих пор ещё встречаются модули, которые работают только в одном типе интерфейса. Для того чтобы они не появлялись в меню того центра управления, где они не работают, существует параметр X-Alterator-UI, позволяющий ограничить доступные интерфейсы. Допустимые значения данного параметра “html” и “qt”. В будущем, при окончательном переходе с устаревшей системы с template-*, данный параметр потеряет смысл, поскольку оценку возможностей модуля можно будет производить автоматически.

Бакенд

Бакенд может быть написан на произвольном языке програмирования, при этом настоятельно рекомендуется использовать готовые библиотеки, предоставляющие API для взаимодействия с alterator. Все библиотеки построены по одному и тому же принципу – есть главный цикл взаимодействующий с alterator и есть функция-обработчик пришедших сообщений.
В функции обработчике:


Пример простейшего бакенда на shell:

В данном примере: message_loop — запуск цикла обработки событий, on_message — обработчик входящих сообщний. Входные переменные выглядят как переменные $in_<имя>. Выходные печатаются при помощи функций write_* . alterator_api_version – текущая версия API для взаимодействия с alterator. Если к к бакенду <name> обращались из интерфейса по адресу /<name>/foo/bar, то переменная $in__objects будет равна «foo/bar» (то есть «хвост» адреса), если обращались по адресу /<name>, то $in__objects будет равна «/».


Пример аналогичного бакенда на perl (см. также здесь):


Интерфейс

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

Формы


Названия полей формы не должны быть «оторваны» от самих полей.
Пример правильного описания для qt:

Обратите внимание на “0” для колонки с метками – это необходимо, чтобы колонка заняла в ширину ровно столько сколько необходимо для самой длинной метки.


Пример правильного описания для html:

CSS-класс “form-table” не будет корректно работать для старых браузеров (Internet Explorer 6.0), для них необходимо во всех td, содержащих метки использовать CSS-класс “form-table-label”.

Группировка элементов формы

Группировка при помощи пустых строк


Пример для html:


Пример для qt:


Группировка при помощи горизонтальной черты
Пример для html:


Пример для qt:


В этом способе группировки возможно задание названия группы. Название группы делается полужирным шрифтом и выравнено по левому краю формы.
Пример для html:


Пример для qt:

Элементы формы

сheckbox

Данный элемент предназначен для представления атрибута логического типа.
Метка к checkbox должна идти после галочки и начинаться с заглавной буквы.
Пример для qt:

Для получения/изменения значения пользуйтесь атрибутом value.


Пример для html:

Обратите внимание на написание тега в стиле xml, а не html.


Пример работы в бакенде на shell:

Функция write_bool_param принимает два параметра – имя и значение. В качестве значения допустимы любые варианты: y, yes, on, true (в любом регистре). Функция test_bool применяется для «считывания» значения параметра, независимым от представления в протоколе виде.

button

Данный элемент предназначен для представления активных действий с формой.

Пример для qt:

Пример для html:

Обратите внимание на использование класса btn и на написание тега в стиле xml, а не html.

combobox/listbox/select

В самом простом случае данные элементы представляют атрибут типа перечисление (enum), то есть обеспечивают выбор одного варианта
из числа возможных. Сombobox – более компактное представление чем Listbox, но одновременно выдно только один вариант, чтобы просмотреть остальные – надо вызвать выпадающий список.
Список вариантов предоставляет бакенд (вызываемый с action list). Параметр enumref – адрес к которому надо обращаться к бакенду за списком.


Пример для qt:

Текущий выбранный вариант – параметр value.


Пример для html:

Размер списка в строках – параметр size. Обратите внимание на написание тега в стиле xml, а не html.


Пример бакенда на shell:

Функция write_enum_item принимает два параметра:

Если функция вызвана без параметра, то она начинает со стандартного ввода строки с одним или более значениями, разделённых стандартным разделителем (переменная IFS). Первое и второе значение интерпретируются также: вариант и его название.

checklistbox

Также как и listbox представляет атрибут перечислимого типа, но уже с возможностью множественного выбора. Для заполнения списка используется тот же параметр enumref. Для «массового» выделения бакенд должен выводить список имён, в бакенд результат возвращается также в виде списка. Список представляется в виде строки с разделителем “;", например “a;b;c;d”.


Пример для qt:

Текущий набор выделенных элементов – параметр value.


Пример для html:

edit

Представляет атрибут строкового типа.


Пример для qt:

Для изменения и получения значения служит атрибут value.


Пример для html:


Пример бакенда на shell:

Функция write_string_param принимает два атрибута: имя и значение.

Локализация

Для переводов стоит пользоваться единой базой переводов alterator-l10n. Данный пакет содержит переводы для всех модулей альтераторов. Тем самым достигается единый стиль названий (например перевод “Apply” и “Reset”). Чтобы подключить модуль к единой базе необходимо выполнить следующие действия:

  1. подключить стандартный набор правил /usr/share/alterator/build/po.mak
  2. сказать make update-po и получить файл-заготовку
  3. связаться с мантейнером пакета alterator-l10n (inger@, cas@) и переслать свой .pot файл.
  4. Дождитесь когда ваш пакет будет включён в alterator-l10n
  5. Добавить пакет alterator-l10n в сборочные зависимости модуля (buildprereq)

После этого при каждой сборке пакета автоматически будут создаваться и размещаться в результирующем rpm-пакете) переводы для всех поддерживаемых языков. Если в вашем модуле уже были свои варианты переводов (файлы po/<language>.po), то их надо удалить.

Сборка модуля

Для всех модулей alterator, предоставлена стандартная сборочная система в виде стандартного набора правил make. Все их можно включать при помощи директивы include:


Для работы правил необходимо записать имя модуля (без префикса alterator) в переменную NAME, а также задать переменную INSTALL (как правило /usr/bin/install).


Вот как выглядит типичный makefile для модуля:


Страница, вызываемая из Действия, пока не существует.(/Alt Linux / Sisyphus / Alterator / module / debug?)


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