Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/Alterator/start ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

Низкий старт

или как сделать свой первый модуль для Alterator за пять минут

1. Подготавливаем почву


Прежде всего надо поставить в систему следующие пакеты:


Создадим также каталог, в котором будем проводить все дальнейшие эксперименты; пусть он называется alterator-hello.

2. Сборочная среда


Alterator поставляется с большим количеством готовых функций для создания файлов описаний проектов на базе makefile.
Вот как будет выглядеть минимальный Makefile для нашего модуля:


Мы включили специальные функции для поддержки работы с файлами переводов (po.mak), файлами описания интерфейса (ui2.mak), а также файлами бакендов (backend.mak)

3. Первый интерфейс


Для создания первого интерфейса необходимо создать подкаталог ui и в нём разместить файл hello.scm содержащий описание интерфейса:

Как можно догадаться по описанию, после запуска Alterator мы увидим окно с текстовой меткой “Hello world” и кнопкой “Quit”, при нажатии на которой произойдёт завершение работы с программой. Первое слово document:surround можете считать обязательной конструкцией или почитать другую документацию за разъяснениями её назначения.


Итак, на данный момент дерево модуля выглядит следующим образом:


Первым делом создадим некоторые дополнительные структуры, требуемые для корректной идентификации нашего компонента внутри центра управления.


Для этого, находясь в каталоге alterator-hello, дадим команду make.


В результате будет создан профиль для alterator-standalone с именем hello, файл меню, для запуска профиля и ещё несколько вспомогательных карт.



Теперь запустим центр управления командой /usr/sbin/alterator-standalone -l hello. Обратите внимание на полное указание пути к /usr/sbin и параметр -l. Первое требуется чтобы запустить центр управления напрямую а не через утилиту console-helper, второе — включает режим функционирования alterator, в котором начинают рассматриваться локальные файлы, а не те, что находятся в основных системных каталогах.


//NB: описание запуска при помощи alterator-standalone -l <имя> для альтератора из 4.0 соответствует реализации до версии 2.5 включительно.


В версиях 2.6/3.0 <имя> игнорируется, поскольку предполагается навигация из меню, которое строится из файлов applications/*.desktop установленных в системе модулей — для отладки надо подкладывать такой .desktop в /usr/share/alterator/applications/ (от имени root).


Исправлено в alterator-standalone-4.0-alt3, .//


Первый вариант интерфейса для центра управления готов.


4. Улучшаем интерфейс


Вы, наверное, заметили, что как-то неудобно размещается кнопка “Quit”. На самом деле в распоряжении модуля находится вся нижняя панель сбоку от кнопки “<<", каждый модуль может менять её по своему разумению. Давайте переместим туда кнопку “Quit”.

Все элементы интерфейса, размещённые внутри frame:buttons-view, автоматически попадут на нижнюю панель кнопок. Запускаем alterator-standalone и смотрим результат:



Работаем дальше. Английский язык хорошо, но родной гораздо лучше. Для перевода (i18n) интерфейса Alterator использует стандартные mo-файлы GNU gettext.
Первым делом добавим магическую строчку после document:surround (подробности в отдельной документации):

После этого все строчки, которые хотим перевести окружаем конструкцией (_ xxx ), где xxx — требуемая к переводу строка. Усовершенствованное описание интерфейса теперь выглядит следующим образом:

С помощью make update-po создадим файл-шаблон — po/alterator-hello.pot, скопируем его в po/ru.po и переведём нужные строчки. Следующей командой make build-po скомпилируем mo-файл po/ru.mo. Результат можно видеть на следующем рисунке:


5. Создаём простейший backend


Alterator предоставляет несколько вариантов backend (кода, который непосредственно выполняет работу); здесь будет продемонстрирован только один из них. Создадим подкаталог backend3 и файл backend3/hello следующего содержания:

Первым делом подключаем вспомогательную библиотеку, которая делает написание backend делом очень простым. Данный бакенд в случае входящего запроса типа “list” выдаст в качестве ответа список из двух объектов “first” и “second”. А в случае запроса типа “write” запишет значение переданного в этом запросе параметра param (это не ключевое или предопределённое слово, а просто выбранное нами имя переменной!) в файл ~/tmp/backend-out.


Перед дальнейшей работой убедитесь, что файл backend3/hello помечен как исполняемый.


Теперь остаётся привязать интерфейс к backend. Внутри интерфейса backend будет иметь имя '/hello (то есть имя совпадает с именем файла бакенда).
Список имён объектов будем получать командой (woo-list-names '/hello)), а записывать параметр param с помощью команды (woo-write '/hello 'param “tram-param”).


Вот обновлённый файл описания интерфейса:

Помимо уже известных элементов появляется listbox, строки которого заполнены списком имён, полученным из backend, а также кнопка, которая произведёт обращение к backend при щелчке на ней.



После запуска интерфейса и нажатия на копку “Write” можете убедиться, что содержимым файла ~/tmp/backend-out будет param=tram-param.


Q: а если хочется, скажем, имя выделенного пункта туда записать, а не трам-парам?


A: (со слов inger) необходимо немного модифицировать hello.scm, чтобы код принял вид:


Q: а если две кнопки надо?
A: (со слов lioka) делаем сколько надо button и в их clicked передаём 'param и (или) 'action; backend3.sh позаботится, чтобы значение можно было получить в обработчике как $in_param и $in_action. Соответственно меняем имена по вкусу и надобности.

6. Запаковываем и повязываем бантиком


Дело за малым, запаковать всё это великолепие в rpm-пакет и показать всем, как быстро вы смогли сделать модуль для Alterator.


Первым делом очищаем содержимое, и запаковываем всё в архив


Создаём примерно такой вот spec-файл...



Запаковываем, собираем, устанавливаем, запускаем через alterator-standalone hello, или даже через config-hello получаем удовольствие ;)


Game is over... show must go on ;)


Страницы, ссылающиеся на данную: AltLinux/Sisyphus/Alterator


PS: следующий модуль можно «зарыбить» при помощи alterator-sdk ;-)


 
Файлов нет. [Показать файлы/форму]
Комментарии [Скрыть комментарии/форму]
> По умолчанию центр управления не находит никакого готового профиля
> и предлагает вам создать свой собственный.

Вот это, кстати, неудобно и IMHO нелогично. Мож просто собирать все модули в default? (если когда-то будет userlevel, то можно будет для разных уровней сделать разную подборку, возможно добавив в сами модули характеристику предполагаемого минимального уровня — те же novice/normal/expert)


(плюс к тому кажется, что назревает иерархия модулей — возможно, даже в рамках профилей, хотя с ними толком пока не игрался, чтобы понять... см. тж. freedesktop menu categories)

-- MichaelShigorin (2006-04-14 12:53:12)
> В результате появится каталог maps с файлом hello.map

Не появился — наблюдаю ui/hello.map

-- MichaelShigorin (2006-04-14 12:59:50)

Oops:


$ /usr/sbin/alterator-standalone -l
starting monitor...
ready...
ERROR: no such option: “l”
$ rpm -qf /usr/sbin/alterator-standalone
alterator-standalone-0.3-alt0.2

-- MichaelShigorin (2006-04-14 13:06:32)

я ж говорил в письмах в Сизиф что надо использовать самую последнюю версию ... она к сожалению ещё не дошла.

-- СтаниславИевлев (2006-04-14 13:08:59)

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

-- СтаниславИевлев (2006-04-14 13:11:06)

смысл такой, что если для доступа к системе настройки надо сперва настроить систему настройки — то у многих возникнет вопрос, а почему по умолчанию просто не вынести все доступные модули при отсутствии конфликтов, _а поверх_ этого уже иметь себе возможность накрутить как угодно.


такие вещи называются «разумными умолчаниями» — примерно как кнопки в лифте, вместо патч-панели и возможности переставить их как заблагорассудится, а потом нажать требуемую.


форкать acc ради такого смысла нет.

-- MichaelShigorin (2006-04-14 13:21:16)

да — а перелазить сто раз по менюшке, чтобы просто посмотреть, что «в этом альтлинуксе» конфигурируется — оставит предсказуемое впечатление: «не могли собрать, как в KDE». (сам вот при набегах на модули тоже удивлялся, но так понял, что это “under construction”, а не by design)

-- MichaelShigorin (2006-04-14 13:23:54)

спасибо за свежий alterator, {i586,src}.rpm выложил пока здесь.

-- MichaelShigorin (2006-04-14 17:34:08)

Надо бы обновить про when clicked и друзей...

-- MichaelShigorin (2006-09-25 20:48:49)

УЖОС !!!


Такой фрагментной системы как альтератор надо еще поискать! Намешаны технологии по принципу «потому что они это могут делать». А ктонибудь подумал о том как использовать эту мешанину подставочек и подпорочек в реальном проекте?


Кто-то еще надеется на то, что сообщество напишет кучу модулей для конфигурирования всего и вся на альтераторе?


Мда...

-- static-ip-85-25-148-242.inaddr.intergenia.de (2007-02-08 18:04:28)