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