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.

NativeMenu

Успадковує: Object

Інтерфейс сервера для ОС рідних меню.

Опис

NativeMenu обробляє низькорівневий доступ до внутрішньої глобальної панелі меню та спливних меню ОС.

Примітка: Це низькорівневий API, розгляньте можливість використання MenuBar із MenuBar.prefer_global_menu, установленим на true, і PopupMenu з PopupMenu.prefer_native_menu, встановленим на true.

Щоб створити меню, використовуйте create_menu(), додайте пункти меню за допомогою методів add_*_item. Щоб видалити меню, використовуйте free_menu().

var menu

func _menu_callback(item_id):
    if item_id == "ITEM_CUT":
        cut()
    elif item_id == "ITEM_COPY":
        copy()
    elif item_id == "ITEM_PASTE":
        paste()

func _enter_tree():
    # Створіть нове меню та додайте елементи:
    menu = NativeMenu.create_menu()
    NativeMenu.add_item(menu, "Cut", _menu_callback, Callable(), "ITEM_CUT")
    NativeMenu.add_item(menu, "Copy", _menu_callback, Callable(), "ITEM_COPY")
    NativeMenu.add_separator(menu)
    NativeMenu.add_item(menu, "Paste", _menu_callback, Callable(), "ITEM_PASTE")

func _on_button_pressed():
    # Показувати спливаюче меню в положенні миші:
    NativeMenu.popup(menu, DisplayServer.mouse_get_position())

func _exit_tree():
    # Видалити меню, коли воно більше не потрібне:
    NativeMenu.free_menu(menu)

Методи

int

add_check_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_icon_check_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_icon_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_icon_radio_check_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_multistate_item(rid: RID, label: String, max_states: int, default_state: int, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_radio_check_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1)

int

add_separator(rid: RID, index: int = -1)

int

add_submenu_item(rid: RID, label: String, submenu_rid: RID, tag: Variant = null, index: int = -1)

|void|

clear(rid: RID)

RID

create_menu()

int

find_item_index_with_submenu(rid: RID, submenu_rid: RID) |const|

int

find_item_index_with_tag(rid: RID, tag: Variant) |const|

int

find_item_index_with_text(rid: RID, text: String) |const|

|void|

free_menu(rid: RID)

Key

get_item_accelerator(rid: RID, idx: int) |const|

Callable

get_item_callback(rid: RID, idx: int) |const|

int

get_item_count(rid: RID) |const|

Texture2D

get_item_icon(rid: RID, idx: int) |const|

int

get_item_indentation_level(rid: RID, idx: int) |const|

Callable

get_item_key_callback(rid: RID, idx: int) |const|

int

get_item_max_states(rid: RID, idx: int) |const|

int

get_item_state(rid: RID, idx: int) |const|

RID

get_item_submenu(rid: RID, idx: int) |const|

Variant

get_item_tag(rid: RID, idx: int) |const|

String

get_item_text(rid: RID, idx: int) |const|

String

get_item_tooltip(rid: RID, idx: int) |const|

float

get_minimum_width(rid: RID) |const|

Callable

get_popup_close_callback(rid: RID) |const|

Callable

get_popup_open_callback(rid: RID) |const|

Vector2

get_size(rid: RID) |const|

RID

get_system_menu(menu_id: SystemMenus) |const|

String

get_system_menu_name(menu_id: SystemMenus) |const|

String

get_system_menu_text(menu_id: SystemMenus) |const|

bool

has_feature(feature: Feature) |const|

bool

has_menu(rid: RID) |const|

bool

has_system_menu(menu_id: SystemMenus) |const|

bool

is_item_checkable(rid: RID, idx: int) |const|

bool

is_item_checked(rid: RID, idx: int) |const|

bool

is_item_disabled(rid: RID, idx: int) |const|

bool

is_item_hidden(rid: RID, idx: int) |const|

bool

is_item_radio_checkable(rid: RID, idx: int) |const|

bool

is_opened(rid: RID) |const|

bool

is_system_menu(rid: RID) |const|

|void|

popup(rid: RID, position: Vector2i)

|void|

remove_item(rid: RID, idx: int)

|void|

set_interface_direction(rid: RID, is_rtl: bool)

|void|

set_item_accelerator(rid: RID, idx: int, keycode: Key)

|void|

set_item_callback(rid: RID, idx: int, callback: Callable)

|void|

set_item_checkable(rid: RID, idx: int, checkable: bool)

|void|

set_item_checked(rid: RID, idx: int, checked: bool)

|void|

set_item_disabled(rid: RID, idx: int, disabled: bool)

|void|

set_item_hidden(rid: RID, idx: int, hidden: bool)

|void|

set_item_hover_callbacks(rid: RID, idx: int, callback: Callable)

|void|

set_item_icon(rid: RID, idx: int, icon: Texture2D)

|void|

set_item_indentation_level(rid: RID, idx: int, level: int)

int

set_item_index(rid: RID, idx: int, target_idx: int)

|void|

set_item_key_callback(rid: RID, idx: int, key_callback: Callable)

|void|

set_item_max_states(rid: RID, idx: int, max_states: int)

|void|

set_item_radio_checkable(rid: RID, idx: int, checkable: bool)

|void|

set_item_state(rid: RID, idx: int, state: int)

|void|

set_item_submenu(rid: RID, idx: int, submenu_rid: RID)

|void|

set_item_tag(rid: RID, idx: int, tag: Variant)

|void|

set_item_text(rid: RID, idx: int, text: String)

|void|

set_item_tooltip(rid: RID, idx: int, tooltip: String)

|void|

set_minimum_width(rid: RID, width: float)

|void|

set_popup_close_callback(rid: RID, callback: Callable)

|void|

set_popup_open_callback(rid: RID, callback: Callable)

|void|

set_system_menu_text(menu_id: SystemMenus, name: String)


Переліки

enum Feature: 🔗

Feature FEATURE_GLOBAL_MENU = 0

NativeMenu підтримує рідне глобальне меню.

Feature FEATURE_POPUP_MENU = 1

NativeMenu підтримує рідні меню поштових повідомлень.

Feature FEATURE_OPEN_CLOSE_CALLBACK = 2

NativeMenu підтримує меню відкритими та закритими викликами.

Feature FEATURE_HOVER_CALLBACK = 3

NativeMenu підтримує пункт меню hover callback.

Feature FEATURE_KEY_CALLBACK = 4

NativeMenu підтримує пункт меню акселератор/ключний дзвінок.


enum SystemMenus: 🔗

SystemMenus INVALID_MENU_ID = 0

Вказана спеціальна система ID.

SystemMenus MAIN_MENU_ID = 1

Глобальний ідентифікатор головного меню.

SystemMenus APPLICATION_MENU_ID = 2

Додаток (перше меню після меню «Додати» на macOS).

SystemMenus WINDOW_MENU_ID = 3

"Віндов" ідентифікатор меню (на macOS це меню включає стандартні елементи керування вікнами та список відкритих вікон).

SystemMenus HELP_MENU_ID = 4

В меню "Допомога" в меню "Допомога" в меню "Допомогти"".

SystemMenus DOCK_MENU_ID = 5

Dock icon right-click меню ID (на macOS це меню включає в себе стандартні елементи керування додатками і список відкритих вікон).


Описи методів

int add_check_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

Додати новий зареєстрований пункт з текстом label до глобального меню index.

Повертає індекс вставленого пункту, не гарантується таким же, як index значення.

accelerator може бути визначений, який є клавіатурним ярликом, який можна натиснути, щоб запустити меню кнопка, навіть якщо це не відкрито. accelerator, як правило, поєднання KeyModifierMasks і Key, використовуючи бітум OR, такі як KEY_MASK_CTRL KEY_A (Ctrl + A).

Note: callback і key_callback Увімкнення необхідно приймати саме один параметр Variant, параметр, переданий до Callables, буде значення, передане до tag.

Примітка: Цей метод реалізується на macOS і Windows.

Примітка: На Windows, accelerator і key_callback ігноруються.


int add_icon_check_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

Додає новий елемент-прапорець з текстом label та іконою icon до глобального меню з ID rid.

Повертає індекс вставленого елемента, який може відрізнятися від index.

Можна вказати accelerator, який є комбінацією клавіш, яку можна натиснути, для активації елементу меню навіть якщо меню ще не відкрите. accelerator, як правило, є поєднанням декількох KeyModifierMask і Key за допомогою побітового АБО, таких як KEY_MASK_CTRL | KEY_A (Ctrl + A).

Примітка: Функції callback і key_callback мають приймати рівно один параметр Variant, причому цей параметр буде значенням, переданим до tag.

Примітка: Цей метод реалізується для macOS і Windows.

Примітка: У Windows, accelerator і key_callback будуть проігноровані.


int add_icon_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

Додає новий елемент з текстом label і іконкою icon до глобального меню парам позбутися.

Повертає індекс вставленого пункту, не гарантується таким же, як index значення.

accelerator може бути визначений, який є клавіатурним ярликом, який можна натиснути, щоб запустити меню кнопка, навіть якщо це не відкрито. accelerator, як правило, поєднання KeyModifierMasks і Key, використовуючи бітум OR, такі як KEY_MASK_CTRL КЛЮЧ_A (Ctrl + A).

Примітка: callback і key_callback Увімкнення необхідно приймати саме один параметр Variant, параметр, переданий до Callables, буде значення, передане до tag.

Примітка: Цей метод реалізується на macOS і Windows.

Примітка: На Windows, accelerator і key_callback ігноруються.


int add_icon_radio_check_item(rid: RID, icon: Texture2D, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

Додає новий елемент-радіокнопка з текстом label та іконкою icon до глобального меню rid.

Повертає індекс вставленого елемента, який може відрізнятися від index.

Можна вказати accelerator, який є комбінацією клавіш, яку можна натиснути, для активації елементу меню навіть якщо меню ще не відкрите. accelerator, як правило, є поєднанням декількох KeyModifierMask і Key за допомогою побітового АБО, таких як KEY_MASK_CTRL | KEY_A (Ctrl + A).

Примітка: Елементи-радіокнопки просто показують галочку, але не мають ніякої вбудованої поведінки щодо вмикання та вимикання, тому потребують робити це вручну. Дивитись set_item_checked() для додаткової інформації щодо того, як ними керувати.

Примітка: Функції callback і key_callback мають приймати рівно один параметр Variant, причому цей параметр буде значенням, переданим до tag.

Примітка: Цей метод реалізується для macOS і Windows.

Примітка: У Windows, accelerator і key_callback будуть проігноровані.


int add_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

Додайте новий елемент з текстом label до глобального меню rid.

Повертає індекс вставленого пункту, не гарантується таким же, як index значення.

accelerator може бути визначений, який є клавіатурним ярликом, який можна натиснути, щоб запустити меню кнопка, навіть якщо це не відкрито. accelerator, як правило, поєднання KeyModifierMask і Key з використанням бітумних OR, таких як KEY_MASK_CTRL Ключ_A (Ctrl + A).

Примітка: callback і key_callback Увімкнення необхідно приймати саме один параметр Variant, параметр, переданий до Callables, буде значення, передане до tag.

Примітка: Цей метод реалізується на macOS і Windows.

Примітка: На Windows, accelerator і key_callback ігноруються.


int add_multistate_item(rid: RID, label: String, max_states: int, default_state: int, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

Додайте новий елемент з текстом label до глобального меню rid.

Всупереч нормальним бінарним елементам, багатостатеві елементи можуть мати більше двох станів, як визначені max_states. Кожна преса або активація елемента збільшить стан одним. Значення за замовчуванням визначається default_state.

Повертає індекс вставленого пункту, не гарантується таким же, як index значення.

accelerator може бути визначений, який є клавіатурним ярликом, який можна натиснути, щоб запустити меню кнопка, навіть якщо це не відкрито. accelerator, як правило, поєднання KeyModifierMasks і Key, використовуючи бітум OR, такі як KEY_MASK_CTRL КЛЮЧ_A (Ctrl + A).

Примітка: За замовчуванням немає показання поточного стану елемента, його слід змінити вручну.

Примітка: callback і key_callback Увімкнення необхідно приймати саме один параметр Variant, параметр, переданий до Callables, буде значення, передане до tag.

Примітка: Цей метод реалізується на macOS і Windows.

Примітка: на Windows, параметра і key_callback ігноруються.


int add_radio_check_item(rid: RID, label: String, callback: Callable = Callable(), key_callback: Callable = Callable(), tag: Variant = null, accelerator: Key = 0, index: int = -1) 🔗

Додає новий елемент-радіокнопка з текстом label до глобального меню rid.

Повертає індекс вставленого елемента, який може відрізнятися від index.

Можна вказати accelerator, який є комбінацією клавіш, яку можна натиснути, для активації елементу меню навіть якщо меню ще не відкрите. accelerator, як правило, є поєднанням декількох KeyModifierMask і Key за допомогою побітового АБО, таких як KEY_MASK_CTRL | KEY_A (Ctrl + A).

Примітка: Елементи-радіокнопки просто показують галочку, але не мають ніякої вбудованої поведінки щодо вмикання та вимикання, тому потребують робити це вручну. Дивитись set_item_checked() для додаткової інформації щодо того, як ними керувати.

Примітка: Функції callback і key_callback мають приймати рівно один параметр Variant, причому цей параметр буде значенням, переданим до tag.

Примітка: Цей метод реалізується для macOS і Windows.

Примітка: У Windows, accelerator і key_callback будуть проігноровані.


int add_separator(rid: RID, index: int = -1) 🔗