diff options
| author | Sophia Pearson <codergal89@gmail.com> | 2022-10-03 22:22:50 +0200 |
|---|---|---|
| committer | Sophia Pearson <codergal89@gmail.com> | 2022-10-04 22:18:18 +0200 |
| commit | e127ad39e742396030352240d829bc903b1d4464 (patch) | |
| tree | 10cc21d70bf13181aef7c8ad0344077ff63579a3 /addons/gut/GutScene.gd | |
| parent | ddbb045f6387a8ba23b1210b27a745516a387a52 (diff) | |
| download | texty-e127ad39e742396030352240d829bc903b1d4464.tar.xz texty-e127ad39e742396030352240d829bc903b1d4464.zip | |
godot: inital Godot 4 migration
Diffstat (limited to 'addons/gut/GutScene.gd')
| -rw-r--r-- | addons/gut/GutScene.gd | 513 |
1 files changed, 0 insertions, 513 deletions
diff --git a/addons/gut/GutScene.gd b/addons/gut/GutScene.gd deleted file mode 100644 index 2183a81..0000000 --- a/addons/gut/GutScene.gd +++ /dev/null @@ -1,513 +0,0 @@ -extends Panel - -onready var _script_list = $ScriptsList -onready var _nav_container = $VBox/BottomPanel/VBox/HBox/Navigation -onready var _nav = { - container = _nav_container, - prev = _nav_container.get_node('VBox/HBox/Previous'), - next = _nav_container.get_node('VBox/HBox/Next'), - run = _nav_container.get_node('VBox/HBox/Run'), - current_script = _nav_container.get_node('VBox/CurrentScript'), - run_single = _nav_container.get_node('VBox/HBox/RunSingleScript') -} - -onready var _progress_container = $VBox/BottomPanel/VBox/HBox/Progress -onready var _progress = { - script = _progress_container.get_node("ScriptProgress"), - script_xy = _progress_container.get_node("ScriptProgress/xy"), - test = _progress_container.get_node("TestProgress"), - test_xy = _progress_container.get_node("TestProgress/xy") -} -onready var _summary = { - control = $VBox/TitleBar/HBox/Summary, - failing = $VBox/TitleBar/HBox/Summary/Failing, # defunct? - passing = $VBox/TitleBar/HBox/Summary/Passing, # defunct? - asserts = $VBox/TitleBar/HBox/Summary/AssertCount, - fail_count = 0, # defunct? - pass_count = 0, # defunct? - test_count = 0, - passing_test_count = 0 -} - -onready var _extras = $ExtraOptions -onready var _ignore_pauses = $ExtraOptions/IgnorePause -onready var _continue_button = $VBox/BottomPanel/VBox/HBox/Continue/Continue -onready var _text_box = $VBox/TextDisplay/RichTextLabel -onready var _text_box_container = $VBox/TextDisplay -onready var _log_level_slider = $VBox/BottomPanel/VBox/HBox2/LogLevelSlider -onready var _resize_handle = $ResizeHandle -onready var _current_script = $VBox/BottomPanel/VBox/HBox2/CurrentScriptLabel -onready var _title_replacement = $VBox/TitleBar/HBox/TitleReplacement - -onready var _titlebar = { - bar = $VBox/TitleBar, - time = $VBox/TitleBar/HBox/Time, - label = $VBox/TitleBar/HBox/Title -} - -onready var _user_files = $UserFileViewer - -var _mouse = { - down = false, - in_title = false, - down_pos = null, - in_handle = false -} - -var _is_running = false -var _start_time = 0.0 -var _time = 0.0 - -const DEFAULT_TITLE = 'GUT' -var _pre_maximize_rect = null -var _font_size = 20 -var _compact_mode = false - -var min_sizes = { - compact = Vector2(330, 100), - full = Vector2(740, 300), -} - -signal end_pause -signal ignore_pause -signal log_level_changed -signal run_script -signal run_single_script - -func _ready(): - if(Engine.editor_hint): - return - - _current_script.text = '' - _pre_maximize_rect = get_rect() - _hide_scripts() - _update_controls() - _nav.current_script.set_text("No scripts available") - set_title() - clear_summary() - _titlebar.time.set_text("t: 0.0") - - _extras.visible = false - update() - - set_font_size(_font_size) - set_font('CourierPrime') - - _user_files.set_position(Vector2(10, 30)) - -func elapsed_time_as_str(): - return str("%.1f" % (_time / 1000.0), 's') - -func _process(_delta): - if(_is_running): - _time = OS.get_ticks_msec() - _start_time - _titlebar.time.set_text(str('t: ', elapsed_time_as_str())) - -func _draw(): # needs get_size() - # Draw the lines in the corner to show where you can - # drag to resize the dialog - var grab_margin = 3 - var line_space = 3 - var grab_line_color = Color(.4, .4, .4) - if(_resize_handle.visible): - for i in range(1, 10): - var x = rect_size - Vector2(i * line_space, grab_margin) - var y = rect_size - Vector2(grab_margin, i * line_space) - draw_line(x, y, grab_line_color, 1, true) - -func _on_Maximize_draw(): - # draw the maximize square thing. - var btn = $VBox/TitleBar/HBox/Maximize - btn.set_text('') - var w = btn.get_size().x - var h = btn.get_size().y - btn.draw_rect(Rect2(0, 2, w, h -2), Color(0, 0, 0, 1)) - btn.draw_rect(Rect2(2, 6, w - 4, h - 8), Color(1,1,1,1)) - -func _on_ShowExtras_draw(): - var btn = $VBox/BottomPanel/VBox/HBox/Continue/ShowExtras - btn.set_text('') - var start_x = 20 - var start_y = 15 - var pad = 5 - var color = Color(.1, .1, .1, 1) - var width = 2 - for i in range(3): - var y = start_y + pad * i - btn.draw_line(Vector2(start_x, y), Vector2(btn.get_size().x - start_x, y), color, width, true) - -# #################### -# GUI Events -# #################### -func _on_Run_pressed(): - _run_mode() - emit_signal('run_script', get_selected_index()) - -func _on_CurrentScript_pressed(): - _toggle_scripts() - -func _on_Previous_pressed(): - _select_script(get_selected_index() - 1) - -func _on_Next_pressed(): - _select_script(get_selected_index() + 1) - -func _on_LogLevelSlider_value_changed(_value): - emit_signal('log_level_changed', _log_level_slider.value) - -func _on_Continue_pressed(): - _continue_button.disabled = true - emit_signal('end_pause') - -func _on_IgnorePause_pressed(): - var checked = _ignore_pauses.is_pressed() - emit_signal('ignore_pause', checked) - if(checked): - emit_signal('end_pause') - _continue_button.disabled = true - -func _on_RunSingleScript_pressed(): - _run_mode() - emit_signal('run_single_script', get_selected_index()) - -func _on_ScriptsList_item_selected(index): - var tmr = $ScriptsList/DoubleClickTimer - if(!tmr.is_stopped()): - _run_mode() - emit_signal('run_single_script', get_selected_index()) - tmr.stop() - else: - tmr.start() - - _select_script(index) - -func _on_TitleBar_mouse_entered(): - _mouse.in_title = true - -func _on_TitleBar_mouse_exited(): - _mouse.in_title = false - -func _input(event): - if(event is InputEventMouseButton): - if(event.button_index == 1): - _mouse.down = event.pressed - if(_mouse.down): - _mouse.down_pos = event.position - - if(_mouse.in_title): - if(event is InputEventMouseMotion and _mouse.down): - set_position(get_position() + (event.position - _mouse.down_pos)) - _mouse.down_pos = event.position - _pre_maximize_rect = get_rect() - - if(_mouse.in_handle): - if(event is InputEventMouseMotion and _mouse.down): - var new_size = rect_size + event.position - _mouse.down_pos - var new_mouse_down_pos = event.position - rect_size = new_size - _mouse.down_pos = new_mouse_down_pos - _pre_maximize_rect = get_rect() - -func _on_ResizeHandle_mouse_entered(): - _mouse.in_handle = true - -func _on_ResizeHandle_mouse_exited(): - _mouse.in_handle = false - -func _on_RichTextLabel_gui_input(ev): - pass - # leaving this b/c it is wired up and might have to send - # more signals through - -func _on_Copy_pressed(): - OS.clipboard = _text_box.text - -func _on_ShowExtras_toggled(button_pressed): - _extras.visible = button_pressed - -func _on_Maximize_pressed(): - if(get_rect() == _pre_maximize_rect): - compact_mode(false) - maximize() - else: - compact_mode(false) - rect_size = _pre_maximize_rect.size - rect_position = _pre_maximize_rect.position -func _on_Minimize_pressed(): - - compact_mode(!_compact_mode) - - -func _on_Minimize_draw(): - # draw the maximize square thing. - var btn = $VBox/TitleBar/HBox/Minimize - btn.set_text('') - var w = btn.get_size().x - var h = btn.get_size().y - btn.draw_rect(Rect2(0, h-3, w, 3), Color(0, 0, 0, 1)) - -func _on_UserFiles_pressed(): - _user_files.show_open() - - -# #################### -# Private -# #################### -func _run_mode(is_running=true): - if(is_running): - _start_time = OS.get_ticks_msec() - _time = 0.0 - clear_summary() - _is_running = is_running - - _hide_scripts() - _nav.prev.disabled = is_running - _nav.next.disabled = is_running - _nav.run.disabled = is_running - _nav.current_script.disabled = is_running - _nav.run_single.disabled = is_running - -func _select_script(index): - var text = _script_list.get_item_text(index) - var max_len = 50 - if(text.length() > max_len): - text = '...' + text.right(text.length() - (max_len - 5)) - _nav.current_script.set_text(text) - _script_list.select(index) - _update_controls() - -func _toggle_scripts(): - if(_script_list.visible): - _hide_scripts() - else: - _show_scripts() - -func _show_scripts(): - _script_list.show() - -func _hide_scripts(): - _script_list.hide() - -func _update_controls(): - var is_empty = _script_list.get_selected_items().size() == 0 - if(is_empty): - _nav.next.disabled = true - _nav.prev.disabled = true - else: - var index = get_selected_index() - _nav.prev.disabled = index <= 0 - _nav.next.disabled = index >= _script_list.get_item_count() - 1 - - _nav.run.disabled = is_empty - _nav.current_script.disabled = is_empty - _nav.run_single.disabled = is_empty - -func _update_summary(): - if(!_summary): - return - - var total = _summary.fail_count + _summary.pass_count - _summary.control.visible = !total == 0 - # this now shows tests but I didn't rename everything - _summary.asserts.text = str(_summary.passing_test_count, '/', _summary.test_count, ' tests passed') -# #################### -# Public -# #################### -func run_mode(is_running=true): - _run_mode(is_running) - -func set_scripts(scripts): - _script_list.clear() - for i in range(scripts.size()): - _script_list.add_item(scripts[i]) - _select_script(0) - _update_controls() - -func select_script(index): - _select_script(index) - -func get_selected_index(): - return _script_list.get_selected_items()[0] - -func get_log_level(): - return _log_level_slider.value - -func set_log_level(value): - var new_value = value - if(new_value == null): - new_value = 0 - # !! For some reason, _log_level_slider was null, but this wasn't, so - # here's another hardcoded node path. - $VBox/BottomPanel/VBox/HBox2/LogLevelSlider.value = new_value - -func set_ignore_pause(should): - _ignore_pauses.pressed = should - -func get_ignore_pause(): - return _ignore_pauses.pressed - -func get_text_box(): - # due to some timing issue, this cannot return _text_box but can return - # this. - return $VBox/TextDisplay/RichTextLabel - -func end_run(): - _run_mode(false) - _update_controls() - -func set_progress_script_max(value): - var max_val = max(value, 1) - _progress.script.set_max(max_val) - _progress.script_xy.set_text(str('0/', max_val)) - -func set_progress_script_value(value): - _progress.script.set_value(value) - var txt = str(value, '/', _progress.test.get_max()) - _progress.script_xy.set_text(txt) - -func set_progress_test_max(value): - var max_val = max(value, 1) - _progress.test.set_max(max_val) - _progress.test_xy.set_text(str('0/', max_val)) - -func set_progress_test_value(value): - _progress.test.set_value(value) - var txt = str(value, '/', _progress.test.get_max()) - _progress.test_xy.set_text(txt) - -func clear_progress(): - _progress.test.set_value(0) - _progress.script.set_value(0) - -func pause(): - _continue_button.disabled = false - -func set_title(title=null): - if(title == null): - _titlebar.label.set_text(DEFAULT_TITLE) - else: - _titlebar.label.set_text(title) - -func add_passing(amount=1): - if(!_summary): - return - _summary.pass_count += amount - _update_summary() - -func add_failing(amount=1): - if(!_summary): - return - _summary.fail_count += amount - _update_summary() - -func add_test(passing): - if(!_summary): - return - _summary.test_count += 1 - if(passing): - _summary.passing_test_count += 1 - _update_summary() - -func clear_summary(): - _summary.fail_count = 0 - _summary.pass_count = 0 - _update_summary() - -func maximize(): - if(is_inside_tree()): - var vp_size_offset = get_tree().root.get_viewport().get_visible_rect().size - rect_size = vp_size_offset / get_scale() - set_position(Vector2(0, 0)) - -func clear_text(): - _text_box.bbcode_text = '' - -func scroll_to_bottom(): - pass - #_text_box.cursor_set_line(_gui.get_text_box().get_line_count()) - -func _set_font_size_for_rtl(rtl, new_size): - 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_fonts_for_rtl(rtl, base_font_name): - pass - - -func set_font_size(new_size): - _font_size = new_size - _set_font_size_for_rtl(_text_box, new_size) - _set_font_size_for_rtl(_user_files.get_rich_text_label(), new_size) - - -func _set_font(rtl, font_name, custom_name): - 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_ftl(ftl, base_name): - if(base_name == 'Default'): - _set_font(ftl, null, 'normal_font') - _set_font(ftl, null, 'bold_font') - _set_font(ftl, null, 'italics_font') - _set_font(ftl, null, 'bold_italics_font') - else: - _set_font(ftl, base_name + '-Regular', 'normal_font') - _set_font(ftl, base_name + '-Bold', 'bold_font') - _set_font(ftl, base_name + '-Italic', 'italics_font') - _set_font(ftl, base_name + '-BoldItalic', 'bold_italics_font') - set_font_size(_font_size) - -func set_font(base_name): - _set_all_fonts_in_ftl(_text_box, base_name) - _set_all_fonts_in_ftl(_user_files.get_rich_text_label(), base_name) - -func set_default_font_color(color): - _text_box.set('custom_colors/default_color', color) - -func set_background_color(color): - _text_box_container.color = color - -func get_waiting_label(): - return $VBox/TextDisplay/WaitingLabel - -func compact_mode(should): - if(_compact_mode == should): - return - - _compact_mode = should - _text_box_container.visible = !should - _nav.container.visible = !should - _log_level_slider.visible = !should - $VBox/BottomPanel/VBox/HBox/Continue/ShowExtras.visible = !should - _titlebar.label.visible = !should - _resize_handle.visible = !should - _current_script.visible = !should - _title_replacement.visible = should - - if(should): - rect_min_size = min_sizes.compact - rect_size = rect_min_size - else: - rect_min_size = min_sizes.full - rect_size = min_sizes.full - - goto_bottom_right_corner() - - -func set_script_path(text): - _current_script.text = text - - -func goto_bottom_right_corner(): - rect_position = get_tree().root.get_viewport().get_visible_rect().size - rect_size |
