====== Ключ "contexts" ======
Секция «contexts» - описание структуры контекстного меню объекта.
===== Создание контекстных меню =====
Объекты контекстных меню состоят из **ключа-идентификатора** и набора параметров:
^ Параметр ^ Описание ^
| "priority" | (необязательный) Целочисленное значение приоритета сортировки. Чем выше значение, тем дальше объект сдвигается в порядке очереди |
| "flags" | (необязательный) Флаги отображения. Допускаемые значения: «0» - показывать, «1» - скрыть.\\ По умолчанию установлено значение "1" |
| "items" | Массив вложенных элементов меню |
Для связывания контекстного меню с объектом, следует в качестве значения параметра **"menu"** у связываемого объекта, указать **ключ-идентификатор** меню
===== Элементы меню =====
Элементами меню могут быть объекты со следующими параметрами:
^ [[developers:references:core.plugin:actions|Action]] или [[developers:references:core.plugin.macros|Макрос]] ^^
| В качестве элемента указывается строковый идентификатор **[[developers:references:core.plugin:actions|action'а]]** или **[[developers:references:core.plugin.macros|макрос]]** ||
^ Элемент вызываемый по умолчанию при двойном клике мыши по объекту ^^
| "default" | Строковый идентификатор **[[developers:references:core.plugin:actions|action'а]]** или **[[developers:references:core.plugin.macros|макрос]]** |
^ Подменю ^^
| "id" | Строковый идентификатор подменю |
| "title" | Строка отображаемая на экране в родительском контекстном меню |
| "items" | Массив вложенных элементов |
^ Встраиваемое контекстное меню ^^
| "contextrefs" | Ключ-идентификатор контекстного меню (объекта секции "contexts") |
^ Разделитель ^^
| Разделитель обозначается знаком дефиса заключённого в кавычки **("-")** ||
===== Пример plugin-файла =====
Ниже приведён пример plugin-файла, в котором мы создадим контекстное меню **"my_custom_ctx"** и встроим его в уже существующее меню **"rbproj"**, с целью его расширения. Контекстное меню **"rbproj"** связано с корневым элементом структуры проекта. **Plugin-файл** сформирует следующий вид расширенного контекстного меню:
{{ :developers:tutorial:ctx:tut_custom_ctx.png?direct |}}
{
"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"
}
},
// Секция контекстных меню
"contexts" :{
// Идентификатор контекстного меню
"my_custom_ctx" :{
// Значение для сортировки
"priority": 1000,
// Отображения меню
"flags": "$(editor)",
// Вложенные элементы
"items":[
// Идентификатор action'а (объект секции "actions")
"my_action_id_1",
// Подменю
{
// Идентификатор подменю
"id": "my_sub_ctx",
// Строка отображаемая в родительском контекстном меню
"title": "Пользовательское подменю",
// Вложенные элементы
"items": [
// Элемент вызываемый при двойном клике мыши по объекту
{ "default" : "my_action_id_2" },
// Разделитель
"-",
// Макрос
"$(if,$(editor),my_action_id_3,my_action_id_4)"
]
}
]
},
// Существующее контекстное меню
"rbproj" :{
"items":[
"-",
// Встраиваем описаное выше контекстное меню в существующее
{ "contextrefs": "my_custom_ctx" }
]
}
}
}