121 lines
2.8 KiB
GDScript
121 lines
2.8 KiB
GDScript
@tool
|
|
extends Node
|
|
|
|
|
|
var delete := Shortcut.new()
|
|
var duplicate := Shortcut.new()
|
|
var create := Shortcut.new()
|
|
var rename := Shortcut.new()
|
|
var search := Shortcut.new()
|
|
var confirm := Shortcut.new()
|
|
var undo := Shortcut.new()
|
|
var redo := Shortcut.new()
|
|
|
|
var save := Shortcut.new()
|
|
var save_as := Shortcut.new()
|
|
|
|
|
|
## Returns whether a specific node should handle the shortcut.
|
|
static func should_handle_shortcut(node: Node) -> bool:
|
|
var focus_owner := node.get_viewport().gui_get_focus_owner()
|
|
return focus_owner and (node.is_ancestor_of(focus_owner) or focus_owner == node)
|
|
|
|
|
|
func _ready() -> void:
|
|
__setup_shortcuts()
|
|
|
|
|
|
func __setup_shortcuts() -> void:
|
|
# delete
|
|
var ev_delete := InputEventKey.new()
|
|
if OS.get_name() == "macOS":
|
|
ev_delete.keycode = KEY_BACKSPACE
|
|
ev_delete.meta_pressed = true
|
|
else:
|
|
ev_delete.keycode = KEY_DELETE
|
|
delete.events.append(ev_delete)
|
|
|
|
# duplicate
|
|
var ev_dupe := InputEventKey.new()
|
|
if OS.get_name() == "macOS":
|
|
ev_dupe.keycode = KEY_D
|
|
ev_dupe.meta_pressed = true
|
|
else:
|
|
ev_dupe.keycode = KEY_D
|
|
ev_dupe.ctrl_pressed = true
|
|
duplicate.events.append(ev_dupe)
|
|
|
|
# create
|
|
var ev_create := InputEventKey.new()
|
|
if OS.get_name() == "macOS":
|
|
ev_create.keycode = KEY_A
|
|
ev_create.meta_pressed = true
|
|
else:
|
|
ev_create.keycode = KEY_A
|
|
ev_create.ctrl_pressed = true
|
|
create.events.append(ev_create)
|
|
|
|
# rename
|
|
var ev_rename := InputEventKey.new()
|
|
ev_rename.keycode = KEY_F2
|
|
rename.events.append(ev_rename)
|
|
|
|
# search
|
|
var ev_search := InputEventKey.new()
|
|
if OS.get_name() == "macOS":
|
|
ev_search.keycode = KEY_F
|
|
ev_search.meta_pressed = true
|
|
else:
|
|
ev_search.keycode = KEY_F
|
|
ev_search.ctrl_pressed = true
|
|
search.events.append(ev_search)
|
|
|
|
# confirm
|
|
var ev_confirm := InputEventKey.new()
|
|
ev_confirm.keycode = KEY_ENTER
|
|
confirm.events.append(ev_confirm)
|
|
|
|
# undo
|
|
var ev_undo := InputEventKey.new()
|
|
if OS.get_name() == "macOS":
|
|
ev_undo.keycode = KEY_Z
|
|
ev_undo.meta_pressed = true
|
|
else:
|
|
ev_undo.keycode = KEY_Z
|
|
ev_undo.ctrl_pressed = true
|
|
undo.events.append(ev_undo)
|
|
|
|
# redo
|
|
var ev_redo := InputEventKey.new()
|
|
if OS.get_name() == "macOS":
|
|
ev_redo.keycode = KEY_Z
|
|
ev_redo.meta_pressed = true
|
|
ev_redo.shift_pressed = true
|
|
else:
|
|
ev_redo.keycode = KEY_Z
|
|
ev_redo.ctrl_pressed = true
|
|
ev_redo.shift_pressed = true
|
|
redo.events.append(ev_redo)
|
|
|
|
# save
|
|
var ev_save := InputEventKey.new()
|
|
if OS.get_name() == "macOS":
|
|
ev_save.keycode = KEY_S
|
|
ev_save.meta_pressed = true
|
|
else:
|
|
ev_save.keycode = KEY_S
|
|
ev_save.ctrl_pressed = true
|
|
save.events.append(ev_save)
|
|
|
|
# save as
|
|
var ev_save_as := InputEventKey.new()
|
|
if OS.get_name() == "macOS":
|
|
ev_save_as.keycode = KEY_S
|
|
ev_save_as.meta_pressed = true
|
|
ev_save_as.shift_pressed = true
|
|
else:
|
|
ev_save_as.keycode = KEY_S
|
|
ev_save_as.ctrl_pressed = true
|
|
ev_save_as.shift_pressed = true
|
|
save_as.events.append(ev_save_as)
|