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
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.
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.
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)