- 修复 WebSocketManager/SocketIOClient 函数缩进错误 - 重命名 is_connected() 避免与 Object 基类冲突 - 修复 tscn 文件多余前导空格 - 修复测试文件 GUT 断言函数调用 - 添加 GUT 测试框架
121 lines
3.8 KiB
GDScript
121 lines
3.8 KiB
GDScript
@tool
|
|
extends ConfirmationDialog
|
|
|
|
var GutEditorGlobals = load('res://addons/gut/gui/editor_globals.gd')
|
|
var default_path = GutEditorGlobals.editor_shortcuts_path
|
|
|
|
|
|
@onready var scbtn_run_all = $Scroll/Layout/CRunAll/ShortcutButton
|
|
@onready var scbtn_run_current_script = $Scroll/Layout/CRunCurrentScript/ShortcutButton
|
|
@onready var scbtn_run_current_inner = $Scroll/Layout/CRunCurrentInner/ShortcutButton
|
|
@onready var scbtn_run_current_test = $Scroll/Layout/CRunCurrentTest/ShortcutButton
|
|
@onready var scbtn_run_at_cursor = $Scroll/Layout/CRunAtCursor/ShortcutButton
|
|
@onready var scbtn_rerun = $Scroll/Layout/CRerun/ShortcutButton
|
|
@onready var scbtn_panel = $Scroll/Layout/CPanelButton/ShortcutButton
|
|
@onready var scbtn_windowed = $Scroll/Layout/CToggleWindowed/ShortcutButton
|
|
|
|
|
|
@onready var all_buttons = [
|
|
scbtn_run_all, scbtn_run_current_script, scbtn_run_current_inner,
|
|
scbtn_run_current_test, scbtn_run_at_cursor, scbtn_rerun,
|
|
scbtn_panel, scbtn_windowed
|
|
]
|
|
|
|
|
|
func _debug_ready():
|
|
popup_centered()
|
|
|
|
var btn = Button.new()
|
|
btn.text = "show"
|
|
get_tree().root.add_child(btn)
|
|
btn.pressed.connect(popup)
|
|
btn.position = Vector2(100, 100)
|
|
btn.size = Vector2(100, 100)
|
|
|
|
size_changed.connect(func(): title = str(size))
|
|
|
|
|
|
func _ready():
|
|
for scbtn in all_buttons:
|
|
scbtn.connect('start_edit', _on_edit_start.bind(scbtn))
|
|
scbtn.connect('end_edit', _on_edit_end)
|
|
|
|
canceled.connect(_on_cancel)
|
|
|
|
# Sizing this window on different monitors, especially compared to what it
|
|
# looks like if you just run this project is annoying. This is what I came
|
|
# up with after getting annoyed. You probably won't be looking at this
|
|
# very often so it's fine...until it isn't.
|
|
size = Vector2(DisplayServer.screen_get_size()) * Vector2(.5, .8)
|
|
|
|
if(get_parent() == get_tree().root):
|
|
_debug_ready.call_deferred()
|
|
|
|
|
|
|
|
func _cancel_all():
|
|
for scbtn in all_buttons:
|
|
scbtn.cancel()
|
|
|
|
|
|
# ------------
|
|
# Events
|
|
# ------------
|
|
func _on_cancel():
|
|
_cancel_all()
|
|
load_shortcuts()
|
|
|
|
|
|
func _on_edit_start(which):
|
|
for scbtn in all_buttons:
|
|
if(scbtn != which):
|
|
scbtn.disable_set(true)
|
|
scbtn.disable_clear(true)
|
|
|
|
|
|
func _on_edit_end():
|
|
for scbtn in all_buttons:
|
|
scbtn.disable_set(false)
|
|
scbtn.disable_clear(false)
|
|
|
|
|
|
# ------------
|
|
# Public
|
|
# ------------
|
|
func save_shortcuts():
|
|
save_shortcuts_to_file(default_path)
|
|
|
|
|
|
func save_shortcuts_to_file(path):
|
|
var f = ConfigFile.new()
|
|
f.set_value('main', 'panel_button', scbtn_panel.get_shortcut())
|
|
f.set_value('main', 'rerun', scbtn_rerun.get_shortcut())
|
|
f.set_value('main', 'run_all', scbtn_run_all.get_shortcut())
|
|
f.set_value('main', 'run_at_cursor', scbtn_run_at_cursor.get_shortcut())
|
|
f.set_value('main', 'run_current_inner', scbtn_run_current_inner.get_shortcut())
|
|
f.set_value('main', 'run_current_script', scbtn_run_current_script.get_shortcut())
|
|
f.set_value('main', 'run_current_test', scbtn_run_current_test.get_shortcut())
|
|
f.set_value('main', 'toggle_windowed', scbtn_windowed.get_shortcut())
|
|
f.save(path)
|
|
|
|
|
|
func load_shortcuts():
|
|
load_shortcuts_from_file(default_path)
|
|
|
|
|
|
func load_shortcuts_from_file(path):
|
|
var f = ConfigFile.new()
|
|
# as long as this shortcut is never modified, this is fine, otherwise
|
|
# each thing should get its own default instead.
|
|
var empty = Shortcut.new()
|
|
|
|
f.load(path)
|
|
scbtn_panel.set_shortcut(f.get_value('main', 'panel_button', empty))
|
|
scbtn_rerun.set_shortcut(f.get_value('main', 'rerun', empty))
|
|
scbtn_run_all.set_shortcut(f.get_value('main', 'run_all', empty))
|
|
scbtn_run_at_cursor.set_shortcut(f.get_value('main', 'run_at_cursor', empty))
|
|
scbtn_run_current_inner.set_shortcut(f.get_value('main', 'run_current_inner', empty))
|
|
scbtn_run_current_script.set_shortcut(f.get_value('main', 'run_current_script', empty))
|
|
scbtn_run_current_test.set_shortcut(f.get_value('main', 'run_current_test', empty))
|
|
scbtn_windowed.set_shortcut(f.get_value('main', 'toggle_windowed', empty))
|