next up previous contents
Next: Получение информации о содержимом Up: Руководство разработчика Jazz. (1,0)250 Previous: Виджеты страниц (tabs)   Contents

Управление интерфейсом

После создания интерфейса нас прежде всего интересует возможность изменять уже созданные окна программно, в соответствии с текущим положением дел. Для этого используется система xml - пакетов, несколько отличных от пакетов для создания интерфейса.

Если посылка клиентскому приложению, которая создает интерфейс, должна начинаться с тэга <window>, то пакет обновлений должен начинаться с тэгов <updates>...</updates>, внутри которых должны находится тэги обновлений элементов интерфейса.

Для указания конкретного виджета, по отношению к которому происходит обновление, используются имена. Никакой привязки к конкретному окну не имеется. Таким образом у разработчика системы имеется возможность изменять значения виджетов в нескольких окнах клиентского приложения, однако это накладывает ограничения на именования виджетов - например, если в двух существующих окнах имеется виджеты с одинаковыми именами, то изменения произойдут только в одном из них.

Внутри тэгов <updates>...</updates> можно влаживать тэги вида <set>...</set>. Данными тэгами можно описать необходимые действия над всеми виджетами.Между тэгами указывается новое значение данных виджета.
Параметры тэгов <set> таковы:

name - определяет имя виджета, по отношению к которому будет производится обновление;
id - определяет дополнительный параметр виджета, к которому будет производится обновление;
signal - определяет дополнительное действие для виджета. Например, при signal=1 если целевым виджетом является таблица, то она будет очищена, иначе в нее будут добавлены элементы.

Одна и та же вышеприведенная конструкция применяется для всех виджетов.

Для <edit> и <multiedit> с именем myName конструкция <set name='myName'>newText</set> установит содержимое виджета в значение newText

Для <combo> с именем myName конструкция <set name='myName' signal='1'></set> очистит список элементов виджета, а конструкция <set name='myName'>newvalue</set> установит текущим элементом виджета элемент с содержимым newValue, а если его нет, то добавит его в конец списка и сделат текущим.

Для <table> и <tree> с именем myName указание signal='1' также, как и в случае <combo> очистит таблицу, а при указанном id='nn' установит новое значение ячейки в текущей строке в номере колонки nn в значение, указанное между тэгами <set>. Если параметры signal и id не указаны, то конструкция добавит новую ячейку в таблицу. Если данная конструкция применяется по отношению к <tree>, то для id=0 изменяется содержимое надписи текущей ветки,а для id=1 изменяется значение "ключа" ветки.

Для <label> с именем myName между тэгами <set> указывается новое содержание надписи.

Для <radio> с именем myName необходимо указывать параметр id='nn', определяющий идентификатор необходимой кнопки группы, а между тэгами указывается значение 1 или 0 для изменения состояния виджета в "установлен" или "сброшен" соответственно.

Операции над виджетами <check> аналогичны <radio> за исключением того, что параметр id игнорируется.

Изменение <progress> происходит таким же способом, между тэгами <set> указывается новое значение виджета.

Если тэг <set> применяется к виджету <window>, то при указанном параметре signal='1' действие приведет к закрытию окна и удалению из памяти клиентского приложения всех виджетов в данном окне. В случае, когда параметр signal не указан, никаких действий не происходит.



2004-12-28