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.

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)