Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
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.
ContextMenuSlot CONTEXT_SLOT_INSPECTOR_PROPERTY = 7
Контекстное меню инспектора, вызываемое правой кнопкой мыши. Метод _popup_menu() будет вызван с массивом из двух элементов: первым будет идентификатор объекта, вторым — имя свойства. Объект можно получить по его идентификатору через @GlobalScope.instance_from_id(), предварительно преобразовав ID в целое число. Функция обратного вызова опции получит напрямую экземпляр EditorProperty.
Описания метода
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)