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
Контекстне меню док-станції Scene. Буде викликано _popup_menu() зі списком шляхів до поточних вибраних вузлів, тоді як зворотний виклик опції отримає список поточних вибраних вузлів.
ContextMenuSlot CONTEXT_SLOT_FILESYSTEM = 1
Контекстне меню дока файлової системи. Буде викликано _popup_menu() та опцію зворотного виклику зі списком шляхів до вибраних файлів.
ContextMenuSlot CONTEXT_SLOT_SCRIPT_EDITOR = 2
Контекстне меню вкладок скрипти редактора скрипт. Буде викликано _popup_menu() із шляхом до поточного редагованого скрипту, тоді як зворотний виклик опції отримає посилання на цей скрипт.
ContextMenuSlot CONTEXT_SLOT_FILESYSTEM_CREATE = 3
Підменю "Створити..." контекстного меню дока файлової системи або розділ "Нове" головного контекстного меню після натискання на порожнє місце. Буде викликано _popup_menu() та опцію зворотного виклику зі шляхом до поточної вибраної папки. Після натискання на порожнє місце список шляхів для методу 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]); # Замініть 0 на потрібний індекс.
Масив paths порожній, якщо під курсором не було жодної вершини. Зворотний виклик опції отримає типізований масив вузлів CanvasItem.
ContextMenuSlot CONTEXT_SLOT_INSPECTOR_PROPERTY = 7
Context menu of the inspectors right-click menu. _popup_menu() will be called with an array of two items: The first will be the object's ID, the second will be the property name. An object can be retrieved from it's ID via @GlobalScope.instance_from_id() after converting it to an int. The option callback will receive the EditorProperty directly.
Описи методів
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(path):
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, marker)
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("While")
popup_menu.id_pressed.connect(_on_color_submenu_option)
add_context_submenu_item("Set Node Color node", popup_menu)
void add_menu_shortcut(shortcut: Shortcut, callback: Callable) 🔗
Реєструє ярлик, пов’язаний із контекстним меню плагіна. Цей метод слід викликати один раз (наприклад, у плагіні Object._init()). callback буде викликано, коли користувач натискає вказаний shortcut під час дії контексту меню (наприклад, у фокусі док-станція FileSystem). Зворотний виклик повинен приймати один аргумент Array; вміст масиву залежить від слота контекстного меню.
func _init():
add_menu_shortcut(SHORTCUT, marker)