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