Ключ "contexts"

Секция «contexts» - описание структуры контекстного меню объекта.

Создание контекстных меню

Объекты контекстных меню состоят из ключа-идентификатора и набора параметров:

Параметр Описание
«priority» (необязательный) Целочисленное значение приоритета сортировки. Чем выше значение, тем дальше объект сдвигается в порядке очереди
«flags» (необязательный) Флаги отображения. Допускаемые значения: «0» - показывать, «1» - скрыть.
По умолчанию установлено значение «1»
«items» Массив вложенных элементов меню
Для связывания контекстного меню с объектом, следует в качестве значения параметра «menu» у связываемого объекта, указать ключ-идентификатор меню

Элементы меню

Элементами меню могут быть объекты со следующими параметрами:

Action или Макрос
В качестве элемента указывается строковый идентификатор action'а или макрос
Элемент вызываемый по умолчанию при двойном клике мыши по объекту
«default» Строковый идентификатор action'а или макрос
Подменю
«id» Строковый идентификатор подменю
«title» Строка отображаемая на экране в родительском контекстном меню
«items» Массив вложенных элементов
Встраиваемое контекстное меню
«contextrefs» Ключ-идентификатор контекстного меню (объекта секции «contexts»)
Разделитель
Разделитель обозначается знаком дефиса заключённого в кавычки («-»)

Пример plugin-файла

Ниже приведён пример plugin-файла, в котором мы создадим контекстное меню «my_custom_ctx» и встроим его в уже существующее меню «rbproj», с целью его расширения. Контекстное меню «rbproj» связано с корневым элементом структуры проекта. Plugin-файл сформирует следующий вид расширенного контекстного меню:

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" }
            ]
        }
    }
}
developers/references/core.plugin/contexts.txt · Последние изменения: 2023/01/19 20:02 — proxor