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)