Alterator/New/Packages: различия между версиями
Qwest (обсуждение | вклад) |
(→Box) |
||
(не показаны 22 промежуточные версии 1 участника) | |||
Строка 209: | Строка 209: | ||
== Packages Internals == | == Packages Internals == | ||
{| class="wide sortable collapsible collapsed" style="text-align:center" | |||
{| class=" | |||
|- | |- | ||
!Package||[[Файл:Root.svg]]||[[Файл:Box.svg]]||[[Файл:Vbox.svg]]||[[Файл:Hbox.svg]]||[[Файл:Button.svg]]||[[Файл:Linkbutton.svg]]||[[Файл:Radio.svg]]||[[Файл:Label.svg]]||[[Файл:Edit_alterator.svg]]||[[Файл:Textbox.svg]]||[[Файл:Groupbox.svg]]||[[Файл:Gridbox.svg]]||[[Файл:Checkbox.svg]]||[[Файл:Checktree.svg]]||[[Файл:Tree.svg]]||[[Файл:Combobox.svg]]||[[Файл:Tabbox.svg]]||[[Файл:Progressbar.svg]]||[[Файл:Slider.svg]]||[[Файл:Separator.svg]]||[[Файл:Spacer.svg]]||[[Файл:Spinbox.svg]]||[[Файл:Dateedit.svg]]||[[Файл:Timeedit.svg]]||[[Файл:Listbox.svg]]|| [[Файл:RadioListBox.svg]]||[[Файл:Multilistbox.svg]]||[[Файл:Checklistbox.svg]]||[[Файл:Slideshow.svg]]||[[Файл:Splitbox.svg]]||[[Файл:Wizardface.svg]]||[[Файл:Centerface.svg]]||[[Файл:Colorselect.svg]]||[[Файл:Fileselect.svg]]||[[Файл:Undefined.svg]] | |||
| | |||
|- | |- | ||
|alternatives || || || || ||<span style="display:none">1</span>{{Есть}}|| || ||<span style="display:none">1</span>{{Есть}}|| || || ||<span style="display:none">1</span>{{Есть}}||<span style="display:none">1</span>{{Есть}}|| || || || || || ||<span style="display:none">1</span>{{Есть}}||<span style="display:none">1</span>{{Есть}}|| || || ||<span style="display:none">1</span>{{Есть}}|| || || || || || || || || || | |alternatives || || || || ||<span style="display:none">1</span>{{Есть}}|| || ||<span style="display:none">1</span>{{Есть}}|| || || ||<span style="display:none">1</span>{{Есть}}||<span style="display:none">1</span>{{Есть}}|| || || || || || ||<span style="display:none">1</span>{{Есть}}||<span style="display:none">1</span>{{Есть}}|| || || ||<span style="display:none">1</span>{{Есть}}|| || || || || || || || || || | ||
Строка 434: | Строка 410: | ||
|} | |} | ||
== Таблица виджетов == | |||
{| class="wikitable" style="text-align: center" | |||
!Widget!!X11!!Qt!!ncurses!!Описание | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#Box|box]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|orientation|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||box | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#Button|button]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|pixmap|| | |||
|- | |||
|text|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||button | |||
|- | |||
|centerface ||{{Есть}}||{{Нет}}||in_test||centerface | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#CheckBox|checkbox]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|state|| | |||
|- | |||
|text|| | |||
|- | |||
|value|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||checkbox | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#CheckListBox|checklistbox]] | |||
|- | |||
!Attributes||||Events | |||
|- | |||
|append-row||||changed | |||
|- | |||
|columns||||clicked | |||
|- | |||
|count||||double-clicked | |||
|- | |||
|current||||selected | |||
|- | |||
|enumref||||return-pressed | |||
|- | |||
|header|| | |||
|- | |||
|remove|| | |||
|- | |||
|row-item|| | |||
|- | |||
|rows|| | |||
|- | |||
|text|| | |||
|- | |||
|value|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||checklistbox | |||
|- | |||
|checktree ||{{Есть}}||{{Нет}}||in_test||checktree | |||
|- | |||
|colorselect ||{{Есть}}||{{Нет}}||in_test||colorselect | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#ComboBox|combobox]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|alterability|| | |||
|- | |||
|append-row|| | |||
|- | |||
|count|| | |||
|- | |||
|current|| | |||
|- | |||
|enumref|| | |||
|- | |||
|remove|| | |||
|- | |||
|row-item|| | |||
|- | |||
|rows|| | |||
|- | |||
|text|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||combobox | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#DateEdit|dateedit]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|expanded|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||dateedit | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#Edit|edit]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|alterability|| | |||
|- | |||
|echo|| | |||
|- | |||
|value|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||edit | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#FileSelect|fileselect]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|filter|| | |||
|- | |||
|hints|| | |||
|- | |||
|title|| | |||
|- | |||
|url|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||fileselect | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#GridBox|gridbox]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|columns|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||gridbox | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#GroupBox|groupbox]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|checked|| | |||
|- | |||
|orientation|| | |||
|- | |||
|state|| | |||
|- | |||
|title|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||groupbox | |||
|- | |||
|[[#Box|hbox]] ||{{Есть}}||{{Нет}}||in_test||hbox | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#Label|label]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|text|| | |||
|- | |||
|text-wrap|| | |||
|- | |||
|value|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||label | |||
|- | |||
|linkbutton ||{{Есть}}||{{Нет}}||in_test||linkbutton | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#ListBox|listbox]] | |||
|- | |||
!Attributes||||Events | |||
|- | |||
|append-row||||changed | |||
|- | |||
|columns||||clicked | |||
|- | |||
|count||||double-clicked | |||
|- | |||
|current||||selected | |||
|- | |||
|enumref||||return-pressed | |||
|- | |||
|header|| | |||
|- | |||
|remove|| | |||
|- | |||
|row-item|| | |||
|- | |||
|rows|| | |||
|- | |||
|text|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test|| | |||
|- | |||
|multilistbox ||{{Есть}}||{{Нет}}||in_test||multilistbox | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#ProgressBar|progressbar]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|maximum|| | |||
|- | |||
|minimum|| | |||
|- | |||
|text|| | |||
|- | |||
|value|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||progressbar | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#Radio|radio]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|state|| | |||
|- | |||
|text|| | |||
|- | |||
|value|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||radio | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#RadioListBox|radiolistbox]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|current|| | |||
|- | |||
|rows|| | |||
|} | |||
|{{Есть}}||{{Нет}}||in_test||radiolistbox | |||
|- | |||
|root ||{{Есть}}||{{Нет}}||in_test||root | |||
|- | |||
|separator ||{{Есть}}||{{Нет}}||in_test||separator | |||
|- | |||
|slider ||{{Есть}}||{{Нет}}||in_test||slider | |||
|- | |||
|slideshow ||{{Есть}}||{{Нет}}||in_test||slideshow | |||
|- | |||
|spacer ||{{Есть}}||{{Нет}}||in_test||spacer | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
!spinbox | |||
|- | |||
!Attributes||Events | |||
|- | |||
|maximum|| | |||
|- | |||
|minimum|| | |||
|- | |||
|step|| | |||
|- | |||
|value|| | |||
|} | |||
|{{Есть}}||{{Нет}}||in_test||spinbox | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
!splitbox | |||
|- | |||
!Attributes||Events | |||
|- | |||
|columns|| | |||
|} | |||
|{{Есть}}||{{Нет}}||in_test||splitbox | |||
|- | |||
|tabbox ||{{Есть}}||{{Нет}}||in_test||tabbox | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#TextBox|textbox]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|alterability|| | |||
|- | |||
|append-text|| | |||
|- | |||
|text|| | |||
|- | |||
|url|| | |||
|} | |||
|{{Есть}}||{{Нет}}||in_test||textbox | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
![[#TimeEdit|timeedit]] | |||
|- | |||
!Attributes||Events | |||
|- | |||
|expanded|| | |||
|- | |||
|start|| | |||
|- | |||
|stop|| | |||
|- | |||
|value|| | |||
|} | |||
|{{Есть}}||{{Есть}}||in_test||timeedit | |||
|- valign="top" | |||
| | |||
{| class="wide collapsible collapsed" | |||
!tree | |||
|- | |||
!Attributes||Events | |||
|- | |||
|columns|| | |||
|- | |||
|current|| | |||
|- | |||
|expanded|| | |||
|- | |||
|header|| | |||
|- | |||
|tree-items|| | |||
|- | |||
|tree-text|| | |||
|} | |||
|{{Есть}}||{{Нет}}||in_test||tree | |||
|- | |||
|undefined ||{{Есть}}||{{Нет}}||in_test||undefined | |||
|- | |||
|[[#Box|vbox]] ||{{Есть}}||{{Есть}}||in_test||vbox | |||
|- | |||
|wizardface ||{{Есть}}||{{Нет}}||in_test||wizardface | |||
|} | |||
=== Таблица общих атрибутов для всех виджетов === | |||
{| class="wikitable" style="text-align: left" | |||
!Attribute!!Значения!!Описание | |||
|- | |||
|align ||align="middle"|"left" "right" "middle" "hmiddle" "center" "top" "bottom"|| выравнивание внутри ячейки «сетки» | |||
|- | |||
|activity ||align="middle"|#t #f|| активирует/отключает виджет | |||
|- | |||
|visibility ||align="middle"|#t #f|| видимость/невидимость виджета | |||
|- | |||
|colspan ||align="middle"|<число>|| количество столбцов "сетки" под данный виджет | |||
|- | |||
|rowspan ||align="middle"|<число>|| количество строк "сетки" под данный виджет | |||
|- | |||
|tooltip ||align="middle"|<текст>|| справочная информация, выводимая во всплывающей подсказке | |||
|- | |||
|focus ||align="middle"|#t #f|| атрибут только для записи, помещает фокус на виджет для которого указано значение #t | |||
|- | |||
|width ||align="middle"|<число>|| ширина виджета | |||
|- | |||
|height ||align="middle"|<число>|| высота виджета | |||
|- | |||
|title ||align="middle"|<текст>|| заголовок родительского контейнера | |||
|- | |||
|name ||align="middle"|<текст>|| имя виджета | |||
|- | |||
|nameref ||align="middle"|<текст>|| аналог name (?) | |||
|- | |||
|margin ||align="middle"|<число>|| ширина "рамки" вокруг контейнера | |||
|- | |||
|spacing ||align="middle"|<число>|| промежуток между виджетами (применим только к контейнерам) | |||
|} | |||
=== Описание виджетов и их атрибутов === | |||
==== Корневой виджет ==== | |||
Именно в этот виджет вставляются все остальные. Имеет следующие атрибуты: | |||
* '''title''' — заголовок окна | |||
* '''width''' — ширина окна | |||
* '''height''' — высота окна | |||
==== Box ==== | |||
Контейнер для других виджетов. | |||
* '''orientation''' «''horizontal''» — это развернутый вариант виджета '''hbox'''; | |||
* '''orientation''' «''vertical''» — развернутый вариант виджета '''vbox''' (по умолчанию). | |||
==== Button ==== | |||
Кнопка с текстом и картинкой. | |||
<u>Атрибуты:</u> | |||
* '''text''' — текст на кнопке; | |||
* '''pixmap''' — картинка из списка. | |||
<u>События:</u> | |||
* '''clicked''' — вызывается при нажатии кнопки. | |||
==== CheckBox ==== | |||
Кнопка-флажок с двумя состояниями ''true'' или ''false''. | |||
* '''text''' — описание кнопки; | |||
* '''state''' — состояние флажка. Если значение ''#t'', то флажок выставлен. При значении ''#f'' флажок отсутствует; | |||
* '''value''' — то же, что и '''state'''. | |||
==== DateEdit ==== | |||
Виджет отображения даты, календаря. | |||
* '''expanded''' — со значением ''#t'' дополнительно отображает календарь; | |||
* '''value''' — атрибут для задания даты (строка формата ГГГГ-ММ-ДД). | |||
==== TimeEdit ==== | |||
Отображает время. | |||
* '''expanded''' — со значением ''#t'' добавляет графические часы; | |||
* '''stop''' — остановка счета времени; | |||
* '''start''' — запуск счета времени; | |||
* '''value''' — задание времени. | |||
==== Radio ==== | |||
Радиокнопка позволяет выбрать один пункт из набора, в пределах одного контейнера. | |||
* '''state''' — состояние пункта. Данный пункт выбран при значении ''#t''; | |||
* '''text''' — описание пункта; | |||
==== Edit ==== | |||
Однострочное текстовое поле ввода. | |||
* '''echo''' — режим отображения. Возможные варианты: ''normal'' (по умолчанию), ''stars'' (звёздочки, для паролей), ''no'' (ввод не отображается); | |||
* '''alterability''' — разрешение на изменение текста. Если значение ''#f'', содержимое поля доступно только для чтения; | |||
* '''text''' — содержимое поля; | |||
* '''value''' — то же, что и '''text'''. | |||
==== GridBox ==== | |||
Вертикальный контейнер «сетки». Основой способ организации виджетов на экране. | |||
* '''columns''' — ширина стобцов сетки в процентном соотношении от общей ширины. | |||
==== Label ==== | |||
Предназначен для отображения какой-либо надписи без возможности редактирования. | |||
* '''text-wrap''' — отображение одной длинной строки в виде многострочного текста (''#t''/''#f''); | |||
* '''text''' — отображаемый текст. | |||
==== GroupBox ==== | |||
Объединение группы виджетов в один контейнер. | |||
* '''checked''' — в случае значения #t рядом с заголовком отображается checkbox (если он не выделен, то содержимое группы неактивно и недоступно для работы); | |||
* '''orientation''' — ориентация контейнера (''horizontal''/''vertical''); | |||
* '''state''' — состояние checkbox в случае режима checked; | |||
* '''title''' — заголовок группы. | |||
==== ProgressBar ==== | |||
Строка прогресса некоторого процесса. | |||
* '''maximum''' — максимальное допустимое значение, соответствует 100 %; | |||
* '''minimum''' — минимальное допустимое значение, соответствует 0 %; | |||
* '''text''' — информация в строке прогресса; | |||
* '''value''' — текущее значение прогресса. | |||
==== SpinBox ==== | |||
Поле со счетчиком для ввода чисел. | |||
* '''maximum''' — максимальное допустимое значение; | |||
* '''minimum''' — минимальное допустимое значение; | |||
* '''step''' — шаг приращения значения; | |||
* '''value''' — текущее значение. | |||
==== TextBox ==== | |||
Многострочное текстовое поле ввода. | |||
* '''alterability''' — разрешение на изменение текста. Если значение ''#f'', содержимое поля доступно только для чтения; | |||
* '''text''' — содержимое поля; | |||
* '''append-text''' — добавить текст в конец поля; | |||
* '''url''' — показать содержимое указанного файла. | |||
==== FileSelect ==== | |||
Выбор файла из файловой системы, для дальнейшей работы с ним. | |||
* '''filter''' — допустимые расширения файлов; | |||
* '''hints''' — условие выбора файла (обычно используется значение ''existing_file'' для проверки на существование выбранного файла); | |||
* '''title''' — заголовок; | |||
* '''url''' — путь поиска файлов. | |||
<u>Пример:</u> | |||
<pre style="width:30em"> | |||
(document:surround "/std/frame") | |||
(define fileselect (make-widget 'fileselect)) | |||
(define url (make-attribute 'url)) | |||
(define filter (make-attribute 'filter)) | |||
(define hints (make-attribute 'hints)) | |||
(gridbox columns "100" | |||
margin "100" | |||
(vbox | |||
(label text "Simple import certificate") | |||
(fileselect title (_"Import CA certificate") | |||
url "/" | |||
filter "*.cert *.crt *.pem" | |||
hints "existing_file"))) | |||
</pre> | |||
==== SplitBox ==== | |||
Контейнер с изменяемой шириной колонок. | |||
* '''columns''' — изначальная ширина колонок. | |||
==== ListBox ==== | |||
Прокручиваемый список, с возможностью создания нескольких столбцов. | |||
<u>Атрибуты</u> | |||
* '''columns''' — количество колонок в списке; | |||
* '''header''' — заголовок таблицы, вектор из строк с названиями колонок; | |||
* '''enumref''' — адрес списка данных; | |||
* '''rows''' — возвращает список значений в виде единой строки; | |||
* '''rows-clear''' — очищает список; | |||
* '''append-row''' — добавление в конец списка новой строки; | |||
* '''row-item''' — работа с отдельным полем в списке. Координаты задаются списком из двух значений '(строка столбец) или указанием порядкового номера строки; | |||
* '''row-remove''' — удаляет строку с указанным порядковым номером; | |||
* '''text''' — возвращает строку с содержимым первого поля активной строки; | |||
* '''current''' — номер выделенной строки. Если ничего не выделено, то значение равно −1; | |||
* '''count''' — возвращает количество строк в таблице. | |||
<u>События</u> | |||
Желательно использовать только одно событие. | |||
* '''clicked''' — одинарный щелчок правой кнопки мышки по элементу списка; | |||
* '''double-clicked''' — двойной щелчок правой кнопки мышки по элементу списка; | |||
* '''selected''' — изменение активной строки; | |||
* '''return-pressed''' — нажатиe ''Enter'' на активной строке списка; | |||
* '''changed''' — любое действие с виджетом (не рекомендуется использовать). | |||
{| style="align:left;" | |||
| | |||
{{Навигационная таблица | |||
|state = collapsed | |||
|заголовок = Пример 1 | |||
|стиль_четных = background:#f0f0f0 | |||
|заголовок1 = Описание | |||
|список1 = | |||
В данном примере событие ''return-pressed'' срабатывает при ''double-clicked''. Исправляется использованием ''clicked'' вместо ''double-clicked''. | |||
|заголовок2 = index.scm | |||
|список2 = | |||
<pre style="width:70em"> | |||
(document:surround "/std/frame") | |||
(define (ui-list) | |||
(let ((list_one_fn (woo-call "/simple_list/list_one"))) | |||
(form-update-enum "name_one" list_one_fn) | |||
(or (null? list_one_fn) | |||
(let ((name (woo-get-option (car list_one_fn) 'name))) | |||
(form-update-value "name_one" name) )))) | |||
(document:root | |||
(when loaded (ui-list))) | |||
(gridbox columns 100 | |||
margin 100 | |||
align "center" | |||
(label align "center" text "Simple label") | |||
(document:id list_one (listbox columns 3 | |||
focus #t | |||
name "name_one" | |||
enumref "/simple_list/list_one" | |||
row '#((column0 . "") (column2 . "") (column3 . "")) | |||
header (vector "column 0" "column 2" "column 3") | |||
(when selected | |||
(testlist value (list_one current)) | |||
(testlist2 value (list_one text)) | |||
(testlist3 value (list_one rows)) | |||
(testlist4 value (list_one row-item (list (list_one current) 2) ))) | |||
(when double-clicked | |||
(list_one row-remove (list_one current))) | |||
(when return-pressed | |||
(list_one append-row '#("new-row" "test" "123"))) )) | |||
(gridbox columns "0;100" | |||
align "left" | |||
width 200 | |||
(label colspan 2) | |||
(label align "left" text "current") | |||
(document:id testlist (edit name "testlist" value (list_one current))) | |||
(label value "text") | |||
(document:id testlist2 (edit name "testlist2")) | |||
(label text "count") | |||
(document:id testlist3 (edit name "testlist3")) | |||
(label value "row-item") | |||
(document:id testlist4 (edit name "testlist4")) ) ) | |||
</pre> | |||
|заголовок3 = backend/simple_list | |||
|список3 = | |||
<pre style="width:70em"> | |||
#!/bin/sh | |||
alterator_api_version=1 | |||
. alterator-sh-functions | |||
list_one() | |||
{ | |||
for i in 0 1 2 3 4 | |||
do | |||
write_table_item column0 "row-$i" \ | |||
column1 "$i" \ | |||
column2 "$(($i+$i))" \ | |||
column3 "$(($i+12))" | |||
done | |||
} | |||
alterator_export_proc list_one | |||
message_loop | |||
</pre> | |||
|заголовок4 = simple_list.desktop | |||
|список4 = | |||
<pre style="width:70em"> | |||
[Desktop Entry] | |||
X-Alterator-URI=/simple_list | |||
</pre> | |||
}} | |||
| | |||
|} | |||
<br/> | |||
==== ComboBox ==== | |||
Выпадающий список. Поддерживает все события и атрибуты виджета [[#ListBox|''listbox'']] в '''одноколоночном''' режиме, а также: | |||
<u>Атрибуты</u> | |||
* '''alterability''' - значение #t переключает строку в редактируемый режим. | |||
<br/> | |||
==== RadioListBox ==== | |||
Список с возможностью выбора одного значения, где каждый элемент является радио-кнопкой. | |||
Атрибуты и события заимствованы из виджета [[#ListBox|''listbox'']]. Некоторые проблемы возникают с атрибутом ''enumref'' при формировании списка из ''backend''. | |||
==== CheckListBox ==== | |||
Прокручиваемый список с возможностью множественного выбора. Является объединением двух виджетов: [[#ListBox|''listbox'']] и [[#CheckBox|''checkbox'']]. Таким образом, поддерживает атрибуты и события обоих виджетов. | |||
==== Tree ==== | |||
Древообразный список элементов. |
Текущая версия от 14:24, 23 сентября 2013
Текущее состояние модулей альтератора
Packages Internals
Таблица виджетов
Widget | X11 | Qt | ncurses | Описание | |||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
![]() |
![]() |
in_test | box | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | button | |||||||||||||||||||||||||||||||
centerface | ![]() |
![]() |
in_test | centerface | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | checkbox | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | checklistbox | |||||||||||||||||||||||||||||||
checktree | ![]() |
![]() |
in_test | checktree | |||||||||||||||||||||||||||||||
colorselect | ![]() |
![]() |
in_test | colorselect | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | combobox | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | dateedit | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | edit | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | fileselect | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | gridbox | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | groupbox | |||||||||||||||||||||||||||||||
hbox | ![]() |
![]() |
in_test | hbox | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | label | |||||||||||||||||||||||||||||||
linkbutton | ![]() |
![]() |
in_test | linkbutton | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | ||||||||||||||||||||||||||||||||
multilistbox | ![]() |
![]() |
in_test | multilistbox | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | progressbar | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | radio | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | radiolistbox | |||||||||||||||||||||||||||||||
root | ![]() |
![]() |
in_test | root | |||||||||||||||||||||||||||||||
separator | ![]() |
![]() |
in_test | separator | |||||||||||||||||||||||||||||||
slider | ![]() |
![]() |
in_test | slider | |||||||||||||||||||||||||||||||
slideshow | ![]() |
![]() |
in_test | slideshow | |||||||||||||||||||||||||||||||
spacer | ![]() |
![]() |
in_test | spacer | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | spinbox | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | splitbox | |||||||||||||||||||||||||||||||
tabbox | ![]() |
![]() |
in_test | tabbox | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | textbox | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | timeedit | |||||||||||||||||||||||||||||||
|
![]() |
![]() |
in_test | tree | |||||||||||||||||||||||||||||||
undefined | ![]() |
![]() |
in_test | undefined | |||||||||||||||||||||||||||||||
vbox | ![]() |
![]() |
in_test | vbox | |||||||||||||||||||||||||||||||
wizardface | ![]() |
![]() |
in_test | wizardface |
Таблица общих атрибутов для всех виджетов
Attribute | Значения | Описание |
---|---|---|
align | "left" "right" "middle" "hmiddle" "center" "top" "bottom" | выравнивание внутри ячейки «сетки» |
activity | #t #f | активирует/отключает виджет |
visibility | #t #f | видимость/невидимость виджета |
colspan | <число> | количество столбцов "сетки" под данный виджет |
rowspan | <число> | количество строк "сетки" под данный виджет |
tooltip | <текст> | справочная информация, выводимая во всплывающей подсказке |
focus | #t #f | атрибут только для записи, помещает фокус на виджет для которого указано значение #t |
width | <число> | ширина виджета |
height | <число> | высота виджета |
title | <текст> | заголовок родительского контейнера |
name | <текст> | имя виджета |
nameref | <текст> | аналог name (?) |
margin | <число> | ширина "рамки" вокруг контейнера |
spacing | <число> | промежуток между виджетами (применим только к контейнерам) |
Описание виджетов и их атрибутов
Корневой виджет
Именно в этот виджет вставляются все остальные. Имеет следующие атрибуты:
- title — заголовок окна
- width — ширина окна
- height — высота окна
Box
Контейнер для других виджетов.
- orientation «horizontal» — это развернутый вариант виджета hbox;
- orientation «vertical» — развернутый вариант виджета vbox (по умолчанию).
Button
Кнопка с текстом и картинкой.
Атрибуты:
- text — текст на кнопке;
- pixmap — картинка из списка.
События:
- clicked — вызывается при нажатии кнопки.
CheckBox
Кнопка-флажок с двумя состояниями true или false.
- text — описание кнопки;
- state — состояние флажка. Если значение #t, то флажок выставлен. При значении #f флажок отсутствует;
- value — то же, что и state.
DateEdit
Виджет отображения даты, календаря.
- expanded — со значением #t дополнительно отображает календарь;
- value — атрибут для задания даты (строка формата ГГГГ-ММ-ДД).
TimeEdit
Отображает время.
- expanded — со значением #t добавляет графические часы;
- stop — остановка счета времени;
- start — запуск счета времени;
- value — задание времени.
Radio
Радиокнопка позволяет выбрать один пункт из набора, в пределах одного контейнера.
- state — состояние пункта. Данный пункт выбран при значении #t;
- text — описание пункта;
Edit
Однострочное текстовое поле ввода.
- echo — режим отображения. Возможные варианты: normal (по умолчанию), stars (звёздочки, для паролей), no (ввод не отображается);
- alterability — разрешение на изменение текста. Если значение #f, содержимое поля доступно только для чтения;
- text — содержимое поля;
- value — то же, что и text.
GridBox
Вертикальный контейнер «сетки». Основой способ организации виджетов на экране.
- columns — ширина стобцов сетки в процентном соотношении от общей ширины.
Label
Предназначен для отображения какой-либо надписи без возможности редактирования.
- text-wrap — отображение одной длинной строки в виде многострочного текста (#t/#f);
- text — отображаемый текст.
GroupBox
Объединение группы виджетов в один контейнер.
- checked — в случае значения #t рядом с заголовком отображается checkbox (если он не выделен, то содержимое группы неактивно и недоступно для работы);
- orientation — ориентация контейнера (horizontal/vertical);
- state — состояние checkbox в случае режима checked;
- title — заголовок группы.
ProgressBar
Строка прогресса некоторого процесса.
- maximum — максимальное допустимое значение, соответствует 100 %;
- minimum — минимальное допустимое значение, соответствует 0 %;
- text — информация в строке прогресса;
- value — текущее значение прогресса.
SpinBox
Поле со счетчиком для ввода чисел.
- maximum — максимальное допустимое значение;
- minimum — минимальное допустимое значение;
- step — шаг приращения значения;
- value — текущее значение.
TextBox
Многострочное текстовое поле ввода.
- alterability — разрешение на изменение текста. Если значение #f, содержимое поля доступно только для чтения;
- text — содержимое поля;
- append-text — добавить текст в конец поля;
- url — показать содержимое указанного файла.
FileSelect
Выбор файла из файловой системы, для дальнейшей работы с ним.
- filter — допустимые расширения файлов;
- hints — условие выбора файла (обычно используется значение existing_file для проверки на существование выбранного файла);
- title — заголовок;
- url — путь поиска файлов.
Пример:
(document:surround "/std/frame") (define fileselect (make-widget 'fileselect)) (define url (make-attribute 'url)) (define filter (make-attribute 'filter)) (define hints (make-attribute 'hints)) (gridbox columns "100" margin "100" (vbox (label text "Simple import certificate") (fileselect title (_"Import CA certificate") url "/" filter "*.cert *.crt *.pem" hints "existing_file")))
SplitBox
Контейнер с изменяемой шириной колонок.
- columns — изначальная ширина колонок.
ListBox
Прокручиваемый список, с возможностью создания нескольких столбцов.
Атрибуты
- columns — количество колонок в списке;
- header — заголовок таблицы, вектор из строк с названиями колонок;
- enumref — адрес списка данных;
- rows — возвращает список значений в виде единой строки;
- rows-clear — очищает список;
- append-row — добавление в конец списка новой строки;
- row-item — работа с отдельным полем в списке. Координаты задаются списком из двух значений '(строка столбец) или указанием порядкового номера строки;
- row-remove — удаляет строку с указанным порядковым номером;
- text — возвращает строку с содержимым первого поля активной строки;
- current — номер выделенной строки. Если ничего не выделено, то значение равно −1;
- count — возвращает количество строк в таблице.
События Желательно использовать только одно событие.
- clicked — одинарный щелчок правой кнопки мышки по элементу списка;
- double-clicked — двойной щелчок правой кнопки мышки по элементу списка;
- selected — изменение активной строки;
- return-pressed — нажатиe Enter на активной строке списка;
- changed — любое действие с виджетом (не рекомендуется использовать).
|
ComboBox
Выпадающий список. Поддерживает все события и атрибуты виджета listbox в одноколоночном режиме, а также:
Атрибуты
- alterability - значение #t переключает строку в редактируемый режим.
RadioListBox
Список с возможностью выбора одного значения, где каждый элемент является радио-кнопкой. Атрибуты и события заимствованы из виджета listbox. Некоторые проблемы возникают с атрибутом enumref при формировании списка из backend.
CheckListBox
Прокручиваемый список с возможностью множественного выбора. Является объединением двух виджетов: listbox и checkbox. Таким образом, поддерживает атрибуты и события обоих виджетов.
Tree
Древообразный список элементов.