[sisyphus] I: Пишем модули для alterator [services r/?]
Michael Shigorin
=?iso-8859-1?q?mike_=CE=C1_osdn=2Eorg=2Eua?=
Вт Апр 18 23:27:28 MSD 2006
update: при помощи lioka допетрил, как бы на свои две кнопочки
чего повесить -- примерно так:
; это заведомо неправильно, т.к. одинаковые списки... потом
(hbox
(document:id enabled (listbox rows (woo-list-names '/services)))
(document:id disabled (listbox rows (woo-list-names '/services))))
(hbox
(button "Disable"
(on-click (woo-write '/services 'command 'disable 'param (enabled text))))
(button "Enable"
(on-click (woo-write '/services 'command 'enable 'param (disabled text)))))
Соответственно разница относительно
(button "Write"
(on-click (woo-write '/services 'param (lb text))))
-- в том, что передаётся дополнительный параметр (чего ж меня
и плющило -- 'param есть синтаксис, библиотека или изменяемое?),
и этот 'command при помощи backend3.sh в шелл-бэкенде можно
забрать как $in_command:
write)
echo "param=$in_param" > ~/tmp/backend-out
echo "command=$in_command" >> ~/tmp/backend-out
Получаем в ~/tmp/backend-out что-нить вроде
param=cups
command=enable
Порой для простоты старта разработки достаточно не упростить,
а доходчиво объяснить на пальцах :)
On Tue, Apr 18, 2006 at 05:56:39PM +0400, Stanislav Ievlev wrote:
> > > > Как хотя бы примотать кнопки "enable"/"disable"
> > > Давай по порядку. 1. Расскажи какие кнопки и куда
> > "Для начала" -- две кнопки. У тебя в примерах фигурирует
> > одна кнопка с woo-write по одному адресу, а как эти сущности
> > размножаются (ведь нет woo-write2, под которую можно
> > подсунуть обработчик "write2" в backend3?) -- непонятно.
> Ну как кнопки размножаются я думаю понятно - повторением
> конструкции (button ...) А какие действия размножить хочется?
Enable и Disable. Любое из них сейчас сделать могу, чуточку
перекрасив Write, а вот два -- не пойму, что синтаксис или
библиотека, а что -- переменная.
> > Наверное, просто недочитал или недопонял прочитанное, но там
> > же рядом ссылка на "читать про сложнее" была бы в тему.
> > > 2. Что такое списки с <</>> ? И зачем они нужны?
> > Ну, "переносилки", как у тебя в Psi в настраивалке тулбаров:
> > on off
> > +---+ +---+
> > | a | | b |
> > | c | << | e |
> > | d | >> | |
> > | | | |
> > +---+ +---+
> Ну можно посмотреть как это сделано в standalone или alterator-xkb
> Есть операции для удаления и добавления элементов с список.
Даже так...
> Первая зовётся как (<имя listbox> remove <номер строки>)
Т.е. надо где-то держать массив, причём всегда и точно
соответствующий тому, что передано, и самому про нему искать?
(не особо страшно, но напрашивается на хотя бы remove text
в тех случаях, когда элементы гарантированно уникальны --
e.g. это пакеты или сервисы)
> Вторая (<имя listbox> append-row <текст или текст с картинкой>)
Спасибо.
--
---- WBR, Michael Shigorin <mike на altlinux.ru>
------ Linux.Kiev http://www.linux.kiev.ua/
----------- следующая часть -----------
(document:surround "/std/frame")
(label "Services")
(vbox(
(label "Enabled")
(document:id enabled (listbox rows (woo-list-names '/services)))))
(vbox(
(label "Disabled")
(document:id disabled (listbox rows (woo-list-names '/services)))))
(hbox
(button "Disable"
(on-click (woo-write '/services 'command 'disable 'param (enabled text))))
(button "Enable"
(on-click (woo-write '/services 'command 'enable 'param (disabled text)))))
(vbox (label "test"))
(groupbox "group" (layout-policy 100 100)
(vbox
(groupbox "group1" (layout-policy -1 50 left))
(groupbox "group2" (layout-policy -1 20))
(groupbox "group3" (layout-policy -1 30 right))))
(frame:buttons-view
(button "Quit" (on-click (document:end))))
----------- следующая часть -----------
#!/bin/sh
CHKCONFIG=/sbin/chkconfig
INITDIR=/etc/rc.d/init.d
. /usr/share/alterator/build/backend3.sh
on_message()
{
case "$in_action" in
list)
shift; service="$1"
[ "$service" != "/" ] || service="*"
echo '( '
#find -L "$INITDIR" -mindepth 1 -maxdepth 1 -type f -perm +0111 -name "$service" -printf '("%f") ' | sort -r
find -L "$INITDIR" -mindepth 1 -maxdepth 1 -type f -perm +0111 ! -name '*.rpm*' ! -name '*~' -printf '("%f") ' | sort -r
echo ')'
;;
write)
echo "param=$in_param" > ~/tmp/backend-out
echo "command=$in_command" >> ~/tmp/backend-out
echo "()"
;;
esac
}
message_loop
Подробная информация о списке рассылки Sisyphus