Alterator/Widgets: различия между версиями
Строка 57: | Строка 57: | ||
==== таблица виджетов ==== | ==== таблица виджетов ==== | ||
Простые контейнеры: | |||
{| class="tiles" | {| class="tiles" | ||
|- | |||
|groupbox | |||
|title | |||
state | |||
|toggled | |||
| рамка с заголовком | |||
|- | |- | ||
|gridbox | |||
| columns | |||
| | |||
| "сетка" для виджетов | |||
|- | |- | ||
| | |splitbox | ||
| | |columns | ||
| | |||
|вертикальные колонки с переменным размером ('''неочевидное поведение, если число виджетов больше числа колонок!''') | |||
|- | |- | ||
|box | |box | ||
| | |||
| | |||
| | |||
|- | |- | ||
|vbox | |vbox | ||
| | |||
| | |||
| | |||
|- | |- | ||
|hbox | |hbox | ||
| | |||
| | |||
| | |||
|} | |||
Кнопки и простые поля ввода: | |||
{| class="tiles" | |||
|- | |- | ||
|button | |button | ||
Строка 82: | Строка 110: | ||
pixmap | pixmap | ||
|clicked | |clicked | ||
|кнопка с текстом (и картинкой) | |||
|- | |- | ||
Строка 88: | Строка 117: | ||
state | state | ||
|toggled | |toggled | ||
|Радиокнопка. Если в одном контейнере есть несколько радиокнопок, отметка одной гасит отметку остальных. | |||
|- | |- | ||
| | |checkbox | ||
|text | |text | ||
state | |||
|toggled | |||
| | |||
|- | |- | ||
Строка 102: | Строка 133: | ||
|changed | |changed | ||
return-pressed | return-pressed | ||
|однострочное текстовое поле ввода | |||
|- | |- | ||
Строка 110: | Строка 142: | ||
alterability | alterability | ||
|changed | |changed | ||
|многострочное текстовое поле ввода | |||
|} | |||
Простые виджеты оформления: | |||
{| class="tiles" | |||
| | |||
|- | |- | ||
| | |label | ||
| | |text | ||
text-wrap | |||
pixmap | |||
| | | | ||
| | |текст (и картинка) | ||
|} | |||
Списки объектов и другие сложные виджеты показа и ввода: | |||
{| class="tiles" | |||
|- | |- | ||
| | !widget || attributes || events | ||
| | |||
|- | |||
| | |root | ||
|width | |||
height | |||
has-help | |||
|- | |- | ||
Строка 234: | Строка 278: | ||
text | text | ||
step | step | ||
|- | |- |
Версия от 14:54, 1 августа 2008
В интерфейсе Lookout доступны следующие виджеты
Основные виджеты
атрибуты, общие для всех виджетов
visibility | Видимость/невидимость виджета (#t или #f). |
activity | Активность/неактивность виджета (#t или #f). |
tooltip | Справочная информация, выводимая в "пузыре" при наведении на данный виджет. Можно использовать html. Берется только часть строки до первого символа ";" (неочевидно и, возможно, надо исправить!) |
colspan | указание сколько колонок данный виджет займёт внутри "сетки" (целое число) |
rowspan | указание сколько строк данный виджет займёт внутри "сетки" (целое число) |
align | выравнивание (возможные значения: "left" "right" "middle" "hmiddle" "center" "top" "bottom",
можно задать несколько значений, разделяя их символов ';') |
focus | поместить фокус на виджет. Только для записи (#t или #f). |
widget-name | символическое имя виджета - устарел, не должен использоваться! |
title | заголовок родительского окна (забавно, что его можно выставить из любого виджета) |
max-height | ограничение высоты виджета снизу (целое число) |
min-height | атрибут не определен в lookout |
max-width | ограничение ширины виджета сверху (целое число) |
min-width | атрибут не определен в lookout |
height | фиксированная высота виджета (целое число) |
width | фиксированная ширина виджета (целое число) |
margin | ? |
spacing | ? |
clear-layout | атрибут не определен в lookout |
help | файл справки для главного окна (забавно, что его можно выставить из любого виджета) |
tab-order |
таблица виджетов
Простые контейнеры:
groupbox | title
state |
toggled | рамка с заголовком |
gridbox | columns | "сетка" для виджетов | |
splitbox | columns | вертикальные колонки с переменным размером (неочевидное поведение, если число виджетов больше числа колонок!) | |
box | |||
vbox | |||
hbox |
Кнопки и простые поля ввода:
button | text
pixmap |
clicked | кнопка с текстом (и картинкой) |
radio | text
state |
toggled | Радиокнопка. Если в одном контейнере есть несколько радиокнопок, отметка одной гасит отметку остальных. |
checkbox | text
state |
toggled | |
edit | text
echo alterability |
changed
return-pressed |
однострочное текстовое поле ввода |
textbox | url
text text-append alterability |
changed | многострочное текстовое поле ввода |
Простые виджеты оформления:
label | text
text-wrap pixmap |
текст (и картинка) |
Списки объектов и другие сложные виджеты показа и ввода:
widget | attributes | events |
---|---|---|
root | width
height has-help | |
tree | tree-items
coordinates current header expanded |
selected |
combobox | append-row
rows current current-text alterability rows-clear remove-row row-item-text row-item-pixmap |
selected |
tabbox | current | selected |
tab-page | ||
progressbar | value
minimum maximum text | |
slider | [horizontal])
minimum maximum step value |
changed |
separator | ||
spacer | ||
spinbox | minimum
maximum step value |
changed |
dateedit | text
expanded |
changed |
timeedit | text
start stop reset expanded |
changed |
listbox | append-row
rows current current-rows state-rows rows-clear remove-row row-item-text row-item-pixmap header |
selected
clicked return-pressed double-clicked |
radiolistbox | ||
multilistbox | ||
checklistbox | ||
slideshow
text step | ||
wizardface | title
actions action-add action-remove actions-clear action-activity action-text action-pixmap steps step-add step-remove step-clear step-text step-pixmap current-step | |
dialog(?) | actions
action-add action-remove action-clear action-default width height |
корневой виджет
Именно в этот виджет вставляются все остальные, виджет является или vbox или dialog. У диалога, помимо атрибутов vbox, имеются следующие:
- title -- заголовок окна
- width -- ширина окна
- height -- высота окна
gridbox
"Сетка", основной способ организации виджетов на экране.
Атрибуты:
- columns -- перечисление того сколько процентов от общей ширины виджета будет занимать каждая колонка.
Первым делом необходимо при помощи атрибута columns указать количество и размеры колонок. Виджеты распределяются по строкам автоматически, учитывая colspan и rowspan, отдельно указывать на начало новой строки нет необходимости.
Пример:
(gridbox columns "50;50" ; две колонки одинакового размера ;;первая строка (widget1) (widget2) ;;вторая строка, автоматически учитывается colspan (widget3 colspan 2) ;;третья строка (widget4) (widget5))
spacer
"Пустышка", применяется при заполнении пустых ячеек в таблице
separator
"Горизонтальная черта".
label
Метка, содержит или текст, или картинку. В зависимости от возможностей браузера могут выводиться или только один из этих двух вариантов, или оба одновременно.
Атрибуты:
- text -- текст
- pixmap -- картинка
- text-wrap -- переносить ли слишком длинные строки (#t/#f)
button
Кнопка, содержит текст и картинку. Некоторые браузеры могут всегда уменьшать размер изображения, чтобы общий вид кнопки не портился.
Aтрибуты:
- text -- текст
- pixmap -- картинка
События:
- clicked -- вызывается при нажатии кнопки.
radio
Радио-кнопка.
Атрибуты:
- text -- комментарий к кнопке
- state -- состояние (активна/неактивна)
События:
- toggled -- вызывается при изменении состояния кнопки.
checkbox
Кнопка с двумя состояниями.
Атрибуты:
- text -- комментарий к кнопке
- state -- состояние (выделен checkbox или нет, #t/#f).
События:
- toggled -- вызывается при изменении состояния кнопки.
edit
Однострочное текстовое поле.
Атрибуты:
- text -- содержимое
- echo -- режим отображения. Возможные варианты normal (по умолчанию), stars (звёздочки, для паролей), no (ввод не отображается).
- alterability -- возможности по изменению текста. Если значение #f, содержимое поля доступно только для чтения.
События:
- changed -- вызывается при изменении содержимого поля
- return-pressed -- вызывается при нажатии в поле клавиши Enter.
textbox
Многострочное текстовое поле. В Qt textbox способен отображать как plain text, так и html. При этом тип отображения определяется при первом задании атрибута text. Если первоначально был plain text, то при попытке записать в содержимое текст в формате html, последний будет отображаться как plain text.
Атрибуты:
- text -- содержимое
- append-text -- добавить указанную строку к содержимому.
- url -- показать содержимое указанного файла в textbox.
- alterability -- аналогично edit, если значение #f, то содержимое поля доступно только для чтения.
События:
- changed -- вызывается при изменении содержимого поля.
groupbox
Объединение группы виджетов.
Атрибуты:
- checked -- в случае значения #t рядом с заголовком отображается checkbox (если он не выделен, то содержимое группы неактивно и недоступно для работы).
- state -- состояние checkbox в случае режима checked.
- title -- заголовок группы
События:
- toggled -- вызывается в случае изменения состояния checkbox.
progressbar
Строка прогресса некоторого процесса.
Атрибуты:
- value -- текущее значение
- maximum -- максимальное значение
listbox
Многоколоночный список.
Атрибуты:
- columns -- количество колонок, по умолчанию 1.
- header -- заголовок таблицы, вектор из строк с названиями колонок. Если длина вектора меньше количества колонок -- оставшиеся колонки заполняются пробелами.
- rows -- список значений. Если список многоколоночный, то значения в одной строке объединяются внутри вектора, каждое поле -- строка или пара строка + картинка. Если в векторе-строке значений меньше, чем требуется, оставшиеся колонки заполняются пробелами.
- append-row -- добавить в конец списка новую строчку. Если список многоколоночный, то передаётся целый вектор значений, если нет, то достаточно передать просто строку или пару строка + картинка.
- remove -- удалить указанную строчку. Строчка указывается своим порядковым номером. В случае значения 'all - удаляются все строки.
- current -- номер выделенной строки. Если таковых не имеется, то значение равно -1.
- row-item -- работа с отдельным полем в списке. Координаты задаются списком из двух значений (строка колонка) или просто номером строки. Возвращает пару строка+картинка. При модификации поля указывается или просто строка или строка + картинка, если во втором случае одно из значений пары #f, то оно остаётся прежним.
- count -- возвращает количество строк в таблице.
- text -- возращает строку с содержимым первого поля активной строки.
События:
- selected -- вызывается при изменении активного элемента списка
- clicked -- вызывается при щелчке мышкой по элементу списка
- double-clicked -- вызывается при двойном щелчке по элементу списка.
combobox
Выпадающий список.
Атрибуты: Все атрибуты listbox в одноколоночном режиме, а также:
- alterability -- значение #t переключает в редактируемый режим.
События:
- selected -- вызывается при изменении активного элемента
tree
Древообразный список элементов. Возможна многоколоночность в определённых браузерах.
Атрибуты:
- columns -- количество колонок, по умолчанию 1.
- tree-items -- элементы дерева, организованные в виде вложенных списков. Элементы на одной строке объединяются вектором, каждое поле или строка или строка+картинка. Поддерево вставляется под элемент следующий перед списком.
- current -- путь к активному элементу списка.
- tree-text -- список из строк первых колонок для каждого элемента пути к активному элементу.
События:
- selected -- вызывается в случае изменения активного элемента в дереве.
Стандартные диалоги
Для оповещения пользователей alterator предоставляет набор стандартных диалогов, общий формат вызова следующий:
(popup-имя сообщение кнопка1 кнопка2 ...)
первый параметр - сообщение, далее следует перечисление кнопок которые желаете видеть в диалоге. Кнопки задаются символами и могут быть одними из следующих: ok, open, save, cancel, close, discard, apply, reset, restore-defaults, help, save-all, yes, yes-to-all, no, no-to-all, abort, retry, ignore (также имеется специальное имя no-button - означает отсутствие кнопки). Результат исполнения диалога - символ, соответствующий нажатой кнопке. Доступны следующие виды диалогов:
- document:popup-information
- document:popup-warning
- document:popup-critical
- document:popup-question
Порядок отображения кнопок не зависит от порядка перечисления, однако первая из перечисленных кнопок считается кнопкой выделенной по умолчанию
Примеры:
(document:popup-critical "Большая проблема" 'ok)
(if (eq? 'yes (document:popup-question "Согласны?" 'no 'yes')) ; по умолчанию "нет". <действие при согласии> <дейтсвие при не согласии>)
Выше перечисленные функции на самом деле являются обёртками вокруг более общей - document:messagebox. Формат вызова:
(document:messagebox параметр1 значение1 параметр2 значение2 ...)
Возможные параметры:
- title - заголовок окна
- type - тип окна, один из вариантов: information, question , warning, critical
- message - сообщение
- buttons - список кнопок
- default-button - кнопка по-умолчанию.
Пример:
(document:messagebox 'type "information" 'title "Информация" 'message "Информационное сообщение" 'buttons '(ok help) 'default-button 'ok)
Примеры
См. тж. file:///usr/share/alterator/ui/samples/ и местами -- описания в file:///usr/share/alterator/ui/std/. TODO: примеры кода к индивидуальным виджетам