Alterator/module/effects
Материал из ALT Linux Wiki
[править] Визуальные эффекты
Все описания интерфейсов — статические. Для улучшения восприятия пользователем интерфейса можно добавить немного динамики, например, скрытие или «засеривание» неиспользуемых полей формы. Описание эффектов выглядит как последовательность правил. Виджеты в правилах адресуются по значению атрибута name. Допустимо указывать одно и тоже имя и для самого поля и для его метки. Синтаксис правил зависит от синтаксиса используемого языка сценариев (scheme, javascript), но различия минимальны. Большинство правил построено на анализе значений полей, при этом для qt для заполнения полей необходимо использовать атрибут value.
В поставке с alterator идёт несколько самых распространённых эффектов.
[править] API эффектов
| html: | effectDisable(<виджет>, <другой виджет>, <значение другого виджета>); |
|---|---|
| qt: | (effect-disable <виджет> <другой виджет> <значение другого виджета>) |
Виджет будет неактивным каждый раз когда выполнены соответствующие условия.
Параметры:
- <виджет> — имя виджета, к которому применяется эффект. Имена задаются при помощи атрибута «name», допустимо атрибут «name» назначить как само поле, так и на метку к нему.
- <другой виджет> <значение другого виджета> — эффект сработает если значение <другого виджета> совпадёт с указанным значением. Например, (effect-disable "a" "b" "c"), означает, что виджет с именем «a» станет неактивным, если значение поля «b» равно «c».
| html: | effectShow(<виджет>, <другой виджет>, <значение другого виджета>); |
|---|---|
| qt: | (effect-show <виджет> <другой виджет> <значение другого виджета>) |
Виджет будет появляться каждый раз когда выполнены соответствующие условия. Параметры такие же как и у effectDisable.
| html: | initEffect(); |
|---|---|
| qt: | (init-effect) |
Запуск подсистемы визуализации эффектов.
Данную функцию необходимо вызывать только один раз. В html вызов данной функции происходит автоматически. В qt необходимо поместить вызов этой функции после того как заданы правила и завершено первоначальное заполнение полей формы.
| html: | updateEffect(); |
|---|---|
| qt: | (update-effect) |
Обновление состояния полей и меток.
При изменении значений полей эффект корректируется автоматически. Но если одна та же форма используется для представления параметров однотипных объектов, может потребоваться явное обновление состояния визуального представления. В html при использовании стандартных workflow (/design/script/select.js, /design/scripts/card-index.js) все необходимые вызовы происходят автоматически.
У функции effectDisable существует «двойственная функция» — effectEnable, а у effectShow — effectHide.
[править] Пример описания эффекта
В html описание помещается внутри тега script, в заголовке документа:
<head> ... <script> effectDisable("a1", "b", "value1"); effectDisable("a1", "b" ,"value2"); </script> </head> ... <label name="a1">Some label</label> <input type="text" class="text" name="a1"/> ...
В qt описание помещается в конце документа перед вызовом функций, делающих первоначальное заполнение полей:
... (label text "Some label" name "a1") (edit name "a2") (button text "OK" (when clicked (fill-form) (update-effect)) ... (effect-disable "a1" "b" "value1") (effect-disable "a2" "b" "value2") ... (fill-form) (init-effect)
