====== Ключ "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"
]
}
}
}