EditorContextMenuPlugin

Наследует: RefCounted < Object

Плагин для добавления пользовательских контекстных меню в редакторе.

Описание

EditorContextMenuPlugin позволяет добавлять пользовательские параметры в контекстное меню редактора.

В настоящее время контекстные меню поддерживаются для трех часто используемых областей: файловая система, дерево сцен и панель списка скриптов редактора.

Методы

void

_popup_menu(paths: PackedStringArray) virtual

void

add_context_menu_item(name: String, callback: Callable, icon: Texture2D = null)

void

add_context_menu_item_from_shortcut(name: String, shortcut: Shortcut, icon: Texture2D = null)

void

add_context_submenu_item(name: String, menu: PopupMenu, icon: Texture2D = null)

void

add_menu_shortcut(shortcut: Shortcut, callback: Callable)


Перечисления

enum ContextMenuSlot: 🔗

ContextMenuSlot CONTEXT_SLOT_SCENE_TREE = 0

Контекстное меню панели сцен. _popup_menu() будет вызван со списком путей к текущим выбранным узлам, в то время как опция обратного вызова получит список текущих выбранных узлов.

ContextMenuSlot CONTEXT_SLOT_FILESYSTEM = 1

Контекстное меню дока FileSystem. _popup_menu() и опция обратного вызова будут вызваны со списком путей к текущим выбранным файлам.

ContextMenuSlot CONTEXT_SLOT_SCRIPT_EDITOR = 2

Контекстное меню вкладок скриптов редактора скриптов. _popup_menu() будет вызван с указанием пути к текущему редактируемому скрипту, в то время как опция обратного вызова получит ссылку на этот скрипт.

ContextMenuSlot CONTEXT_SLOT_FILESYSTEM_CREATE = 3

Подменю "Создать..." контекстного меню дока файловой системы или раздел "Новый" главного контекстного меню при щелчке по пустому месту. _popup_menu() и функция обратного вызова option будут вызваны с указанием пути к текущей выбранной папке. При щелчке по пустому месту список путей для метода popup будет пустым.

func _popup_menu(paths):
    if paths.is_empty():
        add_context_menu_item("New Image File...", create_image)
    else:
        add_context_menu_item("Image File...", create_image)

ContextMenuSlot CONTEXT_SLOT_SCRIPT_EDITOR_CODE = 4

Контекстное меню редактора кода Script editor. _popup_menu() будет вызван с путем к узлу CodeEdit. Вы можете получить его с помощью этого кода:

func _popup_menu(paths):
    var code_edit = Engine.get_main_loop().root.get_node(paths[0]);

Обратный вызов опции получит ссылку на этот узел. Вы можете использовать методы CodeEdit для выполнения поиска символов и т. д.

ContextMenuSlot CONTEXT_SLOT_SCENE_TABS = 5

Контекстное меню вкладок сцен. _popup_menu() будет вызван с путем к выбранной сцене или пустым PackedStringArray, если меню было открыто на пустом месте. Обратный вызов опции получит путь к выбранной сцене или пустую String, если ни одна из сцен не была выбрана.

ContextMenuSlot CONTEXT_SLOT_2D_EDITOR = 6

Контекстное меню основного меню правой кнопки мыши 2D-редактора. _popup_menu() будет вызван с путями ко всем узлам CanvasItem под курсором. Вы можете получить их с помощью этого кода:

func _popup_menu(paths):
    var canvas_item = Engine.get_main_loop().root.get_node(paths[0]); # Replace 0 with the desired index.

Массив paths пуст, если под курсором нет узлов. Обратный вызов опции получит типизированный массив узлов CanvasItem.


Описания метода

void _popup_menu(paths: PackedStringArray) virtual 🔗

Вызывается при создании контекстного меню, пользовательские параметры можно добавлять с помощью функций add_context_menu_item() или add_context_menu_item_from_shortcut(). paths содержит текущие выбранные пути (в зависимости от меню), которые можно использовать для условного добавления параметров.


void add_context_menu_item(name: String, callback: Callable, icon: Texture2D = null) 🔗

Добавить пользовательскую опцию в контекстное меню указанного слота плагина. Когда опция активирована, будет вызван callback. Обратный вызов должен принимать один аргумент Array; содержимое массива зависит от слота контекстного меню.

func _popup_menu(paths):
    add_context_menu_item("File Custom options", handle, ICON)

Если вы хотите назначить ярлык для пункта меню, используйте вместо этого add_context_menu_item_from_shortcut().


void add_context_menu_item_from_shortcut(name: String, shortcut: Shortcut, icon: Texture2D = null) 🔗

Добавить пользовательскую опцию в контекстное меню указанного слота плагина. Опции будет назначен shortcut и повторно использовать ее обратный вызов. Сочетание клавиш должно быть предварительно зарегистрировано с помощью add_menu_shortcut().

func _init():
    add_menu_shortcut(SHORTCUT, handle)

func _popup_menu(paths):
    add_context_menu_item_from_shortcut("File Custom options", SHORTCUT, ICON)

void add_context_submenu_item(name: String, menu: PopupMenu, icon: Texture2D = null) 🔗

Добавить подменю в контекстное меню указанного слота плагина. Подменю не обрабатывается автоматически, вам нужно подключиться к его сигналам самостоятельно. Также подменю освобождается при каждом всплывающем окне, поэтому каждый раз предоставляйте новый PopupMenu.

func _popup_menu(paths):
    var popup_menu = PopupMenu.new()
    popup_menu.add_item("Blue")
    popup_menu.add_item("White")
    popup_menu.id_pressed.connect(_on_color_submenu_option)

    add_context_submenu_item("Set Node Color", popup_menu)

void add_menu_shortcut(shortcut: Shortcut, callback: Callable) 🔗

Регистрирует ярлык, связанный с контекстным меню плагина. Этот метод должен быть вызван один раз (например, в Object._init() плагина). callback будет вызван, когда пользователь нажмет указанный shortcut, пока контекст меню активен (например, док FileSystem находится в фокусе). Обратный вызов должен принимать один аргумент Array; содержимое массива зависит от слота контекстного меню.

func _init():
    add_menu_shortcut(SHORTCUT, handle)