Пользовательский интерфейс модуля

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

Пункты меню

Для любой команды можно задать внедряемый пункт меню. Это делается с помощью элемента menuitem:

<command id="command1" name="My Command 1">
    <menuitem>меню\подменю\подменю\пункт_меню</menuitem>
</command>
...

Начальная секция «меню» в тексте элемента должна быть одним из вариантов строк, зарезервированных для родительских меню:

Значение Меню, в которое внедряются элементы
<File> меню Файл
<Edit> меню Правка
<Layer> меню Слой
<Map> меню Карта
<View> меню Вид
<Raster> меню Растр
<Tasks> меню Задачи
<Window> меню Окно
<Help> меню Справка

В секции «пункт_меню» может быть использован знак «&», означающий, что следующий за ним символ должен быть обозначен как горячая клавиша. В пункте меню он будет выделен подчеркиванием.

Разделы меню

Кроме отдельных пунктов меню в системе предусмотрена возможность внедрения разделов меню, содержащих произвольное количество пунктов и подменю и загружаемых из ресурсов модуля. Для этого служит элемент menu:

<plugin id="myplugin" name="My Plugin">
    <menu id="имя_меню1" resource="идентификатор_ресурса">
...

Идентификатор_ресурса - строковое значение или значение DWORD, которое задает шаблон меню, которое будет загружено из ресурсов модуля. Из загруженного меню берется первое подменю, которое внедряется в качестве всплывающего в меню-родитель.

Меню_родитель - строковое значение, задающее пункт назначения, куда внедряется подменю. Возможные варианты такие же, как и для начальной секции меню в описании одиночного пункта меню menuitem.

В загружаемом меню идентификаторы команд меню могут принимать произвольные значения, которые выбирает разработчик модуля. Однако, для того, чтобы сопоставить командам меню соответствующие им команды модуля, в информацию о команде следует добавить атрибут commandid, в котором указывается идентификатор вызывающего эту команду пункта меню:

<command id="command1" name="My Command 1" commandid="100">
...

Когда ZuluGIS внедряет внешнее подменю, происходит трансляция исходных идентификаторов меню во внутренние, при этом если для пункта меню не находится команда модуля с таким же значением сommandid, то такой пункт делается недоступным и отображается серым шрифтом.

Кнопки инструментов

Для команд модуля можно задать пиктограммы кнопок, которые будут добавлены в панели инструментов ZuluGIS для быстрого вызова команды. За это отвечает элемент toolbarbutton, имеющий следующий формат:

<command id="command1" name="My Command 1">
    <toolbarbutton bitmapresource="идентификатор_ресурса" belongsto="имя_панели_родителя"/>
...

Идентификатор_ресурса - целое значение, задающее идентификатор ресурса типа BITMAP или PNG, содержащего изображение пиктограммы. Для пиктограмм необходимы изображения 16 на 16 пикселов (для PNG) или 16 на 15 пикселов (для BITMAP).

При указании ресурса BitmapResource ZuluGIS загружает ресурс типа BITMAP для старых шестнадцатицветных пиктограмм. Кроме того, система ищет ресурс типа "PNG" с таким же идентификатором и, если есть, загружает его для полноцветных пиктограмм. Оба изображения должны быть одинаковой ширины, чтобы пиктораммы соответствовали друг другу.

Параметр belongsto указывает на то, в какую панель инструментов следует внедрить кнопку с данной пиктограммой. Если этот параметр не указан, кнопка внедряется в панель «Модули».

Возможные значения для belongsto указаны ниже в таблице:

Значение Панель, в которую внедряются элементы
<Standard> Стандартная
<Map> Карта
<Navigate> Навигация
<Edit> Редактор
<Format> Форматирование
<Style> Стиль
<Label> Бирки
<Operations> Операции
<Print> Печать
<Relief> Рельеф

Панели инструментов

Кроме отдельных кнопок инструментов, имеется возможность внедрить отдельные панели инструментов или группы кнопок инструментов. Задать это можно с помощью одного или нескольких элементов toolbar, имеющих следующий формат:

<plugin id="myplugin" name="My Plugin">
    <toolbar id="имя_панели" resource="идентификатор_ресурса" belongsto="панель_владелец"/>
...
имя_панели Имя панели, например Toolbar1
идентификатор_ресурса Идентификатор ресурсы типа TOOLBAR
панель_владелец Имя панели, куда следует встроить загружаемые кнопки

Параметр resource содержит целое значение, обозначающее идентификатор ресурса типа TOOLBAR, являющимся стандартным в среде разработки Microsoft Visual C++.

Как и в случае с bitmapresource, кроме стандартного ресурса типа TOOLBAR, система будет искать ресурс типа PNG с таким же идентификатором для загрузки полноцветных изображений пиктограмм для панели инструментов.

Если параметр belongsto не указан, то ZuluGIS создаст самостоятельную панель инструментов. Если указан параметр belongsto, то загружаемые кнопки будут встроены в указанную панель инструментов. Возможные значения belongsto такие же как и при задании одиночной кнопки инструментов.