====== Ключ "ribbon" ====== Секция **"ribbon"** - описание структуры динамических лент интерфейса. Процесс создания ленточного интерфейса состоит из следующих действий: - Создание вкладок внутри ключа модели проекта **rbproj** - Создание подгрупп элементов интерфейса на вкладках - Добавление элементов интерфейса в подгруппы ===== Создание вкладок ===== Объекты вкладок добавляются в массив **items** ключа модели проекта **rbproj**. \\ Каждая вкладка состоит из следующих параметров: ^ Параметр ^ Описание ^ | "group" | Строковый идентификатор вкладки | | "title" | Заголовок вкладки отображаемый на экране | | "flags" | (необязательный) Флаги отображения. Допускаемые значения: «0» - показывать, «1» - скрыть.\\ По умолчанию установлено значение "1" | Для более подробного рассмотрения функционала ленточного интерфейса, в приведённых ниже примерах присутствуют секции **action** и **variables**. \\ Подробнее о ключе **"action"** читайте в разделе справочника **[[developers:references:core.plugin:actions|Ключ "action"]]** \\ Подробнее о ключе **"variables"** читайте в разделе справочника **[[developers:references:core.plugin:variables|Ключ "variables"]]** Добавим две новые вкладки. Вкладка **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" | Строковый идентификатор **[[developers:references:core.plugin:actions|action'a]]** | | "size" | Размер кнопки. Допускаемые значения:\\ "large" - большая\\ "middle" - маленькая с подписью\\ "small" - маленькая | | "items" | (необязательный) Массив вложенных элементов. Если массив не пустой, то кнопка работает как раскрывающийся список элементов. В то же время кнопка запоминает последний выбранный элемент. В массив допускается вкладывать строковые идентификаторы **[[developers:references:core.plugin:actions|action'ов]]**. | ^ Раскрывающийся список элементов ^^ | "title" | Заголовок списка отображаемый на экране | | "icon" | Имя файла пиктограммы без расширения | | "size" | Размер списка. Допускаемые значения:\\ "large" - большая\\ "middle" - маленькая с подписью\\ "small" - маленькая | | "items" | Массив вложенных элементов. В массив допускается вкладывать строковые идентификаторы **[[developers:references:core.plugin:actions|action'ов]]**. | ^ [[developers:references:core.plugin:actions|Action]] в качестве кнопки ^^ | Для использования **[[developers:references:core.plugin:actions|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-файлы читаются по алфавитному порядку. От порядка чтения будет зависеть расположение вкладок относительно друг друга. Ниже приведён пример **plugin-файла**, который сформирует следующий вид пользовательской ленты: {{ :developers:tutorial:ribbon:tut_custom_ribbon.png?nolink |}} { "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" ] } } }