mirror of
https://github.com/lihop/godot-xterm.git
synced 2024-11-25 02:30:27 +01:00
b5d3c6c9a5
Copied from Gut repo godot_4 branch commit: ba19a4c1b6f88160641a67a39729144046c6391f
225 lines
5.4 KiB
GDScript
225 lines
5.4 KiB
GDScript
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)
|