113 lines
4.5 KiB
GDScript
113 lines
4.5 KiB
GDScript
@tool
|
|
extends HBoxContainer
|
|
|
|
signal run_overall_pressed(debug :bool)
|
|
signal run_pressed(debug :bool)
|
|
signal stop_pressed()
|
|
|
|
@onready var debug_icon_image :Texture2D = load("res://addons/gdUnit4/src/ui/assets/PlayDebug.svg")
|
|
@onready var overall_icon_image :Texture2D = load("res://addons/gdUnit4/src/ui/assets/PlayOverall.svg")
|
|
@onready var _version_label := %version
|
|
@onready var _button_wiki := %help
|
|
@onready var _tool_button := %tool
|
|
@onready var _button_run_overall :Button = %"run-overall"
|
|
@onready var _button_run := %run
|
|
@onready var _button_run_debug := %debug
|
|
@onready var _button_stop := %stop
|
|
|
|
|
|
const SETTINGS_SHORTCUT_MAPPING := {
|
|
GdUnitSettings.SHORTCUT_INSPECTOR_RERUN_TEST : GdUnitShortcut.ShortCut.RERUN_TESTS,
|
|
GdUnitSettings.SHORTCUT_INSPECTOR_RERUN_TEST_DEBUG : GdUnitShortcut.ShortCut.RERUN_TESTS_DEBUG,
|
|
GdUnitSettings.SHORTCUT_INSPECTOR_RUN_TEST_OVERALL : GdUnitShortcut.ShortCut.RUN_TESTS_OVERALL,
|
|
GdUnitSettings.SHORTCUT_INSPECTOR_RUN_TEST_STOP : GdUnitShortcut.ShortCut.STOP_TEST_RUN,
|
|
}
|
|
|
|
|
|
func _ready():
|
|
GdUnit4Version.init_version_label(_version_label)
|
|
var command_handler := GdUnitCommandHandler.instance()
|
|
run_pressed.connect(command_handler._on_run_pressed)
|
|
run_overall_pressed.connect(command_handler._on_run_overall_pressed)
|
|
stop_pressed.connect(command_handler._on_stop_pressed)
|
|
command_handler.gdunit_runner_start.connect(_on_gdunit_runner_start)
|
|
command_handler.gdunit_runner_stop.connect(_on_gdunit_runner_stop)
|
|
GdUnitSignals.instance().gdunit_settings_changed.connect(_on_gdunit_settings_changed)
|
|
init_buttons()
|
|
init_shortcuts(command_handler)
|
|
|
|
|
|
func init_buttons() -> void:
|
|
var editor :EditorPlugin = EditorPlugin.new()
|
|
var editior_control := editor.get_editor_interface().get_base_control()
|
|
_button_run_overall.icon = overall_icon_image
|
|
_button_run_overall.visible = GdUnitSettings.is_inspector_toolbar_button_show()
|
|
_button_run.icon = GodotVersionFixures.get_icon(editior_control, "Play")
|
|
_button_run_debug.icon = debug_icon_image
|
|
_button_stop.icon = GodotVersionFixures.get_icon(editior_control, "Stop")
|
|
_tool_button.icon = GodotVersionFixures.get_icon(editior_control, "Tools")
|
|
_button_wiki.icon = GodotVersionFixures.get_icon(editior_control, "HelpSearch")
|
|
|
|
|
|
func init_shortcuts(command_handler :GdUnitCommandHandler) -> void:
|
|
_button_run.shortcut = command_handler.get_shortcut(GdUnitShortcut.ShortCut.RERUN_TESTS)
|
|
_button_run_overall.shortcut = command_handler.get_shortcut(GdUnitShortcut.ShortCut.RUN_TESTS_OVERALL)
|
|
_button_run_debug.shortcut = command_handler.get_shortcut(GdUnitShortcut.ShortCut.RERUN_TESTS_DEBUG)
|
|
_button_stop.shortcut = command_handler.get_shortcut(GdUnitShortcut.ShortCut.STOP_TEST_RUN)
|
|
# register for shortcut changes
|
|
GdUnitSignals.instance().gdunit_settings_changed.connect(_on_settings_changed.bind(command_handler))
|
|
|
|
|
|
func _on_runoverall_pressed(debug := false):
|
|
run_overall_pressed.emit(debug)
|
|
|
|
|
|
func _on_run_pressed(debug := false):
|
|
run_pressed.emit(debug)
|
|
|
|
|
|
func _on_stop_pressed():
|
|
stop_pressed.emit()
|
|
|
|
|
|
func _on_gdunit_runner_start():
|
|
_button_run_overall.disabled = true
|
|
_button_run.disabled = true
|
|
_button_run_debug.disabled = true
|
|
_button_stop.disabled = false
|
|
|
|
|
|
func _on_gdunit_runner_stop(_client_id :int):
|
|
_button_run_overall.disabled = false
|
|
_button_run.disabled = false
|
|
_button_run_debug.disabled = false
|
|
_button_stop.disabled = true
|
|
|
|
|
|
func _on_gdunit_settings_changed(_property :GdUnitProperty):
|
|
_button_run_overall.visible = GdUnitSettings.is_inspector_toolbar_button_show()
|
|
|
|
|
|
func _on_wiki_pressed():
|
|
OS.shell_open("https://mikeschulze.github.io/gdUnit4/")
|
|
|
|
|
|
func _on_btn_tool_pressed():
|
|
var tool_popup = load("res://addons/gdUnit4/src/ui/settings/GdUnitSettingsDialog.tscn").instantiate()
|
|
get_parent_control().add_child(tool_popup)
|
|
|
|
|
|
func _on_settings_changed(property :GdUnitProperty, command_handler :GdUnitCommandHandler):
|
|
# needs to wait a frame to be command handler notified first for settings changes
|
|
await get_tree().process_frame
|
|
if SETTINGS_SHORTCUT_MAPPING.has(property.name()):
|
|
var shortcut :GdUnitShortcut.ShortCut = SETTINGS_SHORTCUT_MAPPING.get(property.name(), GdUnitShortcut.ShortCut.NONE)
|
|
match shortcut:
|
|
GdUnitShortcut.ShortCut.RERUN_TESTS:
|
|
_button_run.shortcut = command_handler.get_shortcut(shortcut)
|
|
GdUnitShortcut.ShortCut.RUN_TESTS_OVERALL:
|
|
_button_run_overall.shortcut = command_handler.get_shortcut(shortcut)
|
|
GdUnitShortcut.ShortCut.RERUN_TESTS_DEBUG:
|
|
_button_run_debug.shortcut = command_handler.get_shortcut(shortcut)
|
|
GdUnitShortcut.ShortCut.STOP_TEST_RUN:
|
|
_button_stop.shortcut = command_handler.get_shortcut(shortcut)
|