Прежде всего надо поставить в систему следующие пакеты:
Создадим также каталог, в котором будем проводить все дальнейшие эксперименты; пусть он называется alterator-hello.
Alterator поставляется с большим количеством готовых функций для создания файлов описаний проектов на базе makefile.
Вот как будет выглядеть минимальный Makefile для нашего модуля:
Мы включили специальные функции для поддержки работы с файлами переводов (po.mak), файлами описания интерфейса (ui2.mak), а также файлами бакендов (backend.mak)
Для создания первого интерфейса необходимо создать подкаталог 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, .//
Первый вариант интерфейса для центра управления готов.
Вы, наверное, заметили, что как-то неудобно размещается кнопка “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. Результат можно видеть на следующем рисунке:
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. Соответственно меняем имена по вкусу и надобности.
Дело за малым, запаковать всё это великолепие в rpm-пакет и показать всем, как быстро вы смогли сделать модуль для Alterator.
Первым делом очищаем содержимое, и запаковываем всё в архив
Создаём примерно такой вот spec-файл...
Запаковываем, собираем, устанавливаем, запускаем через alterator-standalone hello, или даже через config-hello получаем удовольствие ;)
Game is over... show must go on ;)
PS: следующий модуль можно «зарыбить» при помощи alterator-sdk ;-)
Вот это, кстати, неудобно и IMHO нелогично. Мож просто собирать все модули в default? (если когда-то будет userlevel, то можно будет для разных уровней сделать разную подборку, возможно добавив в сами модули характеристику предполагаемого минимального уровня — те же novice/normal/expert)
(плюс к тому кажется, что назревает иерархия модулей — возможно, даже в рамках профилей, хотя с ними толком пока не игрался, чтобы понять... см. тж. freedesktop menu categories)
Не появился — наблюдаю ui/hello.map
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
я ж говорил в письмах в Сизиф что надо использовать самую последнюю версию ... она к сожалению ещё не дошла.
ничего не понял насчёт профилей. Профили профилями, модули модулями. Можно сделать другой центр управления, который будет выдавать на гора полный список модулей, но эта идея мне не нравится – для этого есть системное меню.
смысл такой, что если для доступа к системе настройки надо сперва настроить систему настройки — то у многих возникнет вопрос, а почему по умолчанию просто не вынести все доступные модули при отсутствии конфликтов, _а поверх_ этого уже иметь себе возможность накрутить как угодно.
такие вещи называются «разумными умолчаниями» — примерно как кнопки в лифте, вместо патч-панели и возможности переставить их как заблагорассудится, а потом нажать требуемую.
форкать acc ради такого смысла нет.
да — а перелазить сто раз по менюшке, чтобы просто посмотреть, что «в этом альтлинуксе» конфигурируется — оставит предсказуемое впечатление: «не могли собрать, как в KDE». (сам вот при набегах на модули тоже удивлялся, но так понял, что это “under construction”, а не by design)
спасибо за свежий alterator, {i586,src}.rpm выложил пока здесь.
УЖОС !!!
Такой фрагментной системы как альтератор надо еще поискать! Намешаны технологии по принципу «потому что они это могут делать». А ктонибудь подумал о том как использовать эту мешанину подставочек и подпорочек в реальном проекте?
Кто-то еще надеется на то, что сообщество напишет кучу модулей для конфигурирования всего и вся на альтераторе?
Мда...