Секция «ribbon» - описание структуры динамических лент интерфейса.
Процесс создания ленточного интерфейса состоит из следующих действий:
Объекты вкладок добавляются в массив items ключа модели проекта rbproj.
Каждая вкладка состоит из следующих параметров:
Параметр | Описание |
---|---|
«group» | Строковый идентификатор вкладки |
«title» | Заголовок вкладки отображаемый на экране |
«flags» | (необязательный) Флаги отображения. Допускаемые значения: «0» - показывать, «1» - скрыть. По умолчанию установлено значение «1» |
Добавим две новые вкладки. Вкладка my_custom_tab_rail будет отображаться на экране только тогда, когда активной будет модель железной дороги. Для этого в параметр flags передадим значение переменной rail, определяющей тип текущей модели на соответствие типу модели железной дороги.
Вкладка my_custom_tab_common будет отображаться на экране всегда.
... "rbproj": { "items": [ // Вкладка отображаемая только тогда, когда активна модель железной дороги { "group": "my_custom_tab_rail", "title": "Моя вкладка для ЖД", "flags": "$(rail)" }, // Вкладка отображаемая всегда { "group": "my_custom_tab_common", "title": "Моя вкладка общая" } ] } ...
Объекты подгрупп вкладываются в массив items ключа вкладки. Ключом вкладки является комбинация ключа модели проекта rbproj и идентификатора вкладки.
Каждая подгруппа состоит из следующих параметров:
Параметр | Описание |
---|---|
«group» | Строковый идентификатор подгруппы |
«title» | Заголовок подгруппы отображаемый на экране |
Добавим две подгруппы на вкладку rbproj.my_custom_tab_common
... "rbproj.my_custom_tab_common": { "items":[ { "group": "my_custom_subgroup_1", "title": "Моя подгруппа 1" }, { "group": "my_custom_subgroup_2", "title": "Моя подгруппа 2" } ] } ...
Объекты элементов интерфейса вкладываются в массив items ключа подгруппы. Ключом подгруппы является комбинация ключа модели проекта rbproj, идентификатора вкладки и идентификатора подгруппы.
В качестве элементов интерфейса могут использоваться объекты со следующими параметрами:
Кнопка | |
---|---|
«button» | Строковый идентификатор action'a |
«size» | Размер кнопки. Допускаемые значения: «large» - большая «middle» - маленькая с подписью «small» - маленькая |
«items» | (необязательный) Массив вложенных элементов. Если массив не пустой, то кнопка работает как раскрывающийся список элементов. В то же время кнопка запоминает последний выбранный элемент. В массив допускается вкладывать строковые идентификаторы action'ов. |
Раскрывающийся список элементов | |
«title» | Заголовок списка отображаемый на экране |
«icon» | Имя файла пиктограммы без расширения |
«size» | Размер списка. Допускаемые значения: «large» - большая «middle» - маленькая с подписью «small» - маленькая |
«items» | Массив вложенных элементов. В массив допускается вкладывать строковые идентификаторы action'ов. |
Action в качестве кнопки | |
Для использования action'а, достаточно в качестве объекта указать его строковый идентификатор |
Добавим различные элементы интерфейса в подгруппы rbproj.my_custom_tab_common.my_custom_subgroup_1 и rbproj.my_custom_tab_common.my_custom_subgroup_2.
... "rbproj.my_custom_tab_common.my_custom_subgroup_1":{ "items":[ // Раскрывающийся список элементов { "title": "Мои сгруппированые элементы", "icon": "my_icon0", "size": "large", "items": [ "my_action_id_1", "my_action_id_2" ] } ] }, "rbproj.my_custom_tab_common.my_custom_subgroup_2":{ "items":[ // Кнопка с вложенными элементами { "button": "my_action_id_3", "size": "large", "items": [ "my_action_id_4" ] }, // Обычная кнопка маленькая кнопка с текстовым описанием { "button": "my_action_id_5", "size": "middle" }, // Идентификатор action'а, который превратится в кнопку "my_action_id_5" ] } ...
Plugin-файлы читаются по алфавитному порядку. От порядка чтения будет зависеть расположение вкладок относительно друг друга. Ниже приведён пример plugin-файла, который сформирует следующий вид пользовательской ленты:
{ "actions":{ "my_action_id_1": { "cmd": "my_command_1", "title": "Пользовательская команда 1", "description": "Вызов пользовательской комманды 1", "icon": "my_icon1" }, "my_action_id_2": { "cmd": "my_command_2", "title": "Пользовательская команда 2", "description": "Вызов пользовательской комманды 2", "icon": "my_icon2" }, "my_action_id_3": { "cmd": "my_command_3", "title": "Пользовательская команда 3", "description": "Вызов пользовательской комманды 3", "icon": "my_icon3" }, "my_action_id_4": { "cmd": "my_command_4", "title": "Пользовательская команда 4", "description": "Вызов пользовательской комманды 4", "icon": "my_icon4" }, "my_action_id_5": { "cmd": "my_command_5", "title": "Пользовательская команда 5", "description": "Вызов пользовательской комманды 5", "icon": "my_icon5" } }, "variables": { "readonly_alg_flag": "$(if,$(viewer),1,$(if,$(hasactivelayer,{C39120BC-F870-41bd-8711-79AD50BE3799},0,plan),0,1))", // Проверка типа текущей активной модели на соответствие типу модели железной дороги "rail": "$(if,$(configuration,rail),$(if,$(readonly_alg_flag),1,$(if,$(strncasecmp,$(get_active_model_type),rail),0,1)),1)" }, "ribbon": { "rbproj": { "items": [ // Вкладка отображаемая только тогда, когда активна модель железной дороги { "group": "my_custom_tab_rail", "title": "Моя вкладка для ЖД", "flags": "$(rail)" }, // Вкладка отображаемая всегда { "group": "my_custom_tab_common", "title": "Моя вкладка общая" } ] }, "rbproj.my_custom_tab_common": { "items":[ { "group": "my_custom_subgroup_1", "title": "Моя подгруппа 1" }, { "group": "my_custom_subgroup_2", "title": "Моя подгруппа 2" } ] }, "rbproj.my_custom_tab_common.my_custom_subgroup_1":{ "items":[ // Раскрывающийся список элементов { "title": "Мои сгруппированые элементы", "icon": "my_icon0", "size": "large", "items": [ "my_action_id_1", "my_action_id_2" ] } ] }, "rbproj.my_custom_tab_common.my_custom_subgroup_2":{ "items":[ // Кнопка с вложенными элементами { "button": "my_action_id_3", "size": "large", "items": [ "my_action_id_4" ] }, // Обычная кнопка маленькая кнопка с текстовым описанием { "button": "my_action_id_5", "size": "middle" }, // Идентификатор action'а, который превратится в кнопку "my_action_id_5" ] } } }