119 lines
4.2 KiB
GDScript
119 lines
4.2 KiB
GDScript
@tool
|
|
extends PanelContainer
|
|
|
|
|
|
var shortcuts := [
|
|
|
|
{"shortcut":"Ctrl+T", "text":"Add Text event", "editor":"VisualEditor"},
|
|
{"shortcut":"Ctrl+Shift+T", "text":"Add Text event with current character", "editor":"VisualEditor"},
|
|
{"shortcut":"Ctrl+Alt/Opt+T", "text":"Add Text event with previous character", "editor":"VisualEditor"},
|
|
{"shortcut":"Ctrl+E", "text":"Add Character join event", "editor":"VisualEditor"},
|
|
{"shortcut":"Ctrl+Shift+E", "text":"Add Character update event", "editor":"VisualEditor"},
|
|
{"shortcut":"Ctrl+Alt/Opt+E", "text":"Add Character leave event", "editor":"VisualEditor"},
|
|
{"shortcut":"Ctrl+J", "text":"Add Jump event", "editor":"VisualEditor"},
|
|
{"shortcut":"Ctrl+L", "text":"Add Label event", "editor":"VisualEditor"},
|
|
{},
|
|
{"shortcut":"Alt/Opt+Up", "text":"Move selected events/lines up"},
|
|
{"shortcut":"Alt/Opt+Down", "text":"Move selected events/lines down"},
|
|
{},
|
|
{"shortcut":"Ctrl+F", "text":"Search"},
|
|
{"shortcut":"Ctrl+R", "text":"Replace"},
|
|
{},
|
|
{"shortcut":"Ctrl+F5", "text":"Play timeline", "platform":"-macOS"},
|
|
{"shortcut":"Ctrl+B", "text":"Play timeline", "platform":"macOS"},
|
|
{"shortcut":"Ctrl+F6", "text":"Play timeline from here", "platform":"-macOS"},
|
|
{"shortcut":"Ctrl+Shift+B", "text":"Play timeline from here", "platform":"macOS"},
|
|
|
|
{},
|
|
{"shortcut":"Ctrl+C", "text":"Copy"},
|
|
{"shortcut":"Ctrl+V", "text":"Paste"},
|
|
{"shortcut":"Ctrl+D", "text":"Duplicate selected events/lines"},
|
|
{"shortcut":"Ctrl+X", "text":"Cut selected events/lines"},
|
|
{"shortcut":"Ctrl+K", "text":"Toggle Comment" , "editor":"TextEditor"},
|
|
{"shortcut":"Delete", "text":"Delete events", "editor":"VisualEditor"},
|
|
{},
|
|
{"shortcut":"Ctrl+A", "text":"Select All"},
|
|
{"shortcut":"Ctrl+Shift+A", "text":"Select Nothing", "editor":"VisualEditor"},
|
|
{"shortcut":"Up", "text":"Select previous event", "editor":"VisualEditor"},
|
|
{"shortcut":"Down", "text":"Select next event", "editor":"VisualEditor"},
|
|
{},
|
|
{"shortcut":"Ctrl+Z", "text":"Undo"},
|
|
{"shortcut":"Ctrl+Shift+Z", "text":"Redo"},
|
|
{},
|
|
]
|
|
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready() -> void:
|
|
%CloseShortcutPanel.icon = get_theme_icon("Close", "EditorIcons")
|
|
get_theme_stylebox("panel").bg_color = get_theme_color("dark_color_3", "Editor")
|
|
|
|
|
|
func reload_shortcuts() -> void:
|
|
for i in %ShortcutList.get_children():
|
|
i.queue_free()
|
|
|
|
var is_text_editor: bool = %TextEditor.visible
|
|
for i in shortcuts:
|
|
if i.is_empty():
|
|
%ShortcutList.add_child(HSeparator.new())
|
|
%ShortcutList.add_child(HSeparator.new())
|
|
continue
|
|
|
|
if "editor" in i and not get_node("%"+i.editor).visible:
|
|
continue
|
|
|
|
if "platform" in i:
|
|
var platform := OS.get_name()
|
|
if not (platform == i.platform.trim_prefix("-") != i.platform.begins_with("-")):
|
|
continue
|
|
|
|
var hbox := HBoxContainer.new()
|
|
hbox.add_theme_constant_override("separation", 0)
|
|
for key_text in i.shortcut.split("+"):
|
|
if hbox.get_child_count():
|
|
var plus_l := Label.new()
|
|
plus_l.text = "+"
|
|
hbox.add_child(plus_l)
|
|
|
|
var key := Button.new()
|
|
if key_text == "Up":
|
|
key.icon = get_theme_icon("ArrowUp", "EditorIcons")
|
|
elif key_text == "Down":
|
|
key.icon = get_theme_icon("ArrowDown", "EditorIcons")
|
|
else:
|
|
key_text = key_text.replace("Alt/Opt", "Opt" if OS.get_name() == "macOS" else "Alt")
|
|
key.text = key_text
|
|
key.disabled = true
|
|
key.theme_type_variation = "ShortcutKeyLabel"
|
|
key.add_theme_font_override("font", get_theme_font("source", "EditorFonts"))
|
|
hbox.add_child(key)
|
|
|
|
%ShortcutList.add_child(hbox)
|
|
|
|
var text := Label.new()
|
|
text.text = i.text.replace("events/lines", "lines" if is_text_editor else "events")
|
|
text.theme_type_variation = "DialogicHintText2"
|
|
%ShortcutList.add_child(text)
|
|
|
|
|
|
func open():
|
|
if visible:
|
|
close()
|
|
return
|
|
reload_shortcuts()
|
|
|
|
show()
|
|
await get_tree().process_frame
|
|
size = get_parent().size - Vector2(100, 100)*DialogicUtil.get_editor_scale()
|
|
size.x = %ShortcutList.get_minimum_size().x + 100
|
|
size.y = min(size.y, %ShortcutList.get_minimum_size().y+100)
|
|
global_position = get_parent().global_position+get_parent().size/2-size/2
|
|
|
|
|
|
func _on_close_shortcut_panel_pressed() -> void:
|
|
close()
|
|
|
|
func close() -> void:
|
|
hide()
|