Files
2026-07-19 10:47:28 +02:00

92 lines
2.5 KiB
GDScript

@tool
class_name YAMLEditorMenuBar extends MenuBar
signal new_file
signal open_file
signal save_requested
signal save_as_requested
signal close_requested
signal undo_requested
signal redo_requested
signal cut_requested
signal copy_requested
signal paste_requested
signal select_all_requested
signal find_requested
signal find_next_requested
signal find_previous_requested
signal replace_requested
@export var file_menu: PopupMenu
@export var edit_menu: PopupMenu
@export var search_menu: PopupMenu
func _ready() -> void:
# Wait for UI to be ready
await get_tree().process_frame
# Set up the menu bar
_setup_menus()
func _setup_menus() -> void:
# File menu
file_menu.clear()
file_menu.add_item("New", 0, KEY_MASK_CTRL | KEY_N)
file_menu.add_item("Open...", 1, KEY_MASK_CTRL | KEY_O)
file_menu.add_separator()
file_menu.add_item("Save", 2, KEY_MASK_CTRL | KEY_S)
file_menu.add_item("Save As...", 3, KEY_MASK_CTRL | KEY_MASK_SHIFT | KEY_S)
file_menu.add_separator()
file_menu.add_item("Close", 4, KEY_MASK_CTRL | KEY_W)
# Edit menu
edit_menu.clear()
edit_menu.add_item("Undo", 0, KEY_MASK_CTRL | KEY_Z)
edit_menu.add_item("Redo", 1, KEY_MASK_CTRL | KEY_MASK_SHIFT | KEY_Z)
edit_menu.add_separator()
edit_menu.add_item("Cut", 2, KEY_MASK_CTRL | KEY_X)
edit_menu.add_item("Copy", 3, KEY_MASK_CTRL | KEY_C)
edit_menu.add_item("Paste", 4, KEY_MASK_CTRL | KEY_V)
edit_menu.add_separator()
edit_menu.add_item("Select All", 5, KEY_MASK_CTRL | KEY_A)
# Search menu
search_menu.clear()
search_menu.add_item("Find...", 0, KEY_MASK_CTRL | KEY_F)
search_menu.add_item("Find Next", 1, KEY_F3)
search_menu.add_item("Find Previous", 2, KEY_MASK_SHIFT | KEY_F3)
search_menu.add_separator()
search_menu.add_item("Replace...", 3, KEY_MASK_CTRL | KEY_R)
# Connect signals
file_menu.id_pressed.connect(_on_file_menu_id_pressed)
edit_menu.id_pressed.connect(_on_edit_menu_id_pressed)
search_menu.id_pressed.connect(_on_search_menu_id_pressed)
func _on_file_menu_id_pressed(id: int) -> void:
match id:
0: new_file.emit()
1: open_file.emit()
2: save_requested.emit()
3: save_as_requested.emit()
4: close_requested.emit()
func _on_edit_menu_id_pressed(id: int) -> void:
match id:
0: undo_requested.emit()
1: redo_requested.emit()
2: cut_requested.emit()
3: copy_requested.emit()
4: paste_requested.emit()
5: select_all_requested.emit()
func _on_search_menu_id_pressed(id: int) -> void:
match id:
0: find_requested.emit()
1: find_next_requested.emit()
2: find_previous_requested.emit()
3: replace_requested.emit()