EditorContextMenuPlugin
Eredita: RefCounted < Object
Estensione per aggiungere menu contestuali personalizzati nell'editor.
Descrizione
EditorContextMenuPlugin consente di aggiungere opzioni personalizzate nel menu contestuale dell'editor.
Attualmente, i menu contestuali sono supportati per tre aree di uso comune: il file system, l'albero di scene e il pannello dell'elenco degli script nell'editor.
Metodi
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) |
Enumerazioni
enum ContextMenuSlot: 🔗
ContextMenuSlot CONTEXT_SLOT_SCENE_TREE = 0
Menu contestuale del pannello della Scena. _popup_menu() verrà chiamato con una lista di percorsi verso i nodi attualmente selezionati, mentre il callback d'opzione riceverà la lista dei nodi attualmente selezionati.
ContextMenuSlot CONTEXT_SLOT_FILESYSTEM = 1
Menu contestuale del pannello del FileSystem. _popup_menu() e il callback d'opzione verranno chiamati con la lista dei percorsi dei file attualmente selezionati.
ContextMenuSlot CONTEXT_SLOT_SCRIPT_EDITOR = 2
Menu contestuale delle schede degli script dell'editor di script. _popup_menu() verrà chiamato con il percorso allo script attualmente modificato, mentre il callback d'opzione riceverà un riferimento a tale script.
ContextMenuSlot CONTEXT_SLOT_FILESYSTEM_CREATE = 3
Il sottomenu "Crea..." del menu contestuale del pannello FileSystem, o la sezione "Nuovo" del menu contestuale principale quando si clicca su uno spazio vuoto. _popup_menu() e il callback dell'opzione saranno richiamati con il percorso della cartella attualmente selezionata. Cliccando sullo spazio vuoto, la lista di percorsi per il metodo di popup sarà vuoto.
func _popup_menu(paths):
if paths.is_empty():
add_context_menu_item("Nuovo file immagine...", create_image)
else:
add_context_menu_item("File immaggine...", create_image)
ContextMenuSlot CONTEXT_SLOT_SCRIPT_EDITOR_CODE = 4
Menu contestuale dell'editor di codice dell'editor di script. _popup_menu() verrà chiamato con il percorso al nodo CodeEdit. È possibile recuperarlo tramite questo codice:
func _popup_menu(paths):
var code_edit = Engine.get_main_loop().root.get_node(paths[0]);
Il callback d'opzione riceverà un riferimento a quel nodo. Puoi usare i metodi di CodeEdit per eseguire ricerche di simboli ecc.
ContextMenuSlot CONTEXT_SLOT_SCENE_TABS = 5
Menu contestuale delle schede delle scene. _popup_menu() verrà chiamato con il percorso della scena cliccata, o con un PackedStringArray vuoto se il menu è stato aperto su uno spazio vuoto. Il callback d'opzione riceverà il percorso della scena cliccata, o una String vuota se nessuna scena è stata cliccata.
ContextMenuSlot CONTEXT_SLOT_2D_EDITOR = 6
Menu contestuale del menu di scelta rapida di base dell'editor 2D. _popup_menu() verrà chiamato con i percorsi a tutti i nodi CanvasItem sotto il cursore. È possibile recuperarli tramite questo codice:
func _popup_menu(paths):
var canvas_item = Engine.get_main_loop().root.get_node(paths[0]); # Sostituisci 0 con l'indice desiderato.
L'array dei percorsi è vuoto se non ci sono nodi sotto il cursore. Il callback d'opzione riceverà un array tipizzato di nodi CanvasItem.
Descrizioni dei metodi
void _popup_menu(paths: PackedStringArray) virtual 🔗
Chiamato alla creazione di un menu contestuale, è possibile aggiungere opzioni personalizzate attraverso le funzioni add_context_menu_item() o add_context_menu_item_from_shortcut(). paths contiene i percorsi attualmente selezionati (a seconda del menu), che è possibile usare per aggiungere opzioni in modo condizionale.
void add_context_menu_item(name: String, callback: Callable, icon: Texture2D = null) 🔗
Aggiunge un'opzione personalizzata al menu contestuale dello slot specificato dell'estensione. Quando l'opzione è attivata, verrà chiamato callback. Il callback dovrebbe accettare un singolo argomento Array; il contenuto dell'array dipende dallo slot del menu contestuale.
func _popup_menu(paths):
add_context_menu_item("File Custom options", handle, ICON)
Se vuoi assegnare una scorciatoia alla voce del menu, usa invece add_context_menu_item_from_shortcut().
void add_context_menu_item_from_shortcut(name: String, shortcut: Shortcut, icon: Texture2D = null) 🔗
Aggiunge un'opzione personalizzata al menu contestuale dello slot specificato dall'estensione. L'opzione avrà la scorciatoia shortcut assegnata e riutilizzerà il suo callback. La scorciatoia deve essere registrata in anticipo con 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) 🔗
Aggiunge un sottomenu al menu contestuale dello slot specificato dell'estensione. Il sottomenu non viene gestito automaticamente, bisogna connetterlo ai suoi segnali manualmente. Inoltre, il sottomenu viene liberato a ogni popup, quindi fornisci un nuovo PopupMenu ogni volta.
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) 🔗
Registra una scorciatoia associata al menu contestuale dell'estensione. Questo metodo dovrebbe essere chiamato una sola volta (ad esempio nel Object._init() dell'estensione). callback verrà chiamato quando l'utente preme la scorciatoia shortcut mentre il contesto del menu è in effetto (ad esempio il pannello del FileSystem è in primo piano). Il callback dovrebbe accettare un singolo argomento Array; il contenuto dell'array dipende dallo slot del menu contestuale.
func _init():
add_menu_shortcut(SHORTCUT, handle)