extends Node2D class GuiHandler: var _gui = null var _gut = null var _ctrls = { btn_continue = null, path_dir = null, path_file = null, prog_script = null, prog_test = null, rtl = null, rtl_bg = null, time_label = null } func _init(gui): _gui = gui # Brute force, but flexible. _ctrls.btn_continue = _get_first_child_named("Continue", _gui) _ctrls.path_dir = _get_first_child_named("Path", _gui) _ctrls.path_file = _get_first_child_named("File", _gui) _ctrls.prog_script = _get_first_child_named("ProgressScript", _gui) _ctrls.prog_test = _get_first_child_named("ProgressTest", _gui) _ctrls.rtl = _get_first_child_named("Output", _gui) _ctrls.rtl_bg = _get_first_child_named("OutputBG", _gui) _ctrls.time_label = _get_first_child_named("TimeLabel", _gui) _ctrls.btn_continue.visible = false _ctrls.btn_continue.pressed.connect(_on_continue_pressed) _ctrls.prog_script.value = 0 _ctrls.prog_test.value = 0 _ctrls.path_dir.text = "" _ctrls.path_file.text = "" _ctrls.time_label.text = "" # ------------------ # Events # ------------------ func _on_continue_pressed(): _ctrls.btn_continue.visible = false _gut.end_teardown_pause() func _on_gut_start_run(): if _ctrls.rtl != null: _ctrls.rtl.clear() set_num_scripts(_gut.get_test_collector().scripts.size()) func _on_gut_end_run(): _ctrls.time_label.text = "" func _on_gut_start_script(script_obj): next_script(script_obj.get_full_name(), script_obj.tests.size()) func _on_gut_end_script(): pass func _on_gut_start_test(test_name): next_test(test_name) func _on_gut_end_test(): pass func _on_gut_start_pause(): pause_before_teardown() func _on_gut_end_pause(): pass # ------------------ # Private # ------------------ func _get_first_child_named(obj_name, parent_obj): if parent_obj == null: return null var kids = parent_obj.get_children() var index = 0 var to_return = null while index < kids.size() and to_return == null: if str(kids[index]).find(str(obj_name, ":")) != -1: to_return = kids[index] else: to_return = _get_first_child_named(obj_name, kids[index]) if to_return == null: index += 1 return to_return # ------------------ # Public # ------------------ func set_num_scripts(val): _ctrls.prog_script.value = 0 _ctrls.prog_script.max_value = val func next_script(path, num_tests): _ctrls.prog_script.value += 1 _ctrls.prog_test.value = 0 _ctrls.prog_test.max_value = num_tests _ctrls.path_dir.text = path.get_base_dir() _ctrls.path_file.text = path.get_file() func next_test(test_name): _ctrls.prog_test.value += 1 func pause_before_teardown(): _ctrls.btn_continue.visible = true func set_gut(g): _gut = g g.start_run.connect(_on_gut_start_run) g.end_run.connect(_on_gut_end_run) g.start_script.connect(_on_gut_start_script) g.end_script.connect(_on_gut_end_script) g.start_test.connect(_on_gut_start_test) g.end_test.connect(_on_gut_end_test) g.start_pause_before_teardown.connect(_on_gut_start_pause) g.end_pause_before_teardown.connect(_on_gut_end_pause) func get_textbox(): return _ctrls.rtl func set_elapsed_time(t): _ctrls.time_label.text = str(t, "s") func set_bg_color(c): _ctrls.rtl_bg.color = c # ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------ var _large_handler = null var _min_handler = null var gut = null: set(val): gut = val _set_gut(val) func _ready(): _large_handler = GuiHandler.new($Large) _min_handler = GuiHandler.new($Min) $Min.visible = false $Large.visible = !$Min.visible func _process(_delta): if gut != null and gut.is_running(): _large_handler.set_elapsed_time(gut.get_elapsed_time()) _min_handler.set_elapsed_time(gut.get_elapsed_time()) func _set_gut(val): _large_handler.set_gut(val) _min_handler.set_gut(val) func get_textbox(): return _large_handler.get_textbox() func set_font_size(new_size): var rtl = _large_handler.get_textbox() if rtl.get("custom_fonts/normal_font") != null: rtl.get("custom_fonts/bold_italics_font").size = new_size rtl.get("custom_fonts/bold_font").size = new_size rtl.get("custom_fonts/italics_font").size = new_size rtl.get("custom_fonts/normal_font").size = new_size func set_font(font_name): pass #_set_all_fonts_in_rtl(_large_handler.get_textbox(), font_name) # Needs rework for 4.0, DynamicFont DNE func _set_font(rtl, font_name, custom_name): pass # if(font_name == null): # rtl.set('custom_fonts/' + custom_name, null) # else: # var dyn_font = DynamicFont.new() # var font_data = DynamicFontData.new() # font_data.font_path = 'res://addons/gut/fonts/' + font_name + '.ttf' # font_data.antialiased = true # dyn_font.font_data = font_data # rtl.set('custom_fonts/' + custom_name, dyn_font) func _set_all_fonts_in_rtl(rtl, base_name): if base_name == "Default": _set_font(rtl, null, "normal_font") _set_font(rtl, null, "bold_font") _set_font(rtl, null, "italics_font") _set_font(rtl, null, "bold_italics_font") else: _set_font(rtl, base_name + "-Regular", "normal_font") _set_font(rtl, base_name + "-Bold", "bold_font") _set_font(rtl, base_name + "-Italic", "italics_font") _set_font(rtl, base_name + "-BoldItalic", "bold_italics_font") func set_default_font_color(color): _large_handler.get_textbox().set("custom_colors/default_color", color) func set_background_color(color): _large_handler.set_bg_color(color)