From 6f691d66698516bd1573c7a8b253bca5cdb99514 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 23 Jul 2026 19:42:32 +0100 Subject: [PATCH 01/53] refactor binary path logic into own method --- addons/GDQuest_GDScript_formatter/plugin.gd | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index f345a0b..9e828fb 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -62,6 +62,8 @@ var _editorconfig_last_modified_time := -1 # on save rule here so users can enable it selectively for specific folders. var _editorconfig_format_on_save_rules: Array[Dictionary] = [] +# Used to detect the formatter +const FORMATTER_BINARY_NAME = "gdscript-formatter" func _init() -> void: for setting: String in DEFAULT_SETTINGS.keys(): @@ -373,6 +375,14 @@ func has_command(command: String) -> bool: var exit_code := OS.execute(command, ["--version"], output, true) return exit_code == OK +func _get_binary_path() -> String: + var binary_name := FORMATTER_BINARY_NAME + + if OS.get_name().to_lower().contains("windows"): + binary_name = binary_name + ".exe" + + return formatter_cache_dir.path_join(binary_name) + func is_formatter_available() -> bool: if _has_formatter_command: @@ -382,18 +392,12 @@ func is_formatter_available() -> bool: func is_formatter_installed_locally() -> bool: - var binary_name := "gdscript-formatter" - if OS.get_name().to_lower().contains("windows"): - binary_name = "gdscript-formatter.exe" - var binary_path := formatter_cache_dir.path_join(binary_name) + var binary_path = _get_binary_path() return FileAccess.file_exists(binary_path) func uninstall_formatter() -> void: - var binary_name := "gdscript-formatter" - if OS.get_name().to_lower().contains("windows"): - binary_name = "gdscript-formatter.exe" - var binary_path := formatter_cache_dir.path_join(binary_name) + var binary_path = _get_binary_path() if FileAccess.file_exists(binary_path): DirAccess.remove_absolute(binary_path) From c82ed2f0506b7447fea19ffe36e62e8765713402 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 23 Jul 2026 19:43:42 +0100 Subject: [PATCH 02/53] add method to get the formatter version --- addons/GDQuest_GDScript_formatter/plugin.gd | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 9e828fb..1c18206 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -383,6 +383,30 @@ func _get_binary_path() -> String: return formatter_cache_dir.path_join(binary_name) +func _parse_formatter_version(version: Array) -> String: + var version_raw: String = "" + + for index in version.size(): + version_raw += version[index] + + if version_raw.begins_with(FORMATTER_BINARY_NAME): + version_raw = version_raw.trim_prefix(FORMATTER_BINARY_NAME) + + return version_raw.strip_edges() + +func get_formatter_version(): + var binary_path = _get_binary_path() + + if not FileAccess.file_exists(binary_path): + return + + var version_stdout: Array = [] + var exit_code = OS.execute(binary_path, ["--version"], version_stdout) + + if not exit_code == OK: + return + + return _parse_formatter_version(version_stdout) func is_formatter_available() -> bool: if _has_formatter_command: From 0e4367d366e6a50d12f0f9692eaa62f2b4754e7a Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 23 Jul 2026 19:46:34 +0100 Subject: [PATCH 03/53] Merge branch 'GDQuest:main' into greeter From 40ae1943e4270cea3d5c40a1b9af83c2e76a2fd0 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 23 Jul 2026 20:27:29 +0100 Subject: [PATCH 04/53] add method to get addon version --- addons/GDQuest_GDScript_formatter/plugin.gd | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 1c18206..0728d50 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -408,6 +408,20 @@ func get_formatter_version(): return _parse_formatter_version(version_stdout) +func get_addon_version(): + var menu = FormatterMenu.new() + print(menu.get_path()) + + var plugin_config = ConfigFile.new() + var config_loaded = plugin_config.load(get_script().resource_path.get_base_dir() + "/plugin.cfg") + + if not config_loaded == OK: + push_error("Unable to load plugin config") + + return + + return plugin_config.get_value("plugin", "version") + func is_formatter_available() -> bool: if _has_formatter_command: return true From 302c730e7918bb99abfe05975e4f5c5ec0d44899 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 23 Jul 2026 23:06:32 +0100 Subject: [PATCH 05/53] add branding assets for panel --- .../images/gdquest_logo.svg | 27 ++++++++++++ .../images/gdquest_logo.svg.import | 43 +++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg create mode 100644 addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg.import diff --git a/addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg b/addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg new file mode 100644 index 0000000..6e5d120 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg @@ -0,0 +1,27 @@ + + \ No newline at end of file diff --git a/addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg.import b/addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg.import new file mode 100644 index 0000000..490c95c --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cp5vhsg54dmt5" +path="res://.godot/imported/gdquest_logo.svg-3d69df92bc1269a9cd56d21bfb4e3dfd.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg" +dest_files=["res://.godot/imported/gdquest_logo.svg-3d69df92bc1269a9cd56d21bfb4e3dfd.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false From e585330d4577df569a194d6ac23deeebf20ace37 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Fri, 24 Jul 2026 23:02:53 +0100 Subject: [PATCH 06/53] add download icon --- .../images/icons/download.svg | 1 + .../images/icons/download.svg.import | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/download.svg create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/download.svg.import diff --git a/addons/GDQuest_GDScript_formatter/images/icons/download.svg b/addons/GDQuest_GDScript_formatter/images/icons/download.svg new file mode 100644 index 0000000..26bf0e2 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/GDQuest_GDScript_formatter/images/icons/download.svg.import b/addons/GDQuest_GDScript_formatter/images/icons/download.svg.import new file mode 100644 index 0000000..ef30e79 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/download.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://pfs8d8babvcu" +path="res://.godot/imported/download.svg-d338a54db5cab704099d1a1b2a18a684.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/GDQuest_GDScript_formatter/images/icons/download.svg" +dest_files=["res://.godot/imported/download.svg-d338a54db5cab704099d1a1b2a18a684.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false From 1a198b928ed8e2bbd1b42256b281cedfe7d8780c Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Fri, 24 Jul 2026 23:03:44 +0100 Subject: [PATCH 07/53] add basic greeter ui first version is limited to just showing addon and formatter versions --- .../editor/greeter.gd | 21 +++ .../editor/greeter.gd.uid | 1 + .../editor/greeter.tscn | 143 ++++++++++++++++++ 3 files changed, 165 insertions(+) create mode 100644 addons/GDQuest_GDScript_formatter/editor/greeter.gd create mode 100644 addons/GDQuest_GDScript_formatter/editor/greeter.gd.uid create mode 100644 addons/GDQuest_GDScript_formatter/editor/greeter.tscn diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd new file mode 100644 index 0000000..e096cb0 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -0,0 +1,21 @@ +@tool +class_name Greeter +extends Node + +@onready var _addon_version_label_value: Label = $Padding/Layout/Versions/Addon/Layout/Meta/Value +@onready var _formatter_version_value: Label = $Padding/Layout/Versions/Formatter/Layout/Meta/Value + +var _addon_version: String = "" +var _formatter_version: String = "" + +func _ready() -> void: + _addon_version_label_value.text = _addon_version + _formatter_version_value.text = _formatter_version + +func set_addon_version(version: String) -> void: + _addon_version = version + + +func set_formatter_version(version: String) -> void: + _formatter_version = version + diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd.uid b/addons/GDQuest_GDScript_formatter/editor/greeter.gd.uid new file mode 100644 index 0000000..386254a --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd.uid @@ -0,0 +1 @@ +uid://chtdytdwey3un diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn new file mode 100644 index 0000000..4d14f29 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -0,0 +1,143 @@ +[gd_scene format=3 uid="uid://2ffo6diluqkm"] + +[ext_resource type="Script" uid="uid://chtdytdwey3un" path="res://addons/GDQuest_GDScript_formatter/editor/greeter.gd" id="1_cku6i"] +[ext_resource type="Texture2D" uid="uid://cp5vhsg54dmt5" path="res://addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg" id="1_hq2xi"] +[ext_resource type="Texture2D" uid="uid://pfs8d8babvcu" path="res://addons/GDQuest_GDScript_formatter/images/icons/download.svg" id="3_cku6i"] + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cku6i"] +content_margin_left = 16.0 +content_margin_top = 8.0 +content_margin_right = 16.0 +content_margin_bottom = 8.0 +bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) +corner_radius_top_left = 8 +corner_radius_bottom_left = 8 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hq2xi"] +content_margin_left = 16.0 +content_margin_top = 8.0 +content_margin_right = 16.0 +content_margin_bottom = 8.0 +bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 + +[node name="Greeter" type="PopupPanel" unique_id=1454134907] +transparent_bg = false +oversampling_override = 1.0 +title = "GDScript Formatter" +initial_position = 1 +size = Vector2i(479, 219) +visible = true +borderless = false +always_on_top = true +transparent = false +keep_title_visible = true +script = ExtResource("1_cku6i") + +[node name="Padding" type="MarginContainer" parent="." unique_id=83505692] +offset_left = 12.0 +offset_top = 12.0 +offset_right = 467.0 +offset_bottom = 207.0 +theme_override_constants/margin_left = 8 +theme_override_constants/margin_top = 8 +theme_override_constants/margin_right = 8 +theme_override_constants/margin_bottom = 8 + +[node name="Layout" type="VBoxContainer" parent="Padding" unique_id=508597381] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_constants/separation = 16 + +[node name="Heading" type="VBoxContainer" parent="Padding/Layout" unique_id=1777254668] +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="Branding" type="CenterContainer" parent="Padding/Layout/Heading" unique_id=373074182] +layout_mode = 2 + +[node name="Logo" type="TextureRect" parent="Padding/Layout/Heading/Branding" unique_id=859651745] +layout_mode = 2 +texture = ExtResource("1_hq2xi") +stretch_mode = 4 + +[node name="Description" type="Label" parent="Padding/Layout/Heading" unique_id=1391782465] +layout_mode = 2 +size_flags_vertical = 0 +text = "A faster code formatter for GDScript and Godot 4" +horizontal_alignment = 1 +vertical_alignment = 1 + +[node name="Versions" type="HBoxContainer" parent="Padding/Layout" unique_id=215688731] +layout_mode = 2 +size_flags_vertical = 0 +theme_override_constants/separation = 1 + +[node name="Addon" type="PanelContainer" parent="Padding/Layout/Versions" unique_id=1266364516] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_cku6i") + +[node name="Layout" type="HBoxContainer" parent="Padding/Layout/Versions/Addon" unique_id=1478601450] +layout_mode = 2 +theme_override_constants/separation = 16 + +[node name="Meta" type="VBoxContainer" parent="Padding/Layout/Versions/Addon/Layout" unique_id=764178420] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 + +[node name="Title" type="Label" parent="Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1563506712] +layout_mode = 2 +size_flags_vertical = 2 +theme_type_variation = &"HeaderMedium" +text = "Addon Version" + +[node name="Value" type="Label" parent="Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] +layout_mode = 2 +size_flags_vertical = 2 +text = "0.0.0" + +[node name="Button" type="Button" parent="Padding/Layout/Versions/Addon/Layout" unique_id=1381876748] +layout_mode = 2 +size_flags_vertical = 4 +theme_override_constants/icon_max_width = 18 +disabled = true +icon = ExtResource("3_cku6i") +icon_alignment = 1 + +[node name="Formatter" type="PanelContainer" parent="Padding/Layout/Versions" unique_id=1351105920] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_hq2xi") + +[node name="Layout" type="HBoxContainer" parent="Padding/Layout/Versions/Formatter" unique_id=185289625] +layout_mode = 2 +theme_override_constants/separation = 16 + +[node name="Meta" type="VBoxContainer" parent="Padding/Layout/Versions/Formatter/Layout" unique_id=1585824214] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 4 + +[node name="Title" type="Label" parent="Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=265656052] +layout_mode = 2 +size_flags_vertical = 3 +theme_type_variation = &"HeaderMedium" +text = "Formatter Version" + +[node name="Value" type="Label" parent="Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] +layout_mode = 2 +size_flags_vertical = 2 +text = "0.0.0" + +[node name="DownloadButton" type="Button" parent="Padding/Layout/Versions/Formatter/Layout" unique_id=1459022472] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +theme_override_constants/icon_max_width = 18 +disabled = true +icon = ExtResource("3_cku6i") +icon_alignment = 1 From 03761faefccfc0933e99f41cd671f1f499a78e13 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Fri, 24 Jul 2026 23:04:17 +0100 Subject: [PATCH 08/53] wire up greeter ui to show when addon is enabled --- addons/GDQuest_GDScript_formatter/plugin.gd | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 0728d50..4cb8d54 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -10,6 +10,7 @@ extends EditorPlugin const FormatterInstaller = preload("install_and_update.gd") const FormatterMenu = preload("menu.gd") +const GreeterPanel = preload("editor/greeter.tscn") const EDITOR_SETTINGS_CATEGORY = "gdquest_gdscript_formatter/" const SETTING_FORMAT_ON_SAVE = "format_on_save" @@ -121,6 +122,20 @@ func _enter_tree() -> void: update_shortcut() resource_saved.connect(_on_resource_saved) + + _show_greeter() + + +func _show_greeter() -> void: + var greeter_panel = GreeterPanel.instantiate() as Greeter + var addon_version = get_addon_version() + var formatter_version = get_formatter_version() + + add_child(greeter_panel) + + greeter_panel.popup_centered() + greeter_panel.set_addon_version(addon_version) + greeter_panel.set_formatter_version(formatter_version) func _exit_tree() -> void: From 7ed6319dca3e578f1e0df6f638e0a7b2c751dca0 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sat, 25 Jul 2026 08:04:47 +0100 Subject: [PATCH 09/53] add default text for versions --- addons/GDQuest_GDScript_formatter/editor/greeter.gd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index e096cb0..bb71731 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -5,8 +5,8 @@ extends Node @onready var _addon_version_label_value: Label = $Padding/Layout/Versions/Addon/Layout/Meta/Value @onready var _formatter_version_value: Label = $Padding/Layout/Versions/Formatter/Layout/Meta/Value -var _addon_version: String = "" -var _formatter_version: String = "" +var _addon_version: String = "0.0.0" +var _formatter_version: String = "0.0.0" func _ready() -> void: _addon_version_label_value.text = _addon_version From 87a111a07fda8705d6f8409127ca342bef1d33db Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sat, 25 Jul 2026 08:05:33 +0100 Subject: [PATCH 10/53] add tooltip to download buttons --- addons/GDQuest_GDScript_formatter/editor/greeter.tscn | 2 ++ 1 file changed, 2 insertions(+) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 4d14f29..f3df1cc 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -103,6 +103,7 @@ text = "0.0.0" [node name="Button" type="Button" parent="Padding/Layout/Versions/Addon/Layout" unique_id=1381876748] layout_mode = 2 size_flags_vertical = 4 +tooltip_text = "Download update" theme_override_constants/icon_max_width = 18 disabled = true icon = ExtResource("3_cku6i") @@ -137,6 +138,7 @@ text = "0.0.0" layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 +tooltip_text = "Download update" theme_override_constants/icon_max_width = 18 disabled = true icon = ExtResource("3_cku6i") From f100c1cbcd8264a3b785231e78cf42126adede8c Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sat, 25 Jul 2026 12:16:39 +0100 Subject: [PATCH 11/53] only show greeter when addon is enabled --- addons/GDQuest_GDScript_formatter/plugin.gd | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 4cb8d54..0614ad3 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -86,6 +86,10 @@ func _init() -> void: set_editor_setting(SETTING_SHORTCUT, shortcut) +func _enable_plugin() -> void: + _show_greeter() + + func _enter_tree() -> void: formatter_cache_dir = EditorInterface.get_editor_paths().get_cache_dir().path_join("gdquest") installer = FormatterInstaller.new(formatter_cache_dir) @@ -123,8 +127,6 @@ func _enter_tree() -> void: update_shortcut() resource_saved.connect(_on_resource_saved) - _show_greeter() - func _show_greeter() -> void: var greeter_panel = GreeterPanel.instantiate() as Greeter From 08dd3f90b2af523350beac2f62662e4e2ce0df1e Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 11:44:51 +0100 Subject: [PATCH 12/53] add external link icon --- .../images/icons/link.svg | 1 + .../images/icons/link.svg.import | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/link.svg create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/link.svg.import diff --git a/addons/GDQuest_GDScript_formatter/images/icons/link.svg b/addons/GDQuest_GDScript_formatter/images/icons/link.svg new file mode 100644 index 0000000..10da18e --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/GDQuest_GDScript_formatter/images/icons/link.svg.import b/addons/GDQuest_GDScript_formatter/images/icons/link.svg.import new file mode 100644 index 0000000..56bab93 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/link.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ctpras52nelx3" +path="res://.godot/imported/link.svg-b137df11cbc30e911fb0835645149fef.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/GDQuest_GDScript_formatter/images/icons/link.svg" +dest_files=["res://.godot/imported/link.svg-b137df11cbc30e911fb0835645149fef.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false From 7527e46aeca62c49b03b6859fbac616246b2f314 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 11:45:06 +0100 Subject: [PATCH 13/53] swap download icon for consistency --- addons/GDQuest_GDScript_formatter/images/icons/download.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/GDQuest_GDScript_formatter/images/icons/download.svg b/addons/GDQuest_GDScript_formatter/images/icons/download.svg index 26bf0e2..66d6681 100644 --- a/addons/GDQuest_GDScript_formatter/images/icons/download.svg +++ b/addons/GDQuest_GDScript_formatter/images/icons/download.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 7a6fce647085c3cc2d45758a6f48d0803b70e5b2 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 11:46:18 +0100 Subject: [PATCH 14/53] add links section --- .../editor/greeter.tscn | 123 ++++++++++++++++-- 1 file changed, 110 insertions(+), 13 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index f3df1cc..1caee44 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -3,31 +3,50 @@ [ext_resource type="Script" uid="uid://chtdytdwey3un" path="res://addons/GDQuest_GDScript_formatter/editor/greeter.gd" id="1_cku6i"] [ext_resource type="Texture2D" uid="uid://cp5vhsg54dmt5" path="res://addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg" id="1_hq2xi"] [ext_resource type="Texture2D" uid="uid://pfs8d8babvcu" path="res://addons/GDQuest_GDScript_formatter/images/icons/download.svg" id="3_cku6i"] +[ext_resource type="Texture2D" uid="uid://ctpras52nelx3" path="res://addons/GDQuest_GDScript_formatter/images/icons/link.svg" id="4_yrmdb"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cku6i"] -content_margin_left = 16.0 -content_margin_top = 8.0 +content_margin_left = 8.0 +content_margin_top = 4.0 content_margin_right = 16.0 -content_margin_bottom = 8.0 +content_margin_bottom = 4.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_top_left = 8 corner_radius_bottom_left = 8 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hq2xi"] -content_margin_left = 16.0 +content_margin_left = 8.0 +content_margin_top = 8.0 +content_margin_right = 16.0 +content_margin_bottom = 8.0 +bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) +corner_radius_top_right = 8 +corner_radius_bottom_right = 8 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yrmdb"] +content_margin_left = 8.0 content_margin_top = 8.0 content_margin_right = 16.0 content_margin_bottom = 8.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) +corner_radius_top_left = 8 corner_radius_top_right = 8 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lrwqi"] +content_margin_left = 8.0 +content_margin_top = 8.0 +content_margin_right = 16.0 +content_margin_bottom = 8.0 +bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 [node name="Greeter" type="PopupPanel" unique_id=1454134907] transparent_bg = false oversampling_override = 1.0 title = "GDScript Formatter" initial_position = 1 -size = Vector2i(479, 219) +size = Vector2i(495, 366) visible = true borderless = false always_on_top = true @@ -38,8 +57,8 @@ script = ExtResource("1_cku6i") [node name="Padding" type="MarginContainer" parent="." unique_id=83505692] offset_left = 12.0 offset_top = 12.0 -offset_right = 467.0 -offset_bottom = 207.0 +offset_right = 483.0 +offset_bottom = 354.0 theme_override_constants/margin_left = 8 theme_override_constants/margin_top = 8 theme_override_constants/margin_right = 8 @@ -49,7 +68,7 @@ theme_override_constants/margin_bottom = 8 layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -theme_override_constants/separation = 16 +theme_override_constants/separation = 8 [node name="Heading" type="VBoxContainer" parent="Padding/Layout" unique_id=1777254668] layout_mode = 2 @@ -66,6 +85,7 @@ stretch_mode = 4 [node name="Description" type="Label" parent="Padding/Layout/Heading" unique_id=1391782465] layout_mode = 2 size_flags_vertical = 0 +theme_override_font_sizes/font_size = 16 text = "A faster code formatter for GDScript and Godot 4" horizontal_alignment = 1 vertical_alignment = 1 @@ -87,17 +107,19 @@ theme_override_constants/separation = 16 [node name="Meta" type="VBoxContainer" parent="Padding/Layout/Versions/Addon/Layout" unique_id=764178420] layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 0 +size_flags_vertical = 4 +theme_override_constants/separation = 0 [node name="Title" type="Label" parent="Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1563506712] layout_mode = 2 -size_flags_vertical = 2 -theme_type_variation = &"HeaderMedium" +size_flags_vertical = 0 +theme_type_variation = &"HeaderSmall" text = "Addon Version" [node name="Value" type="Label" parent="Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] layout_mode = 2 -size_flags_vertical = 2 +size_flags_vertical = 0 +theme_override_font_sizes/font_size = 14 text = "0.0.0" [node name="Button" type="Button" parent="Padding/Layout/Versions/Addon/Layout" unique_id=1381876748] @@ -126,7 +148,7 @@ size_flags_vertical = 4 [node name="Title" type="Label" parent="Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=265656052] layout_mode = 2 size_flags_vertical = 3 -theme_type_variation = &"HeaderMedium" +theme_type_variation = &"HeaderSmall" text = "Formatter Version" [node name="Value" type="Label" parent="Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] @@ -143,3 +165,78 @@ theme_override_constants/icon_max_width = 18 disabled = true icon = ExtResource("3_cku6i") icon_alignment = 1 + +[node name="Links" type="VBoxContainer" parent="Padding/Layout" unique_id=308460711] +layout_mode = 2 +theme_override_constants/separation = 1 + +[node name="Docs" type="PanelContainer" parent="Padding/Layout/Links" unique_id=1617879850] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_yrmdb") + +[node name="HBoxContainer" type="HBoxContainer" parent="Padding/Layout/Links/Docs" unique_id=730529116] +layout_mode = 2 +theme_override_constants/separation = 16 + +[node name="Meta" type="VBoxContainer" parent="Padding/Layout/Links/Docs/HBoxContainer" unique_id=491611772] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Padding/Layout/Links/Docs/HBoxContainer/Meta" unique_id=292956704] +layout_mode = 2 +size_flags_vertical = 3 +theme_type_variation = &"HeaderSmall" +text = "Documentation" + +[node name="Value" type="Label" parent="Padding/Layout/Links/Docs/HBoxContainer/Meta" unique_id=541682671] +layout_mode = 2 +size_flags_vertical = 2 +text = "https://www.gdquest.com/library/gdscript_formatter" +text_overrun_behavior = 3 + +[node name="Button" type="Button" parent="Padding/Layout/Links/Docs/HBoxContainer" unique_id=1379633793] +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "Download update" +theme_override_constants/icon_max_width = 18 +icon = ExtResource("4_yrmdb") +icon_alignment = 1 + +[node name="Issues" type="PanelContainer" parent="Padding/Layout/Links" unique_id=828435889] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") + +[node name="HBoxContainer" type="HBoxContainer" parent="Padding/Layout/Links/Issues" unique_id=1959402616] +layout_mode = 2 +size_flags_vertical = 4 +theme_override_constants/separation = 16 + +[node name="Meta" type="VBoxContainer" parent="Padding/Layout/Links/Issues/HBoxContainer" unique_id=820974620] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=669708178] +layout_mode = 2 +size_flags_vertical = 2 +theme_type_variation = &"HeaderSmall" +text = "Report an issue" + +[node name="Value" type="Label" parent="Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=1694691580] +layout_mode = 2 +size_flags_vertical = 2 +text = "https://github.com/GDQuest/GDScript-formatter" +text_overrun_behavior = 3 + +[node name="Button" type="Button" parent="Padding/Layout/Links/Issues/HBoxContainer" unique_id=225001517] +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "Download update" +theme_override_constants/icon_max_width = 18 +icon = ExtResource("4_yrmdb") +icon_alignment = 1 From b7dbe9e6547db144efa952377c192865dc36bb24 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 20:09:19 +0100 Subject: [PATCH 15/53] rework greeter to use window instead of popup panel --- .../editor/greeter.gd | 16 +++- .../editor/greeter.tscn | 92 +++++++++++-------- 2 files changed, 66 insertions(+), 42 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index bb71731..256542c 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -1,21 +1,29 @@ @tool class_name Greeter -extends Node +extends Window -@onready var _addon_version_label_value: Label = $Padding/Layout/Versions/Addon/Layout/Meta/Value -@onready var _formatter_version_value: Label = $Padding/Layout/Versions/Formatter/Layout/Meta/Value +@onready var _addon_version_label_value: Label = $Panel/Padding/Layout/Versions/Addon/Layout/Meta/Value +@onready var _formatter_version_value: Label = $Panel/Padding/Layout/Versions/Formatter/Layout/Meta/Value var _addon_version: String = "0.0.0" var _formatter_version: String = "0.0.0" +func _init() -> void: + close_requested.connect(_handle_close) + + func _ready() -> void: _addon_version_label_value.text = _addon_version _formatter_version_value.text = _formatter_version + func set_addon_version(version: String) -> void: _addon_version = version func set_formatter_version(version: String) -> void: _formatter_version = version - + + +func _handle_close() -> void: + hide() diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 1caee44..0d5c213 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -5,6 +5,9 @@ [ext_resource type="Texture2D" uid="uid://pfs8d8babvcu" path="res://addons/GDQuest_GDScript_formatter/images/icons/download.svg" id="3_cku6i"] [ext_resource type="Texture2D" uid="uid://ctpras52nelx3" path="res://addons/GDQuest_GDScript_formatter/images/icons/link.svg" id="4_yrmdb"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cx1jr"] +bg_color = Color(0.105882354, 0.105882354, 0.105882354, 1) + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cku6i"] content_margin_left = 8.0 content_margin_top = 4.0 @@ -41,20 +44,33 @@ bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_bottom_right = 8 corner_radius_bottom_left = 8 -[node name="Greeter" type="PopupPanel" unique_id=1454134907] -transparent_bg = false +[node name="Window" type="Window" unique_id=447471143] oversampling_override = 1.0 title = "GDScript Formatter" initial_position = 1 size = Vector2i(495, 366) -visible = true -borderless = false +visible = false +wrap_controls = true +unresizable = true always_on_top = true -transparent = false -keep_title_visible = true +popup_wm_hint = true +minimize_disabled = true +maximize_disabled = true script = ExtResource("1_cku6i") -[node name="Padding" type="MarginContainer" parent="." unique_id=83505692] +[node name="Panel" type="Panel" parent="." unique_id=710910967] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_styles/panel = SubResource("StyleBoxFlat_cx1jr") +metadata/_edit_use_anchors_ = true + +[node name="Padding" type="MarginContainer" parent="Panel" unique_id=83505692] +layout_mode = 0 offset_left = 12.0 offset_top = 12.0 offset_right = 483.0 @@ -64,25 +80,25 @@ theme_override_constants/margin_top = 8 theme_override_constants/margin_right = 8 theme_override_constants/margin_bottom = 8 -[node name="Layout" type="VBoxContainer" parent="Padding" unique_id=508597381] +[node name="Layout" type="VBoxContainer" parent="Panel/Padding" unique_id=508597381] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 theme_override_constants/separation = 8 -[node name="Heading" type="VBoxContainer" parent="Padding/Layout" unique_id=1777254668] +[node name="Heading" type="VBoxContainer" parent="Panel/Padding/Layout" unique_id=1777254668] layout_mode = 2 theme_override_constants/separation = 8 -[node name="Branding" type="CenterContainer" parent="Padding/Layout/Heading" unique_id=373074182] +[node name="Branding" type="CenterContainer" parent="Panel/Padding/Layout/Heading" unique_id=373074182] layout_mode = 2 -[node name="Logo" type="TextureRect" parent="Padding/Layout/Heading/Branding" unique_id=859651745] +[node name="Logo" type="TextureRect" parent="Panel/Padding/Layout/Heading/Branding" unique_id=859651745] layout_mode = 2 texture = ExtResource("1_hq2xi") stretch_mode = 4 -[node name="Description" type="Label" parent="Padding/Layout/Heading" unique_id=1391782465] +[node name="Description" type="Label" parent="Panel/Padding/Layout/Heading" unique_id=1391782465] layout_mode = 2 size_flags_vertical = 0 theme_override_font_sizes/font_size = 16 @@ -90,39 +106,39 @@ text = "A faster code formatter for GDScript and Godot 4" horizontal_alignment = 1 vertical_alignment = 1 -[node name="Versions" type="HBoxContainer" parent="Padding/Layout" unique_id=215688731] +[node name="Versions" type="HBoxContainer" parent="Panel/Padding/Layout" unique_id=215688731] layout_mode = 2 size_flags_vertical = 0 theme_override_constants/separation = 1 -[node name="Addon" type="PanelContainer" parent="Padding/Layout/Versions" unique_id=1266364516] +[node name="Addon" type="PanelContainer" parent="Panel/Padding/Layout/Versions" unique_id=1266364516] layout_mode = 2 size_flags_horizontal = 3 theme_override_styles/panel = SubResource("StyleBoxFlat_cku6i") -[node name="Layout" type="HBoxContainer" parent="Padding/Layout/Versions/Addon" unique_id=1478601450] +[node name="Layout" type="HBoxContainer" parent="Panel/Padding/Layout/Versions/Addon" unique_id=1478601450] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Padding/Layout/Versions/Addon/Layout" unique_id=764178420] +[node name="Meta" type="VBoxContainer" parent="Panel/Padding/Layout/Versions/Addon/Layout" unique_id=764178420] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1563506712] +[node name="Title" type="Label" parent="Panel/Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1563506712] layout_mode = 2 size_flags_vertical = 0 theme_type_variation = &"HeaderSmall" text = "Addon Version" -[node name="Value" type="Label" parent="Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] +[node name="Value" type="Label" parent="Panel/Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] layout_mode = 2 size_flags_vertical = 0 theme_override_font_sizes/font_size = 14 text = "0.0.0" -[node name="Button" type="Button" parent="Padding/Layout/Versions/Addon/Layout" unique_id=1381876748] +[node name="Button" type="Button" parent="Panel/Padding/Layout/Versions/Addon/Layout" unique_id=1381876748] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Download update" @@ -131,32 +147,32 @@ disabled = true icon = ExtResource("3_cku6i") icon_alignment = 1 -[node name="Formatter" type="PanelContainer" parent="Padding/Layout/Versions" unique_id=1351105920] +[node name="Formatter" type="PanelContainer" parent="Panel/Padding/Layout/Versions" unique_id=1351105920] layout_mode = 2 size_flags_horizontal = 3 theme_override_styles/panel = SubResource("StyleBoxFlat_hq2xi") -[node name="Layout" type="HBoxContainer" parent="Padding/Layout/Versions/Formatter" unique_id=185289625] +[node name="Layout" type="HBoxContainer" parent="Panel/Padding/Layout/Versions/Formatter" unique_id=185289625] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Padding/Layout/Versions/Formatter/Layout" unique_id=1585824214] +[node name="Meta" type="VBoxContainer" parent="Panel/Padding/Layout/Versions/Formatter/Layout" unique_id=1585824214] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 -[node name="Title" type="Label" parent="Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=265656052] +[node name="Title" type="Label" parent="Panel/Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=265656052] layout_mode = 2 size_flags_vertical = 3 theme_type_variation = &"HeaderSmall" text = "Formatter Version" -[node name="Value" type="Label" parent="Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] +[node name="Value" type="Label" parent="Panel/Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] layout_mode = 2 size_flags_vertical = 2 text = "0.0.0" -[node name="DownloadButton" type="Button" parent="Padding/Layout/Versions/Formatter/Layout" unique_id=1459022472] +[node name="DownloadButton" type="Button" parent="Panel/Padding/Layout/Versions/Formatter/Layout" unique_id=1459022472] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 @@ -166,38 +182,38 @@ disabled = true icon = ExtResource("3_cku6i") icon_alignment = 1 -[node name="Links" type="VBoxContainer" parent="Padding/Layout" unique_id=308460711] +[node name="Links" type="VBoxContainer" parent="Panel/Padding/Layout" unique_id=308460711] layout_mode = 2 theme_override_constants/separation = 1 -[node name="Docs" type="PanelContainer" parent="Padding/Layout/Links" unique_id=1617879850] +[node name="Docs" type="PanelContainer" parent="Panel/Padding/Layout/Links" unique_id=1617879850] layout_mode = 2 size_flags_horizontal = 3 theme_override_styles/panel = SubResource("StyleBoxFlat_yrmdb") -[node name="HBoxContainer" type="HBoxContainer" parent="Padding/Layout/Links/Docs" unique_id=730529116] +[node name="HBoxContainer" type="HBoxContainer" parent="Panel/Padding/Layout/Links/Docs" unique_id=730529116] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Padding/Layout/Links/Docs/HBoxContainer" unique_id=491611772] +[node name="Meta" type="VBoxContainer" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer" unique_id=491611772] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Padding/Layout/Links/Docs/HBoxContainer/Meta" unique_id=292956704] +[node name="Title" type="Label" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer/Meta" unique_id=292956704] layout_mode = 2 size_flags_vertical = 3 theme_type_variation = &"HeaderSmall" text = "Documentation" -[node name="Value" type="Label" parent="Padding/Layout/Links/Docs/HBoxContainer/Meta" unique_id=541682671] +[node name="Value" type="Label" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer/Meta" unique_id=541682671] layout_mode = 2 size_flags_vertical = 2 text = "https://www.gdquest.com/library/gdscript_formatter" text_overrun_behavior = 3 -[node name="Button" type="Button" parent="Padding/Layout/Links/Docs/HBoxContainer" unique_id=1379633793] +[node name="Button" type="Button" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer" unique_id=1379633793] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Download update" @@ -205,35 +221,35 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("4_yrmdb") icon_alignment = 1 -[node name="Issues" type="PanelContainer" parent="Padding/Layout/Links" unique_id=828435889] +[node name="Issues" type="PanelContainer" parent="Panel/Padding/Layout/Links" unique_id=828435889] layout_mode = 2 size_flags_horizontal = 3 theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") -[node name="HBoxContainer" type="HBoxContainer" parent="Padding/Layout/Links/Issues" unique_id=1959402616] +[node name="HBoxContainer" type="HBoxContainer" parent="Panel/Padding/Layout/Links/Issues" unique_id=1959402616] layout_mode = 2 size_flags_vertical = 4 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Padding/Layout/Links/Issues/HBoxContainer" unique_id=820974620] +[node name="Meta" type="VBoxContainer" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer" unique_id=820974620] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=669708178] +[node name="Title" type="Label" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=669708178] layout_mode = 2 size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" text = "Report an issue" -[node name="Value" type="Label" parent="Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=1694691580] +[node name="Value" type="Label" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=1694691580] layout_mode = 2 size_flags_vertical = 2 text = "https://github.com/GDQuest/GDScript-formatter" text_overrun_behavior = 3 -[node name="Button" type="Button" parent="Padding/Layout/Links/Issues/HBoxContainer" unique_id=225001517] +[node name="Button" type="Button" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer" unique_id=225001517] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Download update" From 9dc052bb28a094d10c4548bab2a6ad607f40bd24 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 20:52:08 +0100 Subject: [PATCH 16/53] apply version if node is ready --- addons/GDQuest_GDScript_formatter/editor/greeter.gd | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 256542c..b5aa831 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -19,10 +19,16 @@ func _ready() -> void: func set_addon_version(version: String) -> void: _addon_version = version + + if is_node_ready(): + _addon_version_label_value.text = _addon_version func set_formatter_version(version: String) -> void: _formatter_version = version + + if is_node_ready(): + _formatter_version_value.text = _formatter_version func _handle_close() -> void: From cb09daa501135e4a235b6f830b07b8f078ce3a04 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 21:22:00 +0100 Subject: [PATCH 17/53] wire up the link sections --- .../editor/greeter.gd | 26 ++++++++++++++++--- .../editor/greeter.tscn | 4 +-- addons/GDQuest_GDScript_formatter/plugin.gd | 2 ++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index b5aa831..242a3b7 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -2,19 +2,26 @@ class_name Greeter extends Window +signal action_pressed(action: String) + @onready var _addon_version_label_value: Label = $Panel/Padding/Layout/Versions/Addon/Layout/Meta/Value @onready var _formatter_version_value: Label = $Panel/Padding/Layout/Versions/Formatter/Layout/Meta/Value +@onready var _docs_button: Button = $Panel/Padding/Layout/Links/Docs/HBoxContainer/DocsButton +@onready var _issues_button: Button = $Panel/Padding/Layout/Links/Issues/HBoxContainer/IssuesButton + var _addon_version: String = "0.0.0" var _formatter_version: String = "0.0.0" -func _init() -> void: - close_requested.connect(_handle_close) - func _ready() -> void: _addon_version_label_value.text = _addon_version _formatter_version_value.text = _formatter_version + + close_requested.connect(_handle_close) + + _docs_button.button_down.connect(_handle_docs_press) + _issues_button.button_down.connect(_handle_issues_press) func set_addon_version(version: String) -> void: @@ -32,4 +39,17 @@ func set_formatter_version(version: String) -> void: func _handle_close() -> void: + close_requested.disconnect(_handle_close) + + _docs_button.button_down.disconnect(_handle_docs_press) + _issues_button.button_down.disconnect(_handle_issues_press) + hide() + + +func _handle_docs_press() -> void: + action_pressed.emit("help") + + +func _handle_issues_press() -> void: + action_pressed.emit("report_issue") diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 0d5c213..e910759 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -213,7 +213,7 @@ size_flags_vertical = 2 text = "https://www.gdquest.com/library/gdscript_formatter" text_overrun_behavior = 3 -[node name="Button" type="Button" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer" unique_id=1379633793] +[node name="DocsButton" type="Button" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer" unique_id=1379633793] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Download update" @@ -249,7 +249,7 @@ size_flags_vertical = 2 text = "https://github.com/GDQuest/GDScript-formatter" text_overrun_behavior = 3 -[node name="Button" type="Button" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer" unique_id=225001517] +[node name="IssuesButton" type="Button" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer" unique_id=225001517] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Download update" diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 0614ad3..e358757 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -138,6 +138,8 @@ func _show_greeter() -> void: greeter_panel.popup_centered() greeter_panel.set_addon_version(addon_version) greeter_panel.set_formatter_version(formatter_version) + + greeter_panel.action_pressed.connect(_on_menu_item_selected) func _exit_tree() -> void: From 28cb8eac0149f31f45235f9e9eb1c19a742171c2 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 22:16:58 +0100 Subject: [PATCH 18/53] clean up how greeter is setup and torndown --- addons/GDQuest_GDScript_formatter/plugin.gd | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index e358757..4ec944d 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -55,6 +55,7 @@ var connection_list: Array[Resource] = [] var installer: FormatterInstaller = null var formatter_cache_dir: String var menu: FormatterMenu = null +var greeter_panel: Greeter = null var _has_uninstall_command := false var _has_formatter_command := false # Used to auto detect changes to the project's .editorconfig file. @@ -111,7 +112,10 @@ func _enter_tree() -> void: func _on_installation_failed(error_message: String) -> void: push_error("Formatter installation failed: ", error_message) ) - + + greeter_panel = GreeterPanel.instantiate() as Greeter + add_child(greeter_panel) + _has_formatter_command = has_command(get_editor_setting(SETTING_FORMATTER_PATH)) add_format_command() add_lint_command() @@ -129,12 +133,12 @@ func _enter_tree() -> void: func _show_greeter() -> void: - var greeter_panel = GreeterPanel.instantiate() as Greeter + if not greeter_panel: + return + var addon_version = get_addon_version() var formatter_version = get_formatter_version() - add_child(greeter_panel) - greeter_panel.popup_centered() greeter_panel.set_addon_version(addon_version) greeter_panel.set_formatter_version(formatter_version) @@ -153,6 +157,9 @@ func _exit_tree() -> void: installer.queue_free() installer = null + + greeter_panel.action_pressed.disconnect(_on_menu_item_selected) + greeter_panel.queue_free() if is_instance_valid(menu): menu.menu_item_selected.disconnect(_on_menu_item_selected) From bbdb1936f47947a88bd66d7c7f3b4f4cf5d08175 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 22:18:16 +0100 Subject: [PATCH 19/53] update formatter version after update --- addons/GDQuest_GDScript_formatter/plugin.gd | 30 +++++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 4ec944d..80904d8 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -104,6 +104,9 @@ func _enter_tree() -> void: return add_format_command() add_lint_command() + + _update_formatter_version() + # After installing the formatter we can add the menu option to show the uninstall command if is_instance_valid(menu): menu.update_menu(true) @@ -136,13 +139,10 @@ func _show_greeter() -> void: if not greeter_panel: return - var addon_version = get_addon_version() - var formatter_version = get_formatter_version() + _update_addon_version() + _update_formatter_version() greeter_panel.popup_centered() - greeter_panel.set_addon_version(addon_version) - greeter_panel.set_formatter_version(formatter_version) - greeter_panel.action_pressed.connect(_on_menu_item_selected) @@ -434,6 +434,16 @@ func get_formatter_version(): return _parse_formatter_version(version_stdout) + +func _update_formatter_version() -> void: + if not greeter_panel: + return + + var formatter_version = get_formatter_version() + + greeter_panel.set_formatter_version(formatter_version) + + func get_addon_version(): var menu = FormatterMenu.new() print(menu.get_path()) @@ -448,6 +458,16 @@ func get_addon_version(): return plugin_config.get_value("plugin", "version") + +func _update_addon_version() -> void: + if not greeter_panel: + return + + var addon_version = get_addon_version() + + greeter_panel.set_addon_version(addon_version) + + func is_formatter_available() -> bool: if _has_formatter_command: return true From e6b54136e0d77abebe0e03bdc6573cd427a88f2b Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 22:21:31 +0100 Subject: [PATCH 20/53] wire up formatter button to install_update command --- addons/GDQuest_GDScript_formatter/editor/greeter.gd | 7 +++++++ addons/GDQuest_GDScript_formatter/editor/greeter.tscn | 3 +-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 242a3b7..28c05c7 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -9,6 +9,7 @@ signal action_pressed(action: String) @onready var _docs_button: Button = $Panel/Padding/Layout/Links/Docs/HBoxContainer/DocsButton @onready var _issues_button: Button = $Panel/Padding/Layout/Links/Issues/HBoxContainer/IssuesButton +@onready var _formatter_button: Button = $Panel/Padding/Layout/Versions/Formatter/Layout/FormatterButton var _addon_version: String = "0.0.0" var _formatter_version: String = "0.0.0" @@ -22,6 +23,7 @@ func _ready() -> void: _docs_button.button_down.connect(_handle_docs_press) _issues_button.button_down.connect(_handle_issues_press) + _formatter_button.button_down.connect(_handle_formatter_press) func set_addon_version(version: String) -> void: @@ -43,6 +45,7 @@ func _handle_close() -> void: _docs_button.button_down.disconnect(_handle_docs_press) _issues_button.button_down.disconnect(_handle_issues_press) + _formatter_button.button_down.disconnect(_handle_formatter_press) hide() @@ -53,3 +56,7 @@ func _handle_docs_press() -> void: func _handle_issues_press() -> void: action_pressed.emit("report_issue") + + +func _handle_formatter_press() -> void: + action_pressed.emit("install_update") diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index e910759..a3df6ac 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -172,13 +172,12 @@ layout_mode = 2 size_flags_vertical = 2 text = "0.0.0" -[node name="DownloadButton" type="Button" parent="Panel/Padding/Layout/Versions/Formatter/Layout" unique_id=1459022472] +[node name="FormatterButton" type="Button" parent="Panel/Padding/Layout/Versions/Formatter/Layout" unique_id=1459022472] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 tooltip_text = "Download update" theme_override_constants/icon_max_width = 18 -disabled = true icon = ExtResource("3_cku6i") icon_alignment = 1 From 637d370cf47dec3c6d3638241f538d7af4a9d8dd Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 23:12:57 +0100 Subject: [PATCH 21/53] update addon heading based on godot major version --- addons/GDQuest_GDScript_formatter/editor/greeter.gd | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 28c05c7..78b8a3b 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -6,6 +6,7 @@ signal action_pressed(action: String) @onready var _addon_version_label_value: Label = $Panel/Padding/Layout/Versions/Addon/Layout/Meta/Value @onready var _formatter_version_value: Label = $Panel/Padding/Layout/Versions/Formatter/Layout/Meta/Value +@onready var _heading_label: Label = $Panel/Padding/Layout/Heading/Description @onready var _docs_button: Button = $Panel/Padding/Layout/Links/Docs/HBoxContainer/DocsButton @onready var _issues_button: Button = $Panel/Padding/Layout/Links/Issues/HBoxContainer/IssuesButton @@ -24,6 +25,8 @@ func _ready() -> void: _docs_button.button_down.connect(_handle_docs_press) _issues_button.button_down.connect(_handle_issues_press) _formatter_button.button_down.connect(_handle_formatter_press) + + _update_tagline() func set_addon_version(version: String) -> void: @@ -40,6 +43,13 @@ func set_formatter_version(version: String) -> void: _formatter_version_value.text = _formatter_version +func _update_tagline() -> void: + var godot_version = Engine.get_version_info() + var version_major = str(godot_version.major) + + _heading_label.text = _heading_label.text.replace("", version_major) + + func _handle_close() -> void: close_requested.disconnect(_handle_close) From fdecf14e201463777376adf67d951234b87c94d3 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 23:14:28 +0100 Subject: [PATCH 22/53] clean up label names --- addons/GDQuest_GDScript_formatter/editor/greeter.gd | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 78b8a3b..35e023f 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -4,8 +4,8 @@ extends Window signal action_pressed(action: String) -@onready var _addon_version_label_value: Label = $Panel/Padding/Layout/Versions/Addon/Layout/Meta/Value -@onready var _formatter_version_value: Label = $Panel/Padding/Layout/Versions/Formatter/Layout/Meta/Value +@onready var _addon_version_label: Label = $Panel/Padding/Layout/Versions/Addon/Layout/Meta/Value +@onready var _formatter_version_label: Label = $Panel/Padding/Layout/Versions/Formatter/Layout/Meta/Value @onready var _heading_label: Label = $Panel/Padding/Layout/Heading/Description @onready var _docs_button: Button = $Panel/Padding/Layout/Links/Docs/HBoxContainer/DocsButton @@ -17,8 +17,8 @@ var _formatter_version: String = "0.0.0" func _ready() -> void: - _addon_version_label_value.text = _addon_version - _formatter_version_value.text = _formatter_version + _addon_version_label.text = _addon_version + _formatter_version_label.text = _formatter_version close_requested.connect(_handle_close) @@ -33,14 +33,14 @@ func set_addon_version(version: String) -> void: _addon_version = version if is_node_ready(): - _addon_version_label_value.text = _addon_version + _addon_version_label.text = _addon_version func set_formatter_version(version: String) -> void: _formatter_version = version if is_node_ready(): - _formatter_version_value.text = _formatter_version + _formatter_version_label.text = _formatter_version func _update_tagline() -> void: From fae4505576318a1211b9b76de02f4c622d598ccd Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Sun, 26 Jul 2026 23:52:24 +0100 Subject: [PATCH 23/53] improve addon accessibility --- .../editor/greeter.tscn | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index a3df6ac..bf2aa7f 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -109,12 +109,19 @@ vertical_alignment = 1 [node name="Versions" type="HBoxContainer" parent="Panel/Padding/Layout" unique_id=215688731] layout_mode = 2 size_flags_vertical = 0 +accessibility_name = "Versions" +accessibility_description = "Addon and formatter versions" theme_override_constants/separation = 1 +accessibility_region = true [node name="Addon" type="PanelContainer" parent="Panel/Padding/Layout/Versions" unique_id=1266364516] layout_mode = 2 size_flags_horizontal = 3 +accessibility_name = "Addon version" +accessibility_described_by_nodes = Array[NodePath]([NodePath("Layout/Meta/Value")]) +accessibility_labeled_by_nodes = Array[NodePath]([NodePath("Layout/Meta/Title")]) theme_override_styles/panel = SubResource("StyleBoxFlat_cku6i") +accessibility_region = true [node name="Layout" type="HBoxContainer" parent="Panel/Padding/Layout/Versions/Addon" unique_id=1478601450] layout_mode = 2 @@ -135,6 +142,8 @@ text = "Addon Version" [node name="Value" type="Label" parent="Panel/Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] layout_mode = 2 size_flags_vertical = 0 +accessibility_live = 1 +accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) theme_override_font_sizes/font_size = 14 text = "0.0.0" @@ -150,7 +159,11 @@ icon_alignment = 1 [node name="Formatter" type="PanelContainer" parent="Panel/Padding/Layout/Versions" unique_id=1351105920] layout_mode = 2 size_flags_horizontal = 3 +accessibility_name = "Formatter version" +accessibility_described_by_nodes = Array[NodePath]([NodePath("Layout/Meta/Value")]) +accessibility_labeled_by_nodes = Array[NodePath]([NodePath("Layout/Meta/Title")]) theme_override_styles/panel = SubResource("StyleBoxFlat_hq2xi") +accessibility_region = true [node name="Layout" type="HBoxContainer" parent="Panel/Padding/Layout/Versions/Formatter" unique_id=185289625] layout_mode = 2 @@ -170,6 +183,8 @@ text = "Formatter Version" [node name="Value" type="Label" parent="Panel/Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] layout_mode = 2 size_flags_vertical = 2 +accessibility_live = 1 +accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) text = "0.0.0" [node name="FormatterButton" type="Button" parent="Panel/Padding/Layout/Versions/Formatter/Layout" unique_id=1459022472] @@ -183,12 +198,17 @@ icon_alignment = 1 [node name="Links" type="VBoxContainer" parent="Panel/Padding/Layout" unique_id=308460711] layout_mode = 2 +accessibility_name = "Links" theme_override_constants/separation = 1 +accessibility_region = true [node name="Docs" type="PanelContainer" parent="Panel/Padding/Layout/Links" unique_id=1617879850] layout_mode = 2 size_flags_horizontal = 3 +accessibility_name = "Documentation" +accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/Title")]) theme_override_styles/panel = SubResource("StyleBoxFlat_yrmdb") +accessibility_region = true [node name="HBoxContainer" type="HBoxContainer" parent="Panel/Padding/Layout/Links/Docs" unique_id=730529116] layout_mode = 2 @@ -215,7 +235,7 @@ text_overrun_behavior = 3 [node name="DocsButton" type="Button" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer" unique_id=1379633793] layout_mode = 2 size_flags_vertical = 4 -tooltip_text = "Download update" +tooltip_text = "View documentation" theme_override_constants/icon_max_width = 18 icon = ExtResource("4_yrmdb") icon_alignment = 1 @@ -223,7 +243,10 @@ icon_alignment = 1 [node name="Issues" type="PanelContainer" parent="Panel/Padding/Layout/Links" unique_id=828435889] layout_mode = 2 size_flags_horizontal = 3 +accessibility_name = "Issue tracker" +accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/Title")]) theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") +accessibility_region = true [node name="HBoxContainer" type="HBoxContainer" parent="Panel/Padding/Layout/Links/Issues" unique_id=1959402616] layout_mode = 2 @@ -240,7 +263,7 @@ theme_override_constants/separation = 0 layout_mode = 2 size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" -text = "Report an issue" +text = "Issue Tracker" [node name="Value" type="Label" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=1694691580] layout_mode = 2 @@ -251,7 +274,8 @@ text_overrun_behavior = 3 [node name="IssuesButton" type="Button" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer" unique_id=225001517] layout_mode = 2 size_flags_vertical = 4 -tooltip_text = "Download update" +tooltip_text = "Report an issue" +accessibility_name = "Report an issue" theme_override_constants/icon_max_width = 18 icon = ExtResource("4_yrmdb") icon_alignment = 1 From e8821840b0feaa423f16bf66429cc2d30dd9204e Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 12:31:28 +0100 Subject: [PATCH 24/53] remove link labels --- .../GDQuest_GDScript_formatter/editor/greeter.tscn | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index bf2aa7f..fef98b4 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -226,12 +226,6 @@ size_flags_vertical = 3 theme_type_variation = &"HeaderSmall" text = "Documentation" -[node name="Value" type="Label" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer/Meta" unique_id=541682671] -layout_mode = 2 -size_flags_vertical = 2 -text = "https://www.gdquest.com/library/gdscript_formatter" -text_overrun_behavior = 3 - [node name="DocsButton" type="Button" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer" unique_id=1379633793] layout_mode = 2 size_flags_vertical = 4 @@ -265,12 +259,6 @@ size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" text = "Issue Tracker" -[node name="Value" type="Label" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=1694691580] -layout_mode = 2 -size_flags_vertical = 2 -text = "https://github.com/GDQuest/GDScript-formatter" -text_overrun_behavior = 3 - [node name="IssuesButton" type="Button" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer" unique_id=225001517] layout_mode = 2 size_flags_vertical = 4 From 67d16a689d1618ca94bbeeccf9087e9d102b5061 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 12:35:53 +0100 Subject: [PATCH 25/53] rework window to use a container and respond to changes more consistently --- .../editor/greeter.gd | 12 +-- .../editor/greeter.tscn | 79 +++++++++---------- 2 files changed, 44 insertions(+), 47 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 35e023f..3a3536f 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -4,13 +4,13 @@ extends Window signal action_pressed(action: String) -@onready var _addon_version_label: Label = $Panel/Padding/Layout/Versions/Addon/Layout/Meta/Value -@onready var _formatter_version_label: Label = $Panel/Padding/Layout/Versions/Formatter/Layout/Meta/Value -@onready var _heading_label: Label = $Panel/Padding/Layout/Heading/Description +@onready var _addon_version_label: Label = $Container/Padding/Layout/Versions/Addon/Layout/Meta/Value +@onready var _formatter_version_label: Label = $Container/Padding/Layout/Versions/Formatter/Layout/Meta/Value +@onready var _heading_label: Label = $Container/Padding/Layout/Heading/Description -@onready var _docs_button: Button = $Panel/Padding/Layout/Links/Docs/HBoxContainer/DocsButton -@onready var _issues_button: Button = $Panel/Padding/Layout/Links/Issues/HBoxContainer/IssuesButton -@onready var _formatter_button: Button = $Panel/Padding/Layout/Versions/Formatter/Layout/FormatterButton +@onready var _docs_button: Button = $Container/Padding/Layout/Links/Docs/HBoxContainer/DocsButton +@onready var _issues_button: Button = $Container/Padding/Layout/Links/Issues/HBoxContainer/IssuesButton +@onready var _formatter_button: Button = $Container/Padding/Layout/Versions/Formatter/Layout/FormatterButton var _addon_version: String = "0.0.0" var _formatter_version: String = "0.0.0" diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index fef98b4..a0d7992 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -5,7 +5,7 @@ [ext_resource type="Texture2D" uid="uid://pfs8d8babvcu" path="res://addons/GDQuest_GDScript_formatter/images/icons/download.svg" id="3_cku6i"] [ext_resource type="Texture2D" uid="uid://ctpras52nelx3" path="res://addons/GDQuest_GDScript_formatter/images/icons/link.svg" id="4_yrmdb"] -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cx1jr"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2dn7m"] bg_color = Color(0.105882354, 0.105882354, 0.105882354, 1) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cku6i"] @@ -48,17 +48,16 @@ corner_radius_bottom_left = 8 oversampling_override = 1.0 title = "GDScript Formatter" initial_position = 1 -size = Vector2i(495, 366) +size = Vector2i(435, 289) visible = false wrap_controls = true unresizable = true -always_on_top = true -popup_wm_hint = true minimize_disabled = true maximize_disabled = true +keep_title_visible = true script = ExtResource("1_cku6i") -[node name="Panel" type="Panel" parent="." unique_id=710910967] +[node name="Container" type="PanelContainer" parent="." unique_id=1537388181] anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 @@ -66,39 +65,37 @@ grow_horizontal = 2 grow_vertical = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -theme_override_styles/panel = SubResource("StyleBoxFlat_cx1jr") +theme_override_styles/panel = SubResource("StyleBoxFlat_2dn7m") metadata/_edit_use_anchors_ = true -[node name="Padding" type="MarginContainer" parent="Panel" unique_id=83505692] -layout_mode = 0 -offset_left = 12.0 -offset_top = 12.0 -offset_right = 483.0 -offset_bottom = 354.0 +[node name="Padding" type="MarginContainer" parent="Container" unique_id=83505692] +clip_contents = true +layout_mode = 2 theme_override_constants/margin_left = 8 theme_override_constants/margin_top = 8 theme_override_constants/margin_right = 8 theme_override_constants/margin_bottom = 8 +metadata/_edit_use_anchors_ = true -[node name="Layout" type="VBoxContainer" parent="Panel/Padding" unique_id=508597381] +[node name="Layout" type="VBoxContainer" parent="Container/Padding" unique_id=508597381] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 theme_override_constants/separation = 8 -[node name="Heading" type="VBoxContainer" parent="Panel/Padding/Layout" unique_id=1777254668] +[node name="Heading" type="VBoxContainer" parent="Container/Padding/Layout" unique_id=1777254668] layout_mode = 2 theme_override_constants/separation = 8 -[node name="Branding" type="CenterContainer" parent="Panel/Padding/Layout/Heading" unique_id=373074182] +[node name="Branding" type="CenterContainer" parent="Container/Padding/Layout/Heading" unique_id=373074182] layout_mode = 2 -[node name="Logo" type="TextureRect" parent="Panel/Padding/Layout/Heading/Branding" unique_id=859651745] +[node name="Logo" type="TextureRect" parent="Container/Padding/Layout/Heading/Branding" unique_id=859651745] layout_mode = 2 texture = ExtResource("1_hq2xi") stretch_mode = 4 -[node name="Description" type="Label" parent="Panel/Padding/Layout/Heading" unique_id=1391782465] +[node name="Description" type="Label" parent="Container/Padding/Layout/Heading" unique_id=1391782465] layout_mode = 2 size_flags_vertical = 0 theme_override_font_sizes/font_size = 16 @@ -106,7 +103,7 @@ text = "A faster code formatter for GDScript and Godot 4" horizontal_alignment = 1 vertical_alignment = 1 -[node name="Versions" type="HBoxContainer" parent="Panel/Padding/Layout" unique_id=215688731] +[node name="Versions" type="HBoxContainer" parent="Container/Padding/Layout" unique_id=215688731] layout_mode = 2 size_flags_vertical = 0 accessibility_name = "Versions" @@ -114,7 +111,7 @@ accessibility_description = "Addon and formatter versions" theme_override_constants/separation = 1 accessibility_region = true -[node name="Addon" type="PanelContainer" parent="Panel/Padding/Layout/Versions" unique_id=1266364516] +[node name="Addon" type="PanelContainer" parent="Container/Padding/Layout/Versions" unique_id=1266364516] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Addon version" @@ -123,23 +120,23 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("Layout/Meta/Title")] theme_override_styles/panel = SubResource("StyleBoxFlat_cku6i") accessibility_region = true -[node name="Layout" type="HBoxContainer" parent="Panel/Padding/Layout/Versions/Addon" unique_id=1478601450] +[node name="Layout" type="HBoxContainer" parent="Container/Padding/Layout/Versions/Addon" unique_id=1478601450] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Panel/Padding/Layout/Versions/Addon/Layout" unique_id=764178420] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Versions/Addon/Layout" unique_id=764178420] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Panel/Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1563506712] +[node name="Title" type="Label" parent="Container/Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1563506712] layout_mode = 2 size_flags_vertical = 0 theme_type_variation = &"HeaderSmall" text = "Addon Version" -[node name="Value" type="Label" parent="Panel/Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] +[node name="Value" type="Label" parent="Container/Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] layout_mode = 2 size_flags_vertical = 0 accessibility_live = 1 @@ -147,7 +144,7 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) theme_override_font_sizes/font_size = 14 text = "0.0.0" -[node name="Button" type="Button" parent="Panel/Padding/Layout/Versions/Addon/Layout" unique_id=1381876748] +[node name="Button" type="Button" parent="Container/Padding/Layout/Versions/Addon/Layout" unique_id=1381876748] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Download update" @@ -156,7 +153,7 @@ disabled = true icon = ExtResource("3_cku6i") icon_alignment = 1 -[node name="Formatter" type="PanelContainer" parent="Panel/Padding/Layout/Versions" unique_id=1351105920] +[node name="Formatter" type="PanelContainer" parent="Container/Padding/Layout/Versions" unique_id=1351105920] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Formatter version" @@ -165,29 +162,29 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("Layout/Meta/Title")] theme_override_styles/panel = SubResource("StyleBoxFlat_hq2xi") accessibility_region = true -[node name="Layout" type="HBoxContainer" parent="Panel/Padding/Layout/Versions/Formatter" unique_id=185289625] +[node name="Layout" type="HBoxContainer" parent="Container/Padding/Layout/Versions/Formatter" unique_id=185289625] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Panel/Padding/Layout/Versions/Formatter/Layout" unique_id=1585824214] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Versions/Formatter/Layout" unique_id=1585824214] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 -[node name="Title" type="Label" parent="Panel/Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=265656052] +[node name="Title" type="Label" parent="Container/Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=265656052] layout_mode = 2 size_flags_vertical = 3 theme_type_variation = &"HeaderSmall" text = "Formatter Version" -[node name="Value" type="Label" parent="Panel/Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] +[node name="Value" type="Label" parent="Container/Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] layout_mode = 2 size_flags_vertical = 2 accessibility_live = 1 accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) text = "0.0.0" -[node name="FormatterButton" type="Button" parent="Panel/Padding/Layout/Versions/Formatter/Layout" unique_id=1459022472] +[node name="FormatterButton" type="Button" parent="Container/Padding/Layout/Versions/Formatter/Layout" unique_id=1459022472] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 @@ -196,13 +193,13 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("3_cku6i") icon_alignment = 1 -[node name="Links" type="VBoxContainer" parent="Panel/Padding/Layout" unique_id=308460711] +[node name="Links" type="VBoxContainer" parent="Container/Padding/Layout" unique_id=308460711] layout_mode = 2 accessibility_name = "Links" theme_override_constants/separation = 1 accessibility_region = true -[node name="Docs" type="PanelContainer" parent="Panel/Padding/Layout/Links" unique_id=1617879850] +[node name="Docs" type="PanelContainer" parent="Container/Padding/Layout/Links" unique_id=1617879850] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Documentation" @@ -210,23 +207,23 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_yrmdb") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Panel/Padding/Layout/Links/Docs" unique_id=730529116] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Links/Docs" unique_id=730529116] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer" unique_id=491611772] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Links/Docs/HBoxContainer" unique_id=491611772] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer/Meta" unique_id=292956704] +[node name="Title" type="Label" parent="Container/Padding/Layout/Links/Docs/HBoxContainer/Meta" unique_id=292956704] layout_mode = 2 size_flags_vertical = 3 theme_type_variation = &"HeaderSmall" text = "Documentation" -[node name="DocsButton" type="Button" parent="Panel/Padding/Layout/Links/Docs/HBoxContainer" unique_id=1379633793] +[node name="DocsButton" type="Button" parent="Container/Padding/Layout/Links/Docs/HBoxContainer" unique_id=1379633793] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "View documentation" @@ -234,7 +231,7 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("4_yrmdb") icon_alignment = 1 -[node name="Issues" type="PanelContainer" parent="Panel/Padding/Layout/Links" unique_id=828435889] +[node name="Issues" type="PanelContainer" parent="Container/Padding/Layout/Links" unique_id=828435889] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Issue tracker" @@ -242,24 +239,24 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Panel/Padding/Layout/Links/Issues" unique_id=1959402616] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Links/Issues" unique_id=1959402616] layout_mode = 2 size_flags_vertical = 4 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer" unique_id=820974620] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Links/Issues/HBoxContainer" unique_id=820974620] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=669708178] +[node name="Title" type="Label" parent="Container/Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=669708178] layout_mode = 2 size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" text = "Issue Tracker" -[node name="IssuesButton" type="Button" parent="Panel/Padding/Layout/Links/Issues/HBoxContainer" unique_id=225001517] +[node name="IssuesButton" type="Button" parent="Container/Padding/Layout/Links/Issues/HBoxContainer" unique_id=225001517] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Report an issue" From 0614831b1e7707a1cc2313b615905ab2eaf2f387 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 12:43:29 +0100 Subject: [PATCH 26/53] add settings icon --- .../images/icons/settings.svg | 1 + .../images/icons/settings.svg.import | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/settings.svg create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/settings.svg.import diff --git a/addons/GDQuest_GDScript_formatter/images/icons/settings.svg b/addons/GDQuest_GDScript_formatter/images/icons/settings.svg new file mode 100644 index 0000000..c840125 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/GDQuest_GDScript_formatter/images/icons/settings.svg.import b/addons/GDQuest_GDScript_formatter/images/icons/settings.svg.import new file mode 100644 index 0000000..91cd46c --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/settings.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dp30pekmsn6tt" +path="res://.godot/imported/settings.svg-62cf3e99083bed9344103ef46d33eb2a.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/GDQuest_GDScript_formatter/images/icons/settings.svg" +dest_files=["res://.godot/imported/settings.svg-62cf3e99083bed9344103ef46d33eb2a.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false From fa06b19f4b5a7d8bdf8f1e87accb4208d163be99 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 12:51:36 +0100 Subject: [PATCH 27/53] rename links section to resources --- .../editor/greeter.gd | 4 ++-- .../editor/greeter.tscn | 24 +++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 3a3536f..502e2d8 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -8,8 +8,8 @@ signal action_pressed(action: String) @onready var _formatter_version_label: Label = $Container/Padding/Layout/Versions/Formatter/Layout/Meta/Value @onready var _heading_label: Label = $Container/Padding/Layout/Heading/Description -@onready var _docs_button: Button = $Container/Padding/Layout/Links/Docs/HBoxContainer/DocsButton -@onready var _issues_button: Button = $Container/Padding/Layout/Links/Issues/HBoxContainer/IssuesButton +@onready var _docs_button: Button = $Container/Padding/Layout/Resources/Docs/HBoxContainer/DocsButton +@onready var _issues_button: Button = $Container/Padding/Layout/Resources/Issues/HBoxContainer/IssuesButton @onready var _formatter_button: Button = $Container/Padding/Layout/Versions/Formatter/Layout/FormatterButton var _addon_version: String = "0.0.0" diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index a0d7992..d71354a 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -193,13 +193,13 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("3_cku6i") icon_alignment = 1 -[node name="Links" type="VBoxContainer" parent="Container/Padding/Layout" unique_id=308460711] +[node name="Resources" type="VBoxContainer" parent="Container/Padding/Layout" unique_id=308460711] layout_mode = 2 -accessibility_name = "Links" +accessibility_name = "Resources" theme_override_constants/separation = 1 accessibility_region = true -[node name="Docs" type="PanelContainer" parent="Container/Padding/Layout/Links" unique_id=1617879850] +[node name="Docs" type="PanelContainer" parent="Container/Padding/Layout/Resources" unique_id=1617879850] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Documentation" @@ -207,23 +207,23 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_yrmdb") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Links/Docs" unique_id=730529116] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Docs" unique_id=730529116] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Links/Docs/HBoxContainer" unique_id=491611772] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Docs/HBoxContainer" unique_id=491611772] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/Links/Docs/HBoxContainer/Meta" unique_id=292956704] +[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Docs/HBoxContainer/Meta" unique_id=292956704] layout_mode = 2 size_flags_vertical = 3 theme_type_variation = &"HeaderSmall" text = "Documentation" -[node name="DocsButton" type="Button" parent="Container/Padding/Layout/Links/Docs/HBoxContainer" unique_id=1379633793] +[node name="DocsButton" type="Button" parent="Container/Padding/Layout/Resources/Docs/HBoxContainer" unique_id=1379633793] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "View documentation" @@ -231,7 +231,7 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("4_yrmdb") icon_alignment = 1 -[node name="Issues" type="PanelContainer" parent="Container/Padding/Layout/Links" unique_id=828435889] +[node name="Issues" type="PanelContainer" parent="Container/Padding/Layout/Resources" unique_id=828435889] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Issue tracker" @@ -239,24 +239,24 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Links/Issues" unique_id=1959402616] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Issues" unique_id=1959402616] layout_mode = 2 size_flags_vertical = 4 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Links/Issues/HBoxContainer" unique_id=820974620] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Issues/HBoxContainer" unique_id=820974620] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/Links/Issues/HBoxContainer/Meta" unique_id=669708178] +[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Issues/HBoxContainer/Meta" unique_id=669708178] layout_mode = 2 size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" text = "Issue Tracker" -[node name="IssuesButton" type="Button" parent="Container/Padding/Layout/Links/Issues/HBoxContainer" unique_id=225001517] +[node name="IssuesButton" type="Button" parent="Container/Padding/Layout/Resources/Issues/HBoxContainer" unique_id=225001517] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Report an issue" From c86db5f3b6c6b9d12440587ba13fb4a5ecfb4d1d Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 13:00:29 +0100 Subject: [PATCH 28/53] add settings section --- .../editor/greeter.tscn | 46 ++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index d71354a..79e85aa 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -4,6 +4,7 @@ [ext_resource type="Texture2D" uid="uid://cp5vhsg54dmt5" path="res://addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg" id="1_hq2xi"] [ext_resource type="Texture2D" uid="uid://pfs8d8babvcu" path="res://addons/GDQuest_GDScript_formatter/images/icons/download.svg" id="3_cku6i"] [ext_resource type="Texture2D" uid="uid://ctpras52nelx3" path="res://addons/GDQuest_GDScript_formatter/images/icons/link.svg" id="4_yrmdb"] +[ext_resource type="Texture2D" uid="uid://dp30pekmsn6tt" path="res://addons/GDQuest_GDScript_formatter/images/icons/settings.svg" id="5_lrwqi"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2dn7m"] bg_color = Color(0.105882354, 0.105882354, 0.105882354, 1) @@ -35,6 +36,13 @@ bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_top_left = 8 corner_radius_top_right = 8 +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cx1jr"] +content_margin_left = 8.0 +content_margin_top = 8.0 +content_margin_right = 16.0 +content_margin_bottom = 8.0 +bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lrwqi"] content_margin_left = 8.0 content_margin_top = 8.0 @@ -48,7 +56,7 @@ corner_radius_bottom_left = 8 oversampling_override = 1.0 title = "GDScript Formatter" initial_position = 1 -size = Vector2i(435, 289) +size = Vector2i(435, 336) visible = false wrap_controls = true unresizable = true @@ -236,7 +244,7 @@ layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Issue tracker" accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/Title")]) -theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") +theme_override_styles/panel = SubResource("StyleBoxFlat_cx1jr") accessibility_region = true [node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Issues" unique_id=1959402616] @@ -264,3 +272,37 @@ accessibility_name = "Report an issue" theme_override_constants/icon_max_width = 18 icon = ExtResource("4_yrmdb") icon_alignment = 1 + +[node name="Settings" type="PanelContainer" parent="Container/Padding/Layout/Resources" unique_id=1686778136] +layout_mode = 2 +size_flags_horizontal = 3 +accessibility_name = "Addon settings" +accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/Title")]) +theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") +accessibility_region = true + +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Settings" unique_id=1987605781] +layout_mode = 2 +size_flags_vertical = 4 +theme_override_constants/separation = 16 + +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Settings/HBoxContainer" unique_id=1350916315] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +theme_override_constants/separation = 0 + +[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Settings/HBoxContainer/Meta" unique_id=1328338107] +layout_mode = 2 +size_flags_vertical = 2 +theme_type_variation = &"HeaderSmall" +text = "Addon Settings" + +[node name="SettingsButton" type="Button" parent="Container/Padding/Layout/Resources/Settings/HBoxContainer" unique_id=1257919535] +layout_mode = 2 +size_flags_vertical = 4 +tooltip_text = "View addon settings" +accessibility_name = "View addon settings" +theme_override_constants/icon_max_width = 18 +icon = ExtResource("5_lrwqi") +icon_alignment = 1 From 02a612bf93b57861d98325b62c93db3e479934a6 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 18:35:53 +0100 Subject: [PATCH 29/53] add arrow-right icon --- .../images/icons/arrow-right.svg | 1 + .../images/icons/arrow-right.svg.import | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg.import diff --git a/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg b/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg new file mode 100644 index 0000000..f1170ce --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg.import b/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg.import new file mode 100644 index 0000000..38ed6f3 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://n3171hh2ie3y" +path="res://.godot/imported/arrow-right.svg-afeda494362285ebf5e08f273e16ce90.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg" +dest_files=["res://.godot/imported/arrow-right.svg-afeda494362285ebf5e08f273e16ce90.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false From 003ef615acefe7e85f0ce4af52d26ab72dc1a5aa Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 21:37:37 +0100 Subject: [PATCH 30/53] add resources icon --- .../images/icons/resources.svg | 1 + .../images/icons/resources.svg.import | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/resources.svg create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/resources.svg.import diff --git a/addons/GDQuest_GDScript_formatter/images/icons/resources.svg b/addons/GDQuest_GDScript_formatter/images/icons/resources.svg new file mode 100644 index 0000000..3ca9445 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/resources.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/GDQuest_GDScript_formatter/images/icons/resources.svg.import b/addons/GDQuest_GDScript_formatter/images/icons/resources.svg.import new file mode 100644 index 0000000..7107fb9 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/resources.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgwq4as8xi47j" +path="res://.godot/imported/resources.svg-c9d73a79fde4a2d7e788a9b272643ba4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/GDQuest_GDScript_formatter/images/icons/resources.svg" +dest_files=["res://.godot/imported/resources.svg-c9d73a79fde4a2d7e788a9b272643ba4.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false From 62b39d1b1789824e7b8a751c46679389aa2e7aec Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 21:37:55 +0100 Subject: [PATCH 31/53] add heading to resources section --- .../editor/greeter.gd | 4 +- .../editor/greeter.tscn | 74 ++++++++++++------- 2 files changed, 51 insertions(+), 27 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 502e2d8..fd85d7c 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -8,8 +8,8 @@ signal action_pressed(action: String) @onready var _formatter_version_label: Label = $Container/Padding/Layout/Versions/Formatter/Layout/Meta/Value @onready var _heading_label: Label = $Container/Padding/Layout/Heading/Description -@onready var _docs_button: Button = $Container/Padding/Layout/Resources/Docs/HBoxContainer/DocsButton -@onready var _issues_button: Button = $Container/Padding/Layout/Resources/Issues/HBoxContainer/IssuesButton +@onready var _docs_button: Button = $Container/Padding/Layout/Resources/Items/Docs/HBoxContainer/DocsButton +@onready var _issues_button: Button = $Container/Padding/Layout/Resources/Items/Issues/HBoxContainer/IssuesButton @onready var _formatter_button: Button = $Container/Padding/Layout/Versions/Formatter/Layout/FormatterButton var _addon_version: String = "0.0.0" diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 79e85aa..c96e9f4 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -3,6 +3,7 @@ [ext_resource type="Script" uid="uid://chtdytdwey3un" path="res://addons/GDQuest_GDScript_formatter/editor/greeter.gd" id="1_cku6i"] [ext_resource type="Texture2D" uid="uid://cp5vhsg54dmt5" path="res://addons/GDQuest_GDScript_formatter/images/gdquest_logo.svg" id="1_hq2xi"] [ext_resource type="Texture2D" uid="uid://pfs8d8babvcu" path="res://addons/GDQuest_GDScript_formatter/images/icons/download.svg" id="3_cku6i"] +[ext_resource type="Texture2D" uid="uid://bgwq4as8xi47j" path="res://addons/GDQuest_GDScript_formatter/images/icons/resources.svg" id="4_2dn7m"] [ext_resource type="Texture2D" uid="uid://ctpras52nelx3" path="res://addons/GDQuest_GDScript_formatter/images/icons/link.svg" id="4_yrmdb"] [ext_resource type="Texture2D" uid="uid://dp30pekmsn6tt" path="res://addons/GDQuest_GDScript_formatter/images/icons/settings.svg" id="5_lrwqi"] @@ -30,7 +31,7 @@ corner_radius_bottom_right = 8 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yrmdb"] content_margin_left = 8.0 content_margin_top = 8.0 -content_margin_right = 16.0 +content_margin_right = 8.0 content_margin_bottom = 8.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_top_left = 8 @@ -39,14 +40,14 @@ corner_radius_top_right = 8 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cx1jr"] content_margin_left = 8.0 content_margin_top = 8.0 -content_margin_right = 16.0 +content_margin_right = 8.0 content_margin_bottom = 8.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lrwqi"] content_margin_left = 8.0 content_margin_top = 8.0 -content_margin_right = 16.0 +content_margin_right = 8.0 content_margin_bottom = 8.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_bottom_right = 8 @@ -56,7 +57,7 @@ corner_radius_bottom_left = 8 oversampling_override = 1.0 title = "GDScript Formatter" initial_position = 1 -size = Vector2i(435, 336) +size = Vector2i(439, 401) visible = false wrap_controls = true unresizable = true @@ -79,17 +80,17 @@ metadata/_edit_use_anchors_ = true [node name="Padding" type="MarginContainer" parent="Container" unique_id=83505692] clip_contents = true layout_mode = 2 -theme_override_constants/margin_left = 8 -theme_override_constants/margin_top = 8 -theme_override_constants/margin_right = 8 -theme_override_constants/margin_bottom = 8 +theme_override_constants/margin_left = 16 +theme_override_constants/margin_top = 16 +theme_override_constants/margin_right = 16 +theme_override_constants/margin_bottom = 16 metadata/_edit_use_anchors_ = true [node name="Layout" type="VBoxContainer" parent="Container/Padding" unique_id=508597381] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 -theme_override_constants/separation = 8 +theme_override_constants/separation = 16 [node name="Heading" type="VBoxContainer" parent="Container/Padding/Layout" unique_id=1777254668] layout_mode = 2 @@ -204,10 +205,33 @@ icon_alignment = 1 [node name="Resources" type="VBoxContainer" parent="Container/Padding/Layout" unique_id=308460711] layout_mode = 2 accessibility_name = "Resources" -theme_override_constants/separation = 1 +theme_override_constants/separation = 4 accessibility_region = true -[node name="Docs" type="PanelContainer" parent="Container/Padding/Layout/Resources" unique_id=1617879850] +[node name="Heading" type="HBoxContainer" parent="Container/Padding/Layout/Resources" unique_id=2131034157] +layout_mode = 2 +size_flags_vertical = 0 +theme_override_constants/separation = 0 + +[node name="TextureRect" type="TextureRect" parent="Container/Padding/Layout/Resources/Heading" unique_id=213876480] +custom_maximum_size = Vector2(18, 18) +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +texture = ExtResource("4_2dn7m") + +[node name="Label" type="Label" parent="Container/Padding/Layout/Resources/Heading" unique_id=326050371] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +theme_type_variation = &"HeaderSmall" +text = "Resources" + +[node name="Items" type="VBoxContainer" parent="Container/Padding/Layout/Resources" unique_id=528407113] +layout_mode = 2 +theme_override_constants/separation = 1 + +[node name="Docs" type="PanelContainer" parent="Container/Padding/Layout/Resources/Items" unique_id=1617879850] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Documentation" @@ -215,23 +239,23 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_yrmdb") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Docs" unique_id=730529116] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Items/Docs" unique_id=730529116] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Docs/HBoxContainer" unique_id=491611772] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Items/Docs/HBoxContainer" unique_id=491611772] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Docs/HBoxContainer/Meta" unique_id=292956704] +[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Items/Docs/HBoxContainer/Meta" unique_id=292956704] layout_mode = 2 size_flags_vertical = 3 theme_type_variation = &"HeaderSmall" text = "Documentation" -[node name="DocsButton" type="Button" parent="Container/Padding/Layout/Resources/Docs/HBoxContainer" unique_id=1379633793] +[node name="DocsButton" type="Button" parent="Container/Padding/Layout/Resources/Items/Docs/HBoxContainer" unique_id=1379633793] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "View documentation" @@ -239,7 +263,7 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("4_yrmdb") icon_alignment = 1 -[node name="Issues" type="PanelContainer" parent="Container/Padding/Layout/Resources" unique_id=828435889] +[node name="Issues" type="PanelContainer" parent="Container/Padding/Layout/Resources/Items" unique_id=828435889] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Issue tracker" @@ -247,24 +271,24 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_cx1jr") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Issues" unique_id=1959402616] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Items/Issues" unique_id=1959402616] layout_mode = 2 size_flags_vertical = 4 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Issues/HBoxContainer" unique_id=820974620] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Items/Issues/HBoxContainer" unique_id=820974620] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Issues/HBoxContainer/Meta" unique_id=669708178] +[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Items/Issues/HBoxContainer/Meta" unique_id=669708178] layout_mode = 2 size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" text = "Issue Tracker" -[node name="IssuesButton" type="Button" parent="Container/Padding/Layout/Resources/Issues/HBoxContainer" unique_id=225001517] +[node name="IssuesButton" type="Button" parent="Container/Padding/Layout/Resources/Items/Issues/HBoxContainer" unique_id=225001517] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Report an issue" @@ -273,7 +297,7 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("4_yrmdb") icon_alignment = 1 -[node name="Settings" type="PanelContainer" parent="Container/Padding/Layout/Resources" unique_id=1686778136] +[node name="Settings" type="PanelContainer" parent="Container/Padding/Layout/Resources/Items" unique_id=1686778136] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Addon settings" @@ -281,24 +305,24 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Settings" unique_id=1987605781] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Items/Settings" unique_id=1987605781] layout_mode = 2 size_flags_vertical = 4 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Settings/HBoxContainer" unique_id=1350916315] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Items/Settings/HBoxContainer" unique_id=1350916315] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Settings/HBoxContainer/Meta" unique_id=1328338107] +[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Items/Settings/HBoxContainer/Meta" unique_id=1328338107] layout_mode = 2 size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" text = "Addon Settings" -[node name="SettingsButton" type="Button" parent="Container/Padding/Layout/Resources/Settings/HBoxContainer" unique_id=1257919535] +[node name="SettingsButton" type="Button" parent="Container/Padding/Layout/Resources/Items/Settings/HBoxContainer" unique_id=1257919535] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "View addon settings" From b937697ff7a593dea3836bd67b126f196011b359 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 21:48:13 +0100 Subject: [PATCH 32/53] move addon settings under new quick settings section --- .../editor/greeter.gd | 4 +- .../editor/greeter.tscn | 130 ++++++++++++------ 2 files changed, 87 insertions(+), 47 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index fd85d7c..5c9f1e1 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -8,8 +8,8 @@ signal action_pressed(action: String) @onready var _formatter_version_label: Label = $Container/Padding/Layout/Versions/Formatter/Layout/Meta/Value @onready var _heading_label: Label = $Container/Padding/Layout/Heading/Description -@onready var _docs_button: Button = $Container/Padding/Layout/Resources/Items/Docs/HBoxContainer/DocsButton -@onready var _issues_button: Button = $Container/Padding/Layout/Resources/Items/Issues/HBoxContainer/IssuesButton +@onready var _docs_button: Button = $Container/Padding/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/DocsButton +@onready var _issues_button: Button = $Container/Padding/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/IssuesButton @onready var _formatter_button: Button = $Container/Padding/Layout/Versions/Formatter/Layout/FormatterButton var _addon_version: String = "0.0.0" diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index c96e9f4..661761a 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -5,6 +5,7 @@ [ext_resource type="Texture2D" uid="uid://pfs8d8babvcu" path="res://addons/GDQuest_GDScript_formatter/images/icons/download.svg" id="3_cku6i"] [ext_resource type="Texture2D" uid="uid://bgwq4as8xi47j" path="res://addons/GDQuest_GDScript_formatter/images/icons/resources.svg" id="4_2dn7m"] [ext_resource type="Texture2D" uid="uid://ctpras52nelx3" path="res://addons/GDQuest_GDScript_formatter/images/icons/link.svg" id="4_yrmdb"] +[ext_resource type="Texture2D" uid="uid://n3171hh2ie3y" path="res://addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg" id="5_cx1jr"] [ext_resource type="Texture2D" uid="uid://dp30pekmsn6tt" path="res://addons/GDQuest_GDScript_formatter/images/icons/settings.svg" id="5_lrwqi"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2dn7m"] @@ -28,7 +29,7 @@ bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_top_right = 8 corner_radius_bottom_right = 8 -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yrmdb"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lrwqi"] content_margin_left = 8.0 content_margin_top = 8.0 content_margin_right = 8.0 @@ -36,15 +37,19 @@ content_margin_bottom = 8.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_top_left = 8 corner_radius_top_right = 8 +corner_radius_bottom_right = 8 +corner_radius_bottom_left = 8 -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cx1jr"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yrmdb"] content_margin_left = 8.0 content_margin_top = 8.0 content_margin_right = 8.0 content_margin_bottom = 8.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) +corner_radius_top_left = 8 +corner_radius_top_right = 8 -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lrwqi"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cx1jr"] content_margin_left = 8.0 content_margin_top = 8.0 content_margin_right = 8.0 @@ -57,7 +62,7 @@ corner_radius_bottom_left = 8 oversampling_override = 1.0 title = "GDScript Formatter" initial_position = 1 -size = Vector2i(439, 401) +size = Vector2i(500, 354) visible = false wrap_controls = true unresizable = true @@ -202,131 +207,166 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("3_cku6i") icon_alignment = 1 -[node name="Resources" type="VBoxContainer" parent="Container/Padding/Layout" unique_id=308460711] +[node name="SplitPanel" type="HBoxContainer" parent="Container/Padding/Layout" unique_id=1617836975] layout_mode = 2 +theme_override_constants/separation = 16 + +[node name="QuickSettings" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel" unique_id=255097673] +layout_mode = 2 +size_flags_horizontal = 3 accessibility_name = "Resources" theme_override_constants/separation = 4 accessibility_region = true -[node name="Heading" type="HBoxContainer" parent="Container/Padding/Layout/Resources" unique_id=2131034157] +[node name="Heading" type="HBoxContainer" parent="Container/Padding/Layout/SplitPanel/QuickSettings" unique_id=627743144] layout_mode = 2 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="TextureRect" type="TextureRect" parent="Container/Padding/Layout/Resources/Heading" unique_id=213876480] +[node name="TextureRect" type="TextureRect" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Heading" unique_id=1095513836] custom_maximum_size = Vector2(18, 18) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 -texture = ExtResource("4_2dn7m") +texture = ExtResource("5_lrwqi") -[node name="Label" type="Label" parent="Container/Padding/Layout/Resources/Heading" unique_id=326050371] +[node name="Label" type="Label" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Heading" unique_id=2032064637] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_type_variation = &"HeaderSmall" -text = "Resources" +text = "Quick Settings" -[node name="Items" type="VBoxContainer" parent="Container/Padding/Layout/Resources" unique_id=528407113] +[node name="Items" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel/QuickSettings" unique_id=1814396095] layout_mode = 2 theme_override_constants/separation = 1 -[node name="Docs" type="PanelContainer" parent="Container/Padding/Layout/Resources/Items" unique_id=1617879850] +[node name="Settings" type="PanelContainer" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Items" unique_id=151495686] layout_mode = 2 size_flags_horizontal = 3 -accessibility_name = "Documentation" +accessibility_name = "Addon settings" accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/Title")]) -theme_override_styles/panel = SubResource("StyleBoxFlat_yrmdb") +theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Items/Docs" unique_id=730529116] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Items/Settings" unique_id=948736503] layout_mode = 2 +size_flags_vertical = 4 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Items/Docs/HBoxContainer" unique_id=491611772] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer" unique_id=1723535888] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Items/Docs/HBoxContainer/Meta" unique_id=292956704] +[node name="Title" type="Label" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer/Meta" unique_id=2111755764] layout_mode = 2 -size_flags_vertical = 3 +size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" -text = "Documentation" +text = "More Settings" -[node name="DocsButton" type="Button" parent="Container/Padding/Layout/Resources/Items/Docs/HBoxContainer" unique_id=1379633793] +[node name="SettingsButton" type="Button" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer" unique_id=976437207] layout_mode = 2 size_flags_vertical = 4 -tooltip_text = "View documentation" +tooltip_text = "View addon settings" +accessibility_name = "View addon settings" theme_override_constants/icon_max_width = 18 -icon = ExtResource("4_yrmdb") +icon = ExtResource("5_cx1jr") icon_alignment = 1 -[node name="Issues" type="PanelContainer" parent="Container/Padding/Layout/Resources/Items" unique_id=828435889] +[node name="Resources" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel" unique_id=308460711] layout_mode = 2 size_flags_horizontal = 3 -accessibility_name = "Issue tracker" -accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/Title")]) -theme_override_styles/panel = SubResource("StyleBoxFlat_cx1jr") +accessibility_name = "Resources" +theme_override_constants/separation = 4 accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Items/Issues" unique_id=1959402616] +[node name="Heading" type="HBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources" unique_id=2131034157] +layout_mode = 2 +size_flags_vertical = 0 +theme_override_constants/separation = 0 + +[node name="TextureRect" type="TextureRect" parent="Container/Padding/Layout/SplitPanel/Resources/Heading" unique_id=213876480] +custom_maximum_size = Vector2(18, 18) layout_mode = 2 +size_flags_horizontal = 4 size_flags_vertical = 4 +texture = ExtResource("4_2dn7m") + +[node name="Label" type="Label" parent="Container/Padding/Layout/SplitPanel/Resources/Heading" unique_id=326050371] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 0 +theme_type_variation = &"HeaderSmall" +text = "Resources" + +[node name="Items" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources" unique_id=528407113] +layout_mode = 2 +theme_override_constants/separation = 1 + +[node name="Docs" type="PanelContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items" unique_id=1617879850] +layout_mode = 2 +size_flags_horizontal = 3 +accessibility_name = "Documentation" +accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/Title")]) +theme_override_styles/panel = SubResource("StyleBoxFlat_yrmdb") +accessibility_region = true + +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Docs" unique_id=730529116] +layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Items/Issues/HBoxContainer" unique_id=820974620] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer" unique_id=491611772] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Items/Issues/HBoxContainer/Meta" unique_id=669708178] +[node name="Title" type="Label" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/Meta" unique_id=292956704] layout_mode = 2 -size_flags_vertical = 2 +size_flags_vertical = 3 theme_type_variation = &"HeaderSmall" -text = "Issue Tracker" +text = "Documentation" -[node name="IssuesButton" type="Button" parent="Container/Padding/Layout/Resources/Items/Issues/HBoxContainer" unique_id=225001517] +[node name="DocsButton" type="Button" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer" unique_id=1379633793] layout_mode = 2 size_flags_vertical = 4 -tooltip_text = "Report an issue" -accessibility_name = "Report an issue" +tooltip_text = "View documentation" theme_override_constants/icon_max_width = 18 icon = ExtResource("4_yrmdb") icon_alignment = 1 -[node name="Settings" type="PanelContainer" parent="Container/Padding/Layout/Resources/Items" unique_id=1686778136] +[node name="Issues" type="PanelContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items" unique_id=828435889] layout_mode = 2 size_flags_horizontal = 3 -accessibility_name = "Addon settings" +accessibility_name = "Issue tracker" accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/Title")]) -theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") +theme_override_styles/panel = SubResource("StyleBoxFlat_cx1jr") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/Resources/Items/Settings" unique_id=1987605781] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Issues" unique_id=1959402616] layout_mode = 2 size_flags_vertical = 4 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Resources/Items/Settings/HBoxContainer" unique_id=1350916315] +[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer" unique_id=820974620] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/Resources/Items/Settings/HBoxContainer/Meta" unique_id=1328338107] +[node name="Title" type="Label" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/Meta" unique_id=669708178] layout_mode = 2 size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" -text = "Addon Settings" +text = "Issue Tracker" -[node name="SettingsButton" type="Button" parent="Container/Padding/Layout/Resources/Items/Settings/HBoxContainer" unique_id=1257919535] +[node name="IssuesButton" type="Button" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer" unique_id=225001517] layout_mode = 2 size_flags_vertical = 4 -tooltip_text = "View addon settings" -accessibility_name = "View addon settings" +tooltip_text = "Report an issue" +accessibility_name = "Report an issue" theme_override_constants/icon_max_width = 18 -icon = ExtResource("5_lrwqi") +icon = ExtResource("4_yrmdb") icon_alignment = 1 From ed1c9d78d16655043157af3d626dc05913e0db0e Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 22:00:17 +0100 Subject: [PATCH 33/53] replace margin container with content margin --- .../editor/greeter.gd | 12 +-- .../editor/greeter.tscn | 101 +++++++++--------- 2 files changed, 54 insertions(+), 59 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 5c9f1e1..3b6eb1e 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -4,13 +4,13 @@ extends Window signal action_pressed(action: String) -@onready var _addon_version_label: Label = $Container/Padding/Layout/Versions/Addon/Layout/Meta/Value -@onready var _formatter_version_label: Label = $Container/Padding/Layout/Versions/Formatter/Layout/Meta/Value -@onready var _heading_label: Label = $Container/Padding/Layout/Heading/Description +@onready var _addon_version_label: Label = $Container/Layout/Versions/Addon/Layout/Meta/Value +@onready var _formatter_version_label: Label = $Container/Layout/Versions/Formatter/Layout/Meta/Value +@onready var _heading_label: Label = $Container/Layout/Heading/Description -@onready var _docs_button: Button = $Container/Padding/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/DocsButton -@onready var _issues_button: Button = $Container/Padding/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/IssuesButton -@onready var _formatter_button: Button = $Container/Padding/Layout/Versions/Formatter/Layout/FormatterButton +@onready var _docs_button: Button = $Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/DocsButton +@onready var _issues_button: Button = $Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/IssuesButton +@onready var _formatter_button: Button = $Container/Layout/Versions/Formatter/Layout/FormatterButton var _addon_version: String = "0.0.0" var _formatter_version: String = "0.0.0" diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 661761a..eae0d0a 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -9,6 +9,10 @@ [ext_resource type="Texture2D" uid="uid://dp30pekmsn6tt" path="res://addons/GDQuest_GDScript_formatter/images/icons/settings.svg" id="5_lrwqi"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2dn7m"] +content_margin_left = 16.0 +content_margin_top = 16.0 +content_margin_right = 16.0 +content_margin_bottom = 16.0 bg_color = Color(0.105882354, 0.105882354, 0.105882354, 1) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cku6i"] @@ -82,34 +86,25 @@ size_flags_vertical = 3 theme_override_styles/panel = SubResource("StyleBoxFlat_2dn7m") metadata/_edit_use_anchors_ = true -[node name="Padding" type="MarginContainer" parent="Container" unique_id=83505692] -clip_contents = true -layout_mode = 2 -theme_override_constants/margin_left = 16 -theme_override_constants/margin_top = 16 -theme_override_constants/margin_right = 16 -theme_override_constants/margin_bottom = 16 -metadata/_edit_use_anchors_ = true - -[node name="Layout" type="VBoxContainer" parent="Container/Padding" unique_id=508597381] +[node name="Layout" type="VBoxContainer" parent="Container" unique_id=508597381] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 3 theme_override_constants/separation = 16 -[node name="Heading" type="VBoxContainer" parent="Container/Padding/Layout" unique_id=1777254668] +[node name="Heading" type="VBoxContainer" parent="Container/Layout" unique_id=1777254668] layout_mode = 2 theme_override_constants/separation = 8 -[node name="Branding" type="CenterContainer" parent="Container/Padding/Layout/Heading" unique_id=373074182] +[node name="Branding" type="CenterContainer" parent="Container/Layout/Heading" unique_id=373074182] layout_mode = 2 -[node name="Logo" type="TextureRect" parent="Container/Padding/Layout/Heading/Branding" unique_id=859651745] +[node name="Logo" type="TextureRect" parent="Container/Layout/Heading/Branding" unique_id=859651745] layout_mode = 2 texture = ExtResource("1_hq2xi") stretch_mode = 4 -[node name="Description" type="Label" parent="Container/Padding/Layout/Heading" unique_id=1391782465] +[node name="Description" type="Label" parent="Container/Layout/Heading" unique_id=1391782465] layout_mode = 2 size_flags_vertical = 0 theme_override_font_sizes/font_size = 16 @@ -117,7 +112,7 @@ text = "A faster code formatter for GDScript and Godot 4" horizontal_alignment = 1 vertical_alignment = 1 -[node name="Versions" type="HBoxContainer" parent="Container/Padding/Layout" unique_id=215688731] +[node name="Versions" type="HBoxContainer" parent="Container/Layout" unique_id=215688731] layout_mode = 2 size_flags_vertical = 0 accessibility_name = "Versions" @@ -125,7 +120,7 @@ accessibility_description = "Addon and formatter versions" theme_override_constants/separation = 1 accessibility_region = true -[node name="Addon" type="PanelContainer" parent="Container/Padding/Layout/Versions" unique_id=1266364516] +[node name="Addon" type="PanelContainer" parent="Container/Layout/Versions" unique_id=1266364516] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Addon version" @@ -134,23 +129,23 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("Layout/Meta/Title")] theme_override_styles/panel = SubResource("StyleBoxFlat_cku6i") accessibility_region = true -[node name="Layout" type="HBoxContainer" parent="Container/Padding/Layout/Versions/Addon" unique_id=1478601450] +[node name="Layout" type="HBoxContainer" parent="Container/Layout/Versions/Addon" unique_id=1478601450] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Versions/Addon/Layout" unique_id=764178420] +[node name="Meta" type="VBoxContainer" parent="Container/Layout/Versions/Addon/Layout" unique_id=764178420] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1563506712] +[node name="Title" type="Label" parent="Container/Layout/Versions/Addon/Layout/Meta" unique_id=1563506712] layout_mode = 2 size_flags_vertical = 0 theme_type_variation = &"HeaderSmall" text = "Addon Version" -[node name="Value" type="Label" parent="Container/Padding/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] +[node name="Value" type="Label" parent="Container/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] layout_mode = 2 size_flags_vertical = 0 accessibility_live = 1 @@ -158,7 +153,7 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) theme_override_font_sizes/font_size = 14 text = "0.0.0" -[node name="Button" type="Button" parent="Container/Padding/Layout/Versions/Addon/Layout" unique_id=1381876748] +[node name="Button" type="Button" parent="Container/Layout/Versions/Addon/Layout" unique_id=1381876748] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Download update" @@ -167,7 +162,7 @@ disabled = true icon = ExtResource("3_cku6i") icon_alignment = 1 -[node name="Formatter" type="PanelContainer" parent="Container/Padding/Layout/Versions" unique_id=1351105920] +[node name="Formatter" type="PanelContainer" parent="Container/Layout/Versions" unique_id=1351105920] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Formatter version" @@ -176,29 +171,29 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("Layout/Meta/Title")] theme_override_styles/panel = SubResource("StyleBoxFlat_hq2xi") accessibility_region = true -[node name="Layout" type="HBoxContainer" parent="Container/Padding/Layout/Versions/Formatter" unique_id=185289625] +[node name="Layout" type="HBoxContainer" parent="Container/Layout/Versions/Formatter" unique_id=185289625] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/Versions/Formatter/Layout" unique_id=1585824214] +[node name="Meta" type="VBoxContainer" parent="Container/Layout/Versions/Formatter/Layout" unique_id=1585824214] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 -[node name="Title" type="Label" parent="Container/Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=265656052] +[node name="Title" type="Label" parent="Container/Layout/Versions/Formatter/Layout/Meta" unique_id=265656052] layout_mode = 2 size_flags_vertical = 3 theme_type_variation = &"HeaderSmall" text = "Formatter Version" -[node name="Value" type="Label" parent="Container/Padding/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] +[node name="Value" type="Label" parent="Container/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] layout_mode = 2 size_flags_vertical = 2 accessibility_live = 1 accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) text = "0.0.0" -[node name="FormatterButton" type="Button" parent="Container/Padding/Layout/Versions/Formatter/Layout" unique_id=1459022472] +[node name="FormatterButton" type="Button" parent="Container/Layout/Versions/Formatter/Layout" unique_id=1459022472] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 @@ -207,41 +202,41 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("3_cku6i") icon_alignment = 1 -[node name="SplitPanel" type="HBoxContainer" parent="Container/Padding/Layout" unique_id=1617836975] +[node name="SplitPanel" type="HBoxContainer" parent="Container/Layout" unique_id=1617836975] layout_mode = 2 theme_override_constants/separation = 16 -[node name="QuickSettings" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel" unique_id=255097673] +[node name="QuickSettings" type="VBoxContainer" parent="Container/Layout/SplitPanel" unique_id=255097673] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Resources" theme_override_constants/separation = 4 accessibility_region = true -[node name="Heading" type="HBoxContainer" parent="Container/Padding/Layout/SplitPanel/QuickSettings" unique_id=627743144] +[node name="Heading" type="HBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings" unique_id=627743144] layout_mode = 2 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="TextureRect" type="TextureRect" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Heading" unique_id=1095513836] +[node name="TextureRect" type="TextureRect" parent="Container/Layout/SplitPanel/QuickSettings/Heading" unique_id=1095513836] custom_maximum_size = Vector2(18, 18) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 texture = ExtResource("5_lrwqi") -[node name="Label" type="Label" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Heading" unique_id=2032064637] +[node name="Label" type="Label" parent="Container/Layout/SplitPanel/QuickSettings/Heading" unique_id=2032064637] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_type_variation = &"HeaderSmall" text = "Quick Settings" -[node name="Items" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel/QuickSettings" unique_id=1814396095] +[node name="Items" type="VBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings" unique_id=1814396095] layout_mode = 2 theme_override_constants/separation = 1 -[node name="Settings" type="PanelContainer" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Items" unique_id=151495686] +[node name="Settings" type="PanelContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items" unique_id=151495686] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Addon settings" @@ -249,24 +244,24 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Items/Settings" unique_id=948736503] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items/Settings" unique_id=948736503] layout_mode = 2 size_flags_vertical = 4 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer" unique_id=1723535888] +[node name="Meta" type="VBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer" unique_id=1723535888] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer/Meta" unique_id=2111755764] +[node name="Title" type="Label" parent="Container/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer/Meta" unique_id=2111755764] layout_mode = 2 size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" text = "More Settings" -[node name="SettingsButton" type="Button" parent="Container/Padding/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer" unique_id=976437207] +[node name="SettingsButton" type="Button" parent="Container/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer" unique_id=976437207] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "View addon settings" @@ -275,37 +270,37 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("5_cx1jr") icon_alignment = 1 -[node name="Resources" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel" unique_id=308460711] +[node name="Resources" type="VBoxContainer" parent="Container/Layout/SplitPanel" unique_id=308460711] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Resources" theme_override_constants/separation = 4 accessibility_region = true -[node name="Heading" type="HBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources" unique_id=2131034157] +[node name="Heading" type="HBoxContainer" parent="Container/Layout/SplitPanel/Resources" unique_id=2131034157] layout_mode = 2 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="TextureRect" type="TextureRect" parent="Container/Padding/Layout/SplitPanel/Resources/Heading" unique_id=213876480] +[node name="TextureRect" type="TextureRect" parent="Container/Layout/SplitPanel/Resources/Heading" unique_id=213876480] custom_maximum_size = Vector2(18, 18) layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 texture = ExtResource("4_2dn7m") -[node name="Label" type="Label" parent="Container/Padding/Layout/SplitPanel/Resources/Heading" unique_id=326050371] +[node name="Label" type="Label" parent="Container/Layout/SplitPanel/Resources/Heading" unique_id=326050371] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_type_variation = &"HeaderSmall" text = "Resources" -[node name="Items" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources" unique_id=528407113] +[node name="Items" type="VBoxContainer" parent="Container/Layout/SplitPanel/Resources" unique_id=528407113] layout_mode = 2 theme_override_constants/separation = 1 -[node name="Docs" type="PanelContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items" unique_id=1617879850] +[node name="Docs" type="PanelContainer" parent="Container/Layout/SplitPanel/Resources/Items" unique_id=1617879850] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Documentation" @@ -313,23 +308,23 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_yrmdb") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Docs" unique_id=730529116] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Layout/SplitPanel/Resources/Items/Docs" unique_id=730529116] layout_mode = 2 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer" unique_id=491611772] +[node name="Meta" type="VBoxContainer" parent="Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer" unique_id=491611772] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/Meta" unique_id=292956704] +[node name="Title" type="Label" parent="Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/Meta" unique_id=292956704] layout_mode = 2 size_flags_vertical = 3 theme_type_variation = &"HeaderSmall" text = "Documentation" -[node name="DocsButton" type="Button" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer" unique_id=1379633793] +[node name="DocsButton" type="Button" parent="Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer" unique_id=1379633793] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "View documentation" @@ -337,7 +332,7 @@ theme_override_constants/icon_max_width = 18 icon = ExtResource("4_yrmdb") icon_alignment = 1 -[node name="Issues" type="PanelContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items" unique_id=828435889] +[node name="Issues" type="PanelContainer" parent="Container/Layout/SplitPanel/Resources/Items" unique_id=828435889] layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Issue tracker" @@ -345,24 +340,24 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_cx1jr") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Issues" unique_id=1959402616] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Layout/SplitPanel/Resources/Items/Issues" unique_id=1959402616] layout_mode = 2 size_flags_vertical = 4 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer" unique_id=820974620] +[node name="Meta" type="VBoxContainer" parent="Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer" unique_id=820974620] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/Meta" unique_id=669708178] +[node name="Title" type="Label" parent="Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/Meta" unique_id=669708178] layout_mode = 2 size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" text = "Issue Tracker" -[node name="IssuesButton" type="Button" parent="Container/Padding/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer" unique_id=225001517] +[node name="IssuesButton" type="Button" parent="Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer" unique_id=225001517] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Report an issue" From 25bc9df3974fe61cc0533175f45c4fee8f750f61 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 22:06:06 +0100 Subject: [PATCH 34/53] add visibility toggle for more settings card --- addons/GDQuest_GDScript_formatter/editor/greeter.gd | 6 ++++++ addons/GDQuest_GDScript_formatter/editor/greeter.tscn | 11 ++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 3b6eb1e..72fd8fe 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -12,6 +12,10 @@ signal action_pressed(action: String) @onready var _issues_button: Button = $Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/IssuesButton @onready var _formatter_button: Button = $Container/Layout/Versions/Formatter/Layout/FormatterButton +@onready var _more_settings_card: PanelContainer = $Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings + +@export var enable_more_settings: bool = false + var _addon_version: String = "0.0.0" var _formatter_version: String = "0.0.0" @@ -26,6 +30,8 @@ func _ready() -> void: _issues_button.button_down.connect(_handle_issues_press) _formatter_button.button_down.connect(_handle_formatter_press) + _more_settings_card.visible = enable_more_settings + _update_tagline() diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index eae0d0a..1f59c96 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -236,7 +236,8 @@ text = "Quick Settings" layout_mode = 2 theme_override_constants/separation = 1 -[node name="Settings" type="PanelContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items" unique_id=151495686] +[node name="MoreSettings" type="PanelContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items" unique_id=151495686] +visible = false layout_mode = 2 size_flags_horizontal = 3 accessibility_name = "Addon settings" @@ -244,24 +245,24 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/T theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") accessibility_region = true -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items/Settings" unique_id=948736503] +[node name="HBoxContainer" type="HBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings" unique_id=948736503] layout_mode = 2 size_flags_vertical = 4 theme_override_constants/separation = 16 -[node name="Meta" type="VBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer" unique_id=1723535888] +[node name="Meta" type="VBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer" unique_id=1723535888] layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_override_constants/separation = 0 -[node name="Title" type="Label" parent="Container/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer/Meta" unique_id=2111755764] +[node name="Title" type="Label" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer/Meta" unique_id=2111755764] layout_mode = 2 size_flags_vertical = 2 theme_type_variation = &"HeaderSmall" text = "More Settings" -[node name="SettingsButton" type="Button" parent="Container/Layout/SplitPanel/QuickSettings/Items/Settings/HBoxContainer" unique_id=976437207] +[node name="MoreSettingsButton" type="Button" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer" unique_id=976437207] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "View addon settings" From 2f012fc8dac01782ceb648f37ce3df7dd1324eaa Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Mon, 27 Jul 2026 23:02:46 +0100 Subject: [PATCH 35/53] add basic addon update mechanism --- addons/GDQuest_GDScript_formatter/editor/greeter.gd | 7 +++++++ addons/GDQuest_GDScript_formatter/editor/greeter.tscn | 3 +-- addons/GDQuest_GDScript_formatter/plugin.gd | 6 ++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 72fd8fe..9498fdf 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -11,6 +11,7 @@ signal action_pressed(action: String) @onready var _docs_button: Button = $Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/DocsButton @onready var _issues_button: Button = $Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/IssuesButton @onready var _formatter_button: Button = $Container/Layout/Versions/Formatter/Layout/FormatterButton +@onready var _addon_button: Button = $Container/Layout/Versions/Addon/Layout/AddonButton @onready var _more_settings_card: PanelContainer = $Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings @@ -29,6 +30,7 @@ func _ready() -> void: _docs_button.button_down.connect(_handle_docs_press) _issues_button.button_down.connect(_handle_issues_press) _formatter_button.button_down.connect(_handle_formatter_press) + _addon_button.button_down.connect(_handle_addon_press) _more_settings_card.visible = enable_more_settings @@ -62,6 +64,7 @@ func _handle_close() -> void: _docs_button.button_down.disconnect(_handle_docs_press) _issues_button.button_down.disconnect(_handle_issues_press) _formatter_button.button_down.disconnect(_handle_formatter_press) + _addon_button.button_down.disconnect(_handle_addon_press) hide() @@ -76,3 +79,7 @@ func _handle_issues_press() -> void: func _handle_formatter_press() -> void: action_pressed.emit("install_update") + + +func _handle_addon_press() -> void: + action_pressed.emit("update_addon") diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 1f59c96..af3c74e 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -153,12 +153,11 @@ accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) theme_override_font_sizes/font_size = 14 text = "0.0.0" -[node name="Button" type="Button" parent="Container/Layout/Versions/Addon/Layout" unique_id=1381876748] +[node name="AddonButton" type="Button" parent="Container/Layout/Versions/Addon/Layout" unique_id=1381876748] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Download update" theme_override_constants/icon_max_width = 18 -disabled = true icon = ExtResource("3_cku6i") icon_alignment = 1 diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 80904d8..530926d 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -525,6 +525,10 @@ func show_help() -> void: OS.shell_open("https://www.gdquest.com/library/gdscript_formatter/") +func update_addon() -> void: + OS.shell_open("https://github.com/GDQuest/GDScript-formatter/releases") + + func _on_menu_item_selected(command: String) -> void: match command: "format_script": @@ -541,6 +545,8 @@ func _on_menu_item_selected(command: String) -> void: report_issue() "help": show_help() + "update_addon": + update_addon() _: push_warning("Unsupported command sent from the menu: " + command) From f112fffac1276effc496bacb689119eca0beb53a Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Tue, 28 Jul 2026 21:19:18 +0100 Subject: [PATCH 36/53] improve the look of the version section --- .../editor/greeter.tscn | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index af3c74e..276f729 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -16,19 +16,23 @@ content_margin_bottom = 16.0 bg_color = Color(0.105882354, 0.105882354, 0.105882354, 1) [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_cku6i"] -content_margin_left = 8.0 +content_margin_left = 4.0 content_margin_top = 4.0 -content_margin_right = 16.0 +content_margin_right = 12.0 content_margin_bottom = 4.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_top_left = 8 corner_radius_bottom_left = 8 +[sub_resource type="SystemFont" id="SystemFont_cx1jr"] +font_names = PackedStringArray("Monospace") +font_weight = 600 + [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hq2xi"] -content_margin_left = 8.0 -content_margin_top = 8.0 -content_margin_right = 16.0 -content_margin_bottom = 8.0 +content_margin_left = 4.0 +content_margin_top = 4.0 +content_margin_right = 12.0 +content_margin_bottom = 4.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_top_right = 8 corner_radius_bottom_right = 8 @@ -66,7 +70,7 @@ corner_radius_bottom_left = 8 oversampling_override = 1.0 title = "GDScript Formatter" initial_position = 1 -size = Vector2i(500, 354) +size = Vector2i(500, 341) visible = false wrap_controls = true unresizable = true @@ -137,12 +141,12 @@ theme_override_constants/separation = 16 layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 -theme_override_constants/separation = 0 +theme_override_constants/separation = -4 [node name="Title" type="Label" parent="Container/Layout/Versions/Addon/Layout/Meta" unique_id=1563506712] layout_mode = 2 size_flags_vertical = 0 -theme_type_variation = &"HeaderSmall" +theme_override_font_sizes/font_size = 12 text = "Addon Version" [node name="Value" type="Label" parent="Container/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] @@ -150,7 +154,8 @@ layout_mode = 2 size_flags_vertical = 0 accessibility_live = 1 accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) -theme_override_font_sizes/font_size = 14 +theme_override_fonts/font = SubResource("SystemFont_cx1jr") +theme_override_font_sizes/font_size = 16 text = "0.0.0" [node name="AddonButton" type="Button" parent="Container/Layout/Versions/Addon/Layout" unique_id=1381876748] @@ -178,11 +183,12 @@ theme_override_constants/separation = 16 layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 4 +theme_override_constants/separation = -4 [node name="Title" type="Label" parent="Container/Layout/Versions/Formatter/Layout/Meta" unique_id=265656052] layout_mode = 2 size_flags_vertical = 3 -theme_type_variation = &"HeaderSmall" +theme_override_font_sizes/font_size = 12 text = "Formatter Version" [node name="Value" type="Label" parent="Container/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] @@ -190,6 +196,8 @@ layout_mode = 2 size_flags_vertical = 2 accessibility_live = 1 accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) +theme_override_fonts/font = SubResource("SystemFont_cx1jr") +theme_override_font_sizes/font_size = 16 text = "0.0.0" [node name="FormatterButton" type="Button" parent="Container/Layout/Versions/Formatter/Layout" unique_id=1459022472] From 0ed7b2f1b934ed7a108b71fbd07c17111dbe3551 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Tue, 28 Jul 2026 21:24:37 +0100 Subject: [PATCH 37/53] improve the look of the split panel --- .../editor/greeter.tscn | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 276f729..8b8a71c 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -27,6 +27,7 @@ corner_radius_bottom_left = 8 [sub_resource type="SystemFont" id="SystemFont_cx1jr"] font_names = PackedStringArray("Monospace") font_weight = 600 +subpixel_positioning = 0 [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_hq2xi"] content_margin_left = 4.0 @@ -211,7 +212,7 @@ icon_alignment = 1 [node name="SplitPanel" type="HBoxContainer" parent="Container/Layout" unique_id=1617836975] layout_mode = 2 -theme_override_constants/separation = 16 +theme_override_constants/separation = 8 [node name="QuickSettings" type="VBoxContainer" parent="Container/Layout/SplitPanel" unique_id=255097673] layout_mode = 2 @@ -247,6 +248,7 @@ theme_override_constants/separation = 1 visible = false layout_mode = 2 size_flags_horizontal = 3 +size_flags_vertical = 3 accessibility_name = "Addon settings" accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/Title")]) theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") @@ -260,13 +262,13 @@ theme_override_constants/separation = 16 [node name="Meta" type="VBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer" unique_id=1723535888] layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 0 +size_flags_vertical = 4 theme_override_constants/separation = 0 [node name="Title" type="Label" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer/Meta" unique_id=2111755764] layout_mode = 2 size_flags_vertical = 2 -theme_type_variation = &"HeaderSmall" +theme_override_font_sizes/font_size = 12 text = "More Settings" [node name="MoreSettingsButton" type="Button" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer" unique_id=976437207] @@ -318,18 +320,19 @@ accessibility_region = true [node name="HBoxContainer" type="HBoxContainer" parent="Container/Layout/SplitPanel/Resources/Items/Docs" unique_id=730529116] layout_mode = 2 +size_flags_vertical = 0 theme_override_constants/separation = 16 [node name="Meta" type="VBoxContainer" parent="Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer" unique_id=491611772] layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 0 +size_flags_vertical = 4 theme_override_constants/separation = 0 [node name="Title" type="Label" parent="Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/Meta" unique_id=292956704] layout_mode = 2 size_flags_vertical = 3 -theme_type_variation = &"HeaderSmall" +theme_override_font_sizes/font_size = 12 text = "Documentation" [node name="DocsButton" type="Button" parent="Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer" unique_id=1379633793] @@ -356,13 +359,14 @@ theme_override_constants/separation = 16 [node name="Meta" type="VBoxContainer" parent="Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer" unique_id=820974620] layout_mode = 2 size_flags_horizontal = 3 -size_flags_vertical = 0 +size_flags_vertical = 4 theme_override_constants/separation = 0 [node name="Title" type="Label" parent="Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/Meta" unique_id=669708178] layout_mode = 2 +size_flags_horizontal = 0 size_flags_vertical = 2 -theme_type_variation = &"HeaderSmall" +theme_override_font_sizes/font_size = 12 text = "Issue Tracker" [node name="IssuesButton" type="Button" parent="Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer" unique_id=225001517] From c937af8d0953267dd097bd20f46934d24a1a4695 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Tue, 28 Jul 2026 22:35:54 +0100 Subject: [PATCH 38/53] reduce icon size on buttons slightly --- addons/GDQuest_GDScript_formatter/editor/greeter.tscn | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 8b8a71c..7f33447 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -163,7 +163,7 @@ text = "0.0.0" layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Download update" -theme_override_constants/icon_max_width = 18 +theme_override_constants/icon_max_width = 16 icon = ExtResource("3_cku6i") icon_alignment = 1 @@ -206,7 +206,7 @@ layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 tooltip_text = "Download update" -theme_override_constants/icon_max_width = 18 +theme_override_constants/icon_max_width = 16 icon = ExtResource("3_cku6i") icon_alignment = 1 @@ -276,7 +276,7 @@ layout_mode = 2 size_flags_vertical = 4 tooltip_text = "View addon settings" accessibility_name = "View addon settings" -theme_override_constants/icon_max_width = 18 +theme_override_constants/icon_max_width = 16 icon = ExtResource("5_cx1jr") icon_alignment = 1 @@ -339,7 +339,7 @@ text = "Documentation" layout_mode = 2 size_flags_vertical = 4 tooltip_text = "View documentation" -theme_override_constants/icon_max_width = 18 +theme_override_constants/icon_max_width = 16 icon = ExtResource("4_yrmdb") icon_alignment = 1 @@ -374,6 +374,6 @@ layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Report an issue" accessibility_name = "Report an issue" -theme_override_constants/icon_max_width = 18 +theme_override_constants/icon_max_width = 16 icon = ExtResource("4_yrmdb") icon_alignment = 1 From df0de7913a29d7b80c53d8e51d018aa62a19df7c Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Tue, 28 Jul 2026 22:43:48 +0100 Subject: [PATCH 39/53] change casing --- addons/GDQuest_GDScript_formatter/editor/greeter.tscn | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 7f33447..7c863c7 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -148,7 +148,7 @@ theme_override_constants/separation = -4 layout_mode = 2 size_flags_vertical = 0 theme_override_font_sizes/font_size = 12 -text = "Addon Version" +text = "Addon version" [node name="Value" type="Label" parent="Container/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] layout_mode = 2 @@ -190,7 +190,7 @@ theme_override_constants/separation = -4 layout_mode = 2 size_flags_vertical = 3 theme_override_font_sizes/font_size = 12 -text = "Formatter Version" +text = "Formatter version" [node name="Value" type="Label" parent="Container/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] layout_mode = 2 @@ -238,7 +238,7 @@ layout_mode = 2 size_flags_horizontal = 3 size_flags_vertical = 0 theme_type_variation = &"HeaderSmall" -text = "Quick Settings" +text = "Quick settings" [node name="Items" type="VBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings" unique_id=1814396095] layout_mode = 2 @@ -269,7 +269,7 @@ theme_override_constants/separation = 0 layout_mode = 2 size_flags_vertical = 2 theme_override_font_sizes/font_size = 12 -text = "More Settings" +text = "More settings" [node name="MoreSettingsButton" type="Button" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer" unique_id=976437207] layout_mode = 2 @@ -367,7 +367,7 @@ layout_mode = 2 size_flags_horizontal = 0 size_flags_vertical = 2 theme_override_font_sizes/font_size = 12 -text = "Issue Tracker" +text = "Issue tracker" [node name="IssuesButton" type="Button" parent="Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer" unique_id=225001517] layout_mode = 2 From 729151d124ecf84f4885cddd0a6c58a80c77cd18 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Tue, 28 Jul 2026 22:47:49 +0100 Subject: [PATCH 40/53] add format/lint on save to quick settings --- .../editor/greeter.tscn | 50 ++++++++++++++++++- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 7c863c7..6ca2f86 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -38,7 +38,7 @@ bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_top_right = 8 corner_radius_bottom_right = 8 -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lrwqi"] +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0pdmk"] content_margin_left = 8.0 content_margin_top = 8.0 content_margin_right = 8.0 @@ -46,6 +46,20 @@ content_margin_bottom = 8.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_top_left = 8 corner_radius_top_right = 8 + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ciixy"] +content_margin_left = 8.0 +content_margin_top = 8.0 +content_margin_right = 8.0 +content_margin_bottom = 8.0 +bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) + +[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lrwqi"] +content_margin_left = 8.0 +content_margin_top = 8.0 +content_margin_right = 8.0 +content_margin_bottom = 8.0 +bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_bottom_right = 8 corner_radius_bottom_left = 8 @@ -71,7 +85,7 @@ corner_radius_bottom_left = 8 oversampling_override = 1.0 title = "GDScript Formatter" initial_position = 1 -size = Vector2i(500, 341) +size = Vector2i(500, 378) visible = false wrap_controls = true unresizable = true @@ -244,6 +258,38 @@ text = "Quick settings" layout_mode = 2 theme_override_constants/separation = 1 +[node name="FormatOnSave" type="PanelContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items" unique_id=839105562] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +accessibility_name = "Format on save" +accessibility_labeled_by_nodes = Array[NodePath]([NodePath("")]) +theme_override_styles/panel = SubResource("StyleBoxFlat_0pdmk") +accessibility_region = true + +[node name="Toggle" type="CheckButton" parent="Container/Layout/SplitPanel/QuickSettings/Items/FormatOnSave" unique_id=762096402] +layout_mode = 2 +tooltip_text = "Automatically formats your code when the file is saved" +theme_override_font_sizes/font_size = 12 +text = "Format on save" +flat = true + +[node name="LintOnSave" type="PanelContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items" unique_id=1685232789] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +accessibility_name = "Lint on save" +accessibility_labeled_by_nodes = Array[NodePath]([NodePath("")]) +theme_override_styles/panel = SubResource("StyleBoxFlat_ciixy") +accessibility_region = true + +[node name="Toggle" type="CheckButton" parent="Container/Layout/SplitPanel/QuickSettings/Items/LintOnSave" unique_id=693952472] +layout_mode = 2 +tooltip_text = "Automatically checks your code for mistakes when the file is saved" +theme_override_font_sizes/font_size = 12 +text = "Lint on save" +flat = true + [node name="MoreSettings" type="PanelContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items" unique_id=151495686] visible = false layout_mode = 2 From 0d96a044ea685b3b0b94dbc9cb60b8ac0e22b3e4 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Wed, 29 Jul 2026 20:32:50 +0100 Subject: [PATCH 41/53] first pass of working settings --- .../editor/greeter.gd | 52 +++++++++++++++---- addons/GDQuest_GDScript_formatter/plugin.gd | 21 ++++++++ 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 9498fdf..24854c4 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -3,6 +3,7 @@ class_name Greeter extends Window signal action_pressed(action: String) +signal setting_changed(setting: String, value: Variant) @onready var _addon_version_label: Label = $Container/Layout/Versions/Addon/Layout/Meta/Value @onready var _formatter_version_label: Label = $Container/Layout/Versions/Formatter/Layout/Meta/Value @@ -12,6 +13,8 @@ signal action_pressed(action: String) @onready var _issues_button: Button = $Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/IssuesButton @onready var _formatter_button: Button = $Container/Layout/Versions/Formatter/Layout/FormatterButton @onready var _addon_button: Button = $Container/Layout/Versions/Addon/Layout/AddonButton +@onready var _format_on_save_toggle: CheckButton = $Container/Layout/SplitPanel/QuickSettings/Items/FormatOnSave/Toggle +@onready var _lint_on_save_toggle: CheckButton = $Container/Layout/SplitPanel/QuickSettings/Items/LintOnSave/Toggle @onready var _more_settings_card: PanelContainer = $Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings @@ -19,53 +22,76 @@ signal action_pressed(action: String) var _addon_version: String = "0.0.0" var _formatter_version: String = "0.0.0" +var _setting_states: Dictionary = { } func _ready() -> void: _addon_version_label.text = _addon_version _formatter_version_label.text = _formatter_version - + close_requested.connect(_handle_close) - + _docs_button.button_down.connect(_handle_docs_press) _issues_button.button_down.connect(_handle_issues_press) _formatter_button.button_down.connect(_handle_formatter_press) _addon_button.button_down.connect(_handle_addon_press) - + _format_on_save_toggle.toggled.connect(_handle_format_on_save_toggle) + _lint_on_save_toggle.toggled.connect(_handle_lint_on_save_toggle) + _more_settings_card.visible = enable_more_settings - + _update_tagline() + _update_setting_ui() func set_addon_version(version: String) -> void: _addon_version = version - + if is_node_ready(): _addon_version_label.text = _addon_version func set_formatter_version(version: String) -> void: _formatter_version = version - + if is_node_ready(): _formatter_version_label.text = _formatter_version +func set_setting_state(setting: String, value: Variant) -> void: + _setting_states.set(setting, value) + + if is_node_ready(): + _update_setting_ui() + + func _update_tagline() -> void: var godot_version = Engine.get_version_info() var version_major = str(godot_version.major) - + _heading_label.text = _heading_label.text.replace("", version_major) +func _update_setting_ui() -> void: + if _setting_states.has("format_on_save"): + var state = _setting_states.get("format_on_save") + + _format_on_save_toggle.button_pressed = state == true + + if _setting_states.has("lint_on_save"): + var state = _setting_states.get("lint_on_save") + + _lint_on_save_toggle.button_pressed = state == true + + func _handle_close() -> void: close_requested.disconnect(_handle_close) - + _docs_button.button_down.disconnect(_handle_docs_press) _issues_button.button_down.disconnect(_handle_issues_press) _formatter_button.button_down.disconnect(_handle_formatter_press) _addon_button.button_down.disconnect(_handle_addon_press) - + hide() @@ -83,3 +109,11 @@ func _handle_formatter_press() -> void: func _handle_addon_press() -> void: action_pressed.emit("update_addon") + + +func _handle_format_on_save_toggle(state: bool) -> void: + setting_changed.emit("format_on_save", state) + + +func _handle_lint_on_save_toggle(state: bool) -> void: + setting_changed.emit("lint_on_save", state) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 530926d..363a794 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -33,6 +33,12 @@ const COMMAND_PALETTE_INSTALL_UPDATE = "Install or Update Formatter" const COMMAND_PALETTE_UNINSTALL = "Uninstall Formatter" const COMMAND_PALETTE_REPORT_ISSUE = "Report Issue" +# Quick settings that are shown in the greeter +const QUICK_SETTINGS = [ + SETTING_FORMAT_ON_SAVE, + SETTING_LINT_ON_SAVE +] + var DEFAULT_SETTINGS = { SETTING_FORMAT_ON_SAVE: false, SETTING_USE_SPACES: false, @@ -46,6 +52,7 @@ var DEFAULT_SETTINGS = { SETTING_IGNORED_DIRECTORIES: PackedStringArray(["addons/"]), } + ## Which gutter lint icons are shown in. ## By default, gutter 0 is for breakpoints and 1 is for things like overrides. const GUTTER_LINT_ICON_INDEX = 2 @@ -144,8 +151,21 @@ func _show_greeter() -> void: greeter_panel.popup_centered() greeter_panel.action_pressed.connect(_on_menu_item_selected) + greeter_panel.setting_changed.connect(set_editor_setting) + + _apply_greeter_defaults() +func _apply_greeter_defaults() -> void: + if not greeter_panel: + return + + for setting in QUICK_SETTINGS: + var state = get_editor_setting(setting) + + greeter_panel.set_setting_state(setting, state) + + func _exit_tree() -> void: resource_saved.disconnect(_on_resource_saved) @@ -159,6 +179,7 @@ func _exit_tree() -> void: installer = null greeter_panel.action_pressed.disconnect(_on_menu_item_selected) + greeter_panel.setting_changed.disconnect(set_editor_setting) greeter_panel.queue_free() if is_instance_valid(menu): From 025f019f06cd40ac90734a677df1f3bd7cd057ef Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Wed, 29 Jul 2026 22:34:31 +0100 Subject: [PATCH 42/53] sync setting changes from editor --- addons/GDQuest_GDScript_formatter/plugin.gd | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 363a794..65c6d98 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -65,6 +65,7 @@ var menu: FormatterMenu = null var greeter_panel: Greeter = null var _has_uninstall_command := false var _has_formatter_command := false +var _setting_updated_via_greeter := false # Used to auto detect changes to the project's .editorconfig file. var _editorconfig_last_modified_time := -1 # Editorconfig allows setting rules per path glob. We track globs for the format @@ -140,7 +141,7 @@ func _enter_tree() -> void: update_shortcut() resource_saved.connect(_on_resource_saved) - + func _show_greeter() -> void: if not greeter_panel: @@ -151,10 +152,14 @@ func _show_greeter() -> void: greeter_panel.popup_centered() greeter_panel.action_pressed.connect(_on_menu_item_selected) - greeter_panel.setting_changed.connect(set_editor_setting) + greeter_panel.setting_changed.connect(_handle_greeter_setting_change) _apply_greeter_defaults() +func _handle_greeter_setting_change(setting: String, value: Variant) -> void: + _setting_updated_via_greeter = true + + set_editor_setting(setting, value) func _apply_greeter_defaults() -> void: if not greeter_panel: @@ -189,6 +194,15 @@ func _exit_tree() -> void: menu = null +func _notification(what: int) -> void: + var has_settings_changed = what == EditorSettings.NOTIFICATION_EDITOR_SETTINGS_CHANGED + + if has_settings_changed and not _setting_updated_via_greeter: + _apply_greeter_defaults() + + _setting_updated_via_greeter = false + + func _shortcut_input(event: InputEvent) -> void: var shortcut := get_editor_setting(SETTING_SHORTCUT) as Shortcut if not is_instance_valid(shortcut): From aff90ae0bb5d0538c11c82efa6d6e0aabf3e729a Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Wed, 29 Jul 2026 22:42:50 +0100 Subject: [PATCH 43/53] rebalance ui --- .../GDQuest_GDScript_formatter/editor/greeter.tscn | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 6ca2f86..74d0800 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -85,7 +85,7 @@ corner_radius_bottom_left = 8 oversampling_override = 1.0 title = "GDScript Formatter" initial_position = 1 -size = Vector2i(500, 378) +size = Vector2i(597, 409) visible = false wrap_controls = true unresizable = true @@ -126,7 +126,7 @@ stretch_mode = 4 [node name="Description" type="Label" parent="Container/Layout/Heading" unique_id=1391782465] layout_mode = 2 size_flags_vertical = 0 -theme_override_font_sizes/font_size = 16 +theme_override_font_sizes/font_size = 14 text = "A faster code formatter for GDScript and Godot 4" horizontal_alignment = 1 vertical_alignment = 1 @@ -161,7 +161,6 @@ theme_override_constants/separation = -4 [node name="Title" type="Label" parent="Container/Layout/Versions/Addon/Layout/Meta" unique_id=1563506712] layout_mode = 2 size_flags_vertical = 0 -theme_override_font_sizes/font_size = 12 text = "Addon version" [node name="Value" type="Label" parent="Container/Layout/Versions/Addon/Layout/Meta" unique_id=1344464055] @@ -203,7 +202,6 @@ theme_override_constants/separation = -4 [node name="Title" type="Label" parent="Container/Layout/Versions/Formatter/Layout/Meta" unique_id=265656052] layout_mode = 2 size_flags_vertical = 3 -theme_override_font_sizes/font_size = 12 text = "Formatter version" [node name="Value" type="Label" parent="Container/Layout/Versions/Formatter/Layout/Meta" unique_id=1786751365] @@ -270,7 +268,6 @@ accessibility_region = true [node name="Toggle" type="CheckButton" parent="Container/Layout/SplitPanel/QuickSettings/Items/FormatOnSave" unique_id=762096402] layout_mode = 2 tooltip_text = "Automatically formats your code when the file is saved" -theme_override_font_sizes/font_size = 12 text = "Format on save" flat = true @@ -286,7 +283,6 @@ accessibility_region = true [node name="Toggle" type="CheckButton" parent="Container/Layout/SplitPanel/QuickSettings/Items/LintOnSave" unique_id=693952472] layout_mode = 2 tooltip_text = "Automatically checks your code for mistakes when the file is saved" -theme_override_font_sizes/font_size = 12 text = "Lint on save" flat = true @@ -314,7 +310,6 @@ theme_override_constants/separation = 0 [node name="Title" type="Label" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer/Meta" unique_id=2111755764] layout_mode = 2 size_flags_vertical = 2 -theme_override_font_sizes/font_size = 12 text = "More settings" [node name="MoreSettingsButton" type="Button" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer" unique_id=976437207] @@ -378,7 +373,6 @@ theme_override_constants/separation = 0 [node name="Title" type="Label" parent="Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/Meta" unique_id=292956704] layout_mode = 2 size_flags_vertical = 3 -theme_override_font_sizes/font_size = 12 text = "Documentation" [node name="DocsButton" type="Button" parent="Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer" unique_id=1379633793] @@ -410,9 +404,7 @@ theme_override_constants/separation = 0 [node name="Title" type="Label" parent="Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/Meta" unique_id=669708178] layout_mode = 2 -size_flags_horizontal = 0 size_flags_vertical = 2 -theme_override_font_sizes/font_size = 12 text = "Issue tracker" [node name="IssuesButton" type="Button" parent="Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer" unique_id=225001517] From e0b2f5d64a91049b20268b39975807f020800540 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Wed, 29 Jul 2026 23:31:36 +0100 Subject: [PATCH 44/53] simplify quick settings section --- .../editor/greeter.gd | 4 -- .../editor/greeter.tscn | 57 ++++--------------- 2 files changed, 11 insertions(+), 50 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 24854c4..b2da3db 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -16,8 +16,6 @@ signal setting_changed(setting: String, value: Variant) @onready var _format_on_save_toggle: CheckButton = $Container/Layout/SplitPanel/QuickSettings/Items/FormatOnSave/Toggle @onready var _lint_on_save_toggle: CheckButton = $Container/Layout/SplitPanel/QuickSettings/Items/LintOnSave/Toggle -@onready var _more_settings_card: PanelContainer = $Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings - @export var enable_more_settings: bool = false var _addon_version: String = "0.0.0" @@ -38,8 +36,6 @@ func _ready() -> void: _format_on_save_toggle.toggled.connect(_handle_format_on_save_toggle) _lint_on_save_toggle.toggled.connect(_handle_lint_on_save_toggle) - _more_settings_card.visible = enable_more_settings - _update_tagline() _update_setting_ui() diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 74d0800..6b834be 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -5,7 +5,6 @@ [ext_resource type="Texture2D" uid="uid://pfs8d8babvcu" path="res://addons/GDQuest_GDScript_formatter/images/icons/download.svg" id="3_cku6i"] [ext_resource type="Texture2D" uid="uid://bgwq4as8xi47j" path="res://addons/GDQuest_GDScript_formatter/images/icons/resources.svg" id="4_2dn7m"] [ext_resource type="Texture2D" uid="uid://ctpras52nelx3" path="res://addons/GDQuest_GDScript_formatter/images/icons/link.svg" id="4_yrmdb"] -[ext_resource type="Texture2D" uid="uid://n3171hh2ie3y" path="res://addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg" id="5_cx1jr"] [ext_resource type="Texture2D" uid="uid://dp30pekmsn6tt" path="res://addons/GDQuest_GDScript_formatter/images/icons/settings.svg" id="5_lrwqi"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2dn7m"] @@ -53,13 +52,6 @@ content_margin_top = 8.0 content_margin_right = 8.0 content_margin_bottom = 8.0 bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_lrwqi"] -content_margin_left = 8.0 -content_margin_top = 8.0 -content_margin_right = 8.0 -content_margin_bottom = 8.0 -bg_color = Color(0.13333334, 0.13333334, 0.13333334, 1) corner_radius_bottom_right = 8 corner_radius_bottom_left = 8 @@ -85,7 +77,7 @@ corner_radius_bottom_left = 8 oversampling_override = 1.0 title = "GDScript Formatter" initial_position = 1 -size = Vector2i(597, 409) +size = Vector2i(500, 339) visible = false wrap_controls = true unresizable = true @@ -236,6 +228,11 @@ accessibility_region = true [node name="Heading" type="HBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings" unique_id=627743144] layout_mode = 2 size_flags_vertical = 0 +tooltip_text = "Quick access to the most +commonly used settings. + +Need more? Find them +under your Editor Settings." theme_override_constants/separation = 0 [node name="TextureRect" type="TextureRect" parent="Container/Layout/SplitPanel/QuickSettings/Heading" unique_id=1095513836] @@ -267,7 +264,8 @@ accessibility_region = true [node name="Toggle" type="CheckButton" parent="Container/Layout/SplitPanel/QuickSettings/Items/FormatOnSave" unique_id=762096402] layout_mode = 2 -tooltip_text = "Automatically formats your code when the file is saved" +tooltip_text = "Formats your code +when the file is saved" text = "Format on save" flat = true @@ -282,45 +280,12 @@ accessibility_region = true [node name="Toggle" type="CheckButton" parent="Container/Layout/SplitPanel/QuickSettings/Items/LintOnSave" unique_id=693952472] layout_mode = 2 -tooltip_text = "Automatically checks your code for mistakes when the file is saved" +tooltip_text = "Checks your code +for common mistakes when +the file is saved" text = "Lint on save" flat = true -[node name="MoreSettings" type="PanelContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items" unique_id=151495686] -visible = false -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -accessibility_name = "Addon settings" -accessibility_labeled_by_nodes = Array[NodePath]([NodePath("HBoxContainer/Meta/Title")]) -theme_override_styles/panel = SubResource("StyleBoxFlat_lrwqi") -accessibility_region = true - -[node name="HBoxContainer" type="HBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings" unique_id=948736503] -layout_mode = 2 -size_flags_vertical = 4 -theme_override_constants/separation = 16 - -[node name="Meta" type="VBoxContainer" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer" unique_id=1723535888] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 4 -theme_override_constants/separation = 0 - -[node name="Title" type="Label" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer/Meta" unique_id=2111755764] -layout_mode = 2 -size_flags_vertical = 2 -text = "More settings" - -[node name="MoreSettingsButton" type="Button" parent="Container/Layout/SplitPanel/QuickSettings/Items/MoreSettings/HBoxContainer" unique_id=976437207] -layout_mode = 2 -size_flags_vertical = 4 -tooltip_text = "View addon settings" -accessibility_name = "View addon settings" -theme_override_constants/icon_max_width = 16 -icon = ExtResource("5_cx1jr") -icon_alignment = 1 - [node name="Resources" type="VBoxContainer" parent="Container/Layout/SplitPanel" unique_id=308460711] layout_mode = 2 size_flags_horizontal = 3 From 9347498d92f8e1a4471c2f563283676fdfaa55f2 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Wed, 29 Jul 2026 23:31:46 +0100 Subject: [PATCH 45/53] remove unused icon --- .../images/icons/arrow-right.svg | 1 - .../images/icons/arrow-right.svg.import | 43 ------------------- 2 files changed, 44 deletions(-) delete mode 100644 addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg delete mode 100644 addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg.import diff --git a/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg b/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg deleted file mode 100644 index f1170ce..0000000 --- a/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg.import b/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg.import deleted file mode 100644 index 38ed6f3..0000000 --- a/addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg.import +++ /dev/null @@ -1,43 +0,0 @@ -[remap] - -importer="texture" -type="CompressedTexture2D" -uid="uid://n3171hh2ie3y" -path="res://.godot/imported/arrow-right.svg-afeda494362285ebf5e08f273e16ce90.ctex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://addons/GDQuest_GDScript_formatter/images/icons/arrow-right.svg" -dest_files=["res://.godot/imported/arrow-right.svg-afeda494362285ebf5e08f273e16ce90.ctex"] - -[params] - -compress/mode=0 -compress/high_quality=false -compress/lossy_quality=0.7 -compress/uastc_level=0 -compress/rdo_quality_loss=0.0 -compress/hdr_compression=1 -compress/normal_map=0 -compress/channel_pack=0 -mipmaps/generate=false -mipmaps/limit=-1 -roughness/mode=0 -roughness/src_normal="" -process/channel_remap/red=0 -process/channel_remap/green=1 -process/channel_remap/blue=2 -process/channel_remap/alpha=3 -process/fix_alpha_border=true -process/premult_alpha=false -process/normal_map_invert_y=false -process/hdr_as_srgb=false -process/hdr_clamp_exposure=false -process/size_limit=0 -detect_3d/compress_to=1 -svg/scale=1.0 -editor/scale_with_editor_scale=false -editor/convert_colors_with_editor_theme=false From 9c10b3b5cd9987d3a276f41a3153d0f64754545c Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 30 Jul 2026 00:20:38 +0100 Subject: [PATCH 46/53] fix setting changed signal not being disconnected correctly --- addons/GDQuest_GDScript_formatter/plugin.gd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 81e0224..5033d23 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -270,7 +270,7 @@ func _exit_tree() -> void: installer = null greeter_panel.action_pressed.disconnect(_on_menu_item_selected) - greeter_panel.setting_changed.disconnect(set_editor_setting) + greeter_panel.setting_changed.disconnect(_handle_greeter_setting_change) greeter_panel.queue_free() if is_instance_valid(menu): From a4087c5813ef2f6cf7ab94f5bbfa55ce7f9b1c1d Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 30 Jul 2026 13:10:07 +0100 Subject: [PATCH 47/53] improve messaging around versions and how to get the latest versions --- addons/GDQuest_GDScript_formatter/editor/greeter.tscn | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 6b834be..34ef58c 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -167,9 +167,10 @@ text = "0.0.0" [node name="AddonButton" type="Button" parent="Container/Layout/Versions/Addon/Layout" unique_id=1381876748] layout_mode = 2 size_flags_vertical = 4 -tooltip_text = "Download update" +tooltip_text = "Download the latest version +from GitHub" theme_override_constants/icon_max_width = 16 -icon = ExtResource("3_cku6i") +icon = ExtResource("4_yrmdb") icon_alignment = 1 [node name="Formatter" type="PanelContainer" parent="Container/Layout/Versions" unique_id=1351105920] @@ -209,7 +210,7 @@ text = "0.0.0" layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 -tooltip_text = "Download update" +tooltip_text = "Install the latest version" theme_override_constants/icon_max_width = 16 icon = ExtResource("3_cku6i") icon_alignment = 1 From ebd614b4f51ee1166bc650288a458c2978de897f Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 30 Jul 2026 23:17:54 +0100 Subject: [PATCH 48/53] show "-" instead of "0.0.0" as a fallback version --- addons/GDQuest_GDScript_formatter/editor/greeter.gd | 4 ++-- addons/GDQuest_GDScript_formatter/editor/greeter.tscn | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index b2da3db..60ea550 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -18,8 +18,8 @@ signal setting_changed(setting: String, value: Variant) @export var enable_more_settings: bool = false -var _addon_version: String = "0.0.0" -var _formatter_version: String = "0.0.0" +var _addon_version: String = "-" +var _formatter_version: String = "-" var _setting_states: Dictionary = { } diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 34ef58c..5d8708f 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -162,7 +162,7 @@ accessibility_live = 1 accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) theme_override_fonts/font = SubResource("SystemFont_cx1jr") theme_override_font_sizes/font_size = 16 -text = "0.0.0" +text = "-" [node name="AddonButton" type="Button" parent="Container/Layout/Versions/Addon/Layout" unique_id=1381876748] layout_mode = 2 @@ -204,7 +204,7 @@ accessibility_live = 1 accessibility_labeled_by_nodes = Array[NodePath]([NodePath("../Title")]) theme_override_fonts/font = SubResource("SystemFont_cx1jr") theme_override_font_sizes/font_size = 16 -text = "0.0.0" +text = "-" [node name="FormatterButton" type="Button" parent="Container/Layout/Versions/Formatter/Layout" unique_id=1459022472] layout_mode = 2 From ca9d125abe31bbca7ac6f4fae888cf2f1cf894f9 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 30 Jul 2026 23:18:50 +0100 Subject: [PATCH 49/53] remove unused export --- addons/GDQuest_GDScript_formatter/editor/greeter.gd | 2 -- 1 file changed, 2 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 60ea550..bf1d2d1 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -16,8 +16,6 @@ signal setting_changed(setting: String, value: Variant) @onready var _format_on_save_toggle: CheckButton = $Container/Layout/SplitPanel/QuickSettings/Items/FormatOnSave/Toggle @onready var _lint_on_save_toggle: CheckButton = $Container/Layout/SplitPanel/QuickSettings/Items/LintOnSave/Toggle -@export var enable_more_settings: bool = false - var _addon_version: String = "-" var _formatter_version: String = "-" var _setting_states: Dictionary = { } From 26f54827583ea1fb933ad66eb3b6e4d3cc65a9de Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 30 Jul 2026 23:22:08 +0100 Subject: [PATCH 50/53] rename version install buttons --- addons/GDQuest_GDScript_formatter/editor/greeter.gd | 12 ++++++------ .../GDQuest_GDScript_formatter/editor/greeter.tscn | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index bf1d2d1..20a8ab5 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -11,8 +11,8 @@ signal setting_changed(setting: String, value: Variant) @onready var _docs_button: Button = $Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/DocsButton @onready var _issues_button: Button = $Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/IssuesButton -@onready var _formatter_button: Button = $Container/Layout/Versions/Formatter/Layout/FormatterButton -@onready var _addon_button: Button = $Container/Layout/Versions/Addon/Layout/AddonButton +@onready var _formatter_install_button: Button = $Container/Layout/Versions/Formatter/Layout/InstallButton +@onready var _addon_install_button: Button = $Container/Layout/Versions/Addon/Layout/InstallButton @onready var _format_on_save_toggle: CheckButton = $Container/Layout/SplitPanel/QuickSettings/Items/FormatOnSave/Toggle @onready var _lint_on_save_toggle: CheckButton = $Container/Layout/SplitPanel/QuickSettings/Items/LintOnSave/Toggle @@ -29,8 +29,8 @@ func _ready() -> void: _docs_button.button_down.connect(_handle_docs_press) _issues_button.button_down.connect(_handle_issues_press) - _formatter_button.button_down.connect(_handle_formatter_press) - _addon_button.button_down.connect(_handle_addon_press) + _formatter_install_button.button_down.connect(_handle_formatter_press) + _addon_install_button.button_down.connect(_handle_addon_press) _format_on_save_toggle.toggled.connect(_handle_format_on_save_toggle) _lint_on_save_toggle.toggled.connect(_handle_lint_on_save_toggle) @@ -83,8 +83,8 @@ func _handle_close() -> void: _docs_button.button_down.disconnect(_handle_docs_press) _issues_button.button_down.disconnect(_handle_issues_press) - _formatter_button.button_down.disconnect(_handle_formatter_press) - _addon_button.button_down.disconnect(_handle_addon_press) + _formatter_install_button.button_down.disconnect(_handle_formatter_press) + _addon_install_button.button_down.disconnect(_handle_addon_press) hide() diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index 5d8708f..cf5f98c 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -164,7 +164,7 @@ theme_override_fonts/font = SubResource("SystemFont_cx1jr") theme_override_font_sizes/font_size = 16 text = "-" -[node name="AddonButton" type="Button" parent="Container/Layout/Versions/Addon/Layout" unique_id=1381876748] +[node name="InstallButton" type="Button" parent="Container/Layout/Versions/Addon/Layout" unique_id=1381876748] layout_mode = 2 size_flags_vertical = 4 tooltip_text = "Download the latest version @@ -206,7 +206,7 @@ theme_override_fonts/font = SubResource("SystemFont_cx1jr") theme_override_font_sizes/font_size = 16 text = "-" -[node name="FormatterButton" type="Button" parent="Container/Layout/Versions/Formatter/Layout" unique_id=1459022472] +[node name="InstallButton" type="Button" parent="Container/Layout/Versions/Formatter/Layout" unique_id=1459022472] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 From 4fdbbfdb01043544f172317d7421d3aa02f31f89 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 30 Jul 2026 23:26:55 +0100 Subject: [PATCH 51/53] add trash icon --- .../images/icons/trash.svg | 1 + .../images/icons/trash.svg.import | 43 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/trash.svg create mode 100644 addons/GDQuest_GDScript_formatter/images/icons/trash.svg.import diff --git a/addons/GDQuest_GDScript_formatter/images/icons/trash.svg b/addons/GDQuest_GDScript_formatter/images/icons/trash.svg new file mode 100644 index 0000000..a0052a0 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/trash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/addons/GDQuest_GDScript_formatter/images/icons/trash.svg.import b/addons/GDQuest_GDScript_formatter/images/icons/trash.svg.import new file mode 100644 index 0000000..9fdd4d0 --- /dev/null +++ b/addons/GDQuest_GDScript_formatter/images/icons/trash.svg.import @@ -0,0 +1,43 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c25vn7jgshggh" +path="res://.godot/imported/trash.svg-a9a6e3eec301ddf3c41ade5e7d043c57.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/GDQuest_GDScript_formatter/images/icons/trash.svg" +dest_files=["res://.godot/imported/trash.svg-a9a6e3eec301ddf3c41ade5e7d043c57.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false From 3835f2ccbe902f5e2b638d242bbaec086cb90315 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 30 Jul 2026 23:56:42 +0100 Subject: [PATCH 52/53] correctly handle when addon/formatter version is not returned --- addons/GDQuest_GDScript_formatter/plugin.gd | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 5033d23..24982fb 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -604,6 +604,9 @@ func _update_formatter_version() -> void: var formatter_version = get_formatter_version() + if not formatter_version: + return + greeter_panel.set_formatter_version(formatter_version) @@ -628,6 +631,9 @@ func _update_addon_version() -> void: var addon_version = get_addon_version() + if not addon_version: + return + greeter_panel.set_addon_version(addon_version) From 024b5df1c0f311d8ddc63cf0e836471782927449 Mon Sep 17 00:00:00 2001 From: Nathaniel Blackburn Date: Thu, 30 Jul 2026 23:57:56 +0100 Subject: [PATCH 53/53] add uninstall button to formatter version --- .../editor/greeter.gd | 20 ++++++++++++------ .../editor/greeter.tscn | 21 +++++++++++++++++-- addons/GDQuest_GDScript_formatter/plugin.gd | 8 +++++++ 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.gd b/addons/GDQuest_GDScript_formatter/editor/greeter.gd index 20a8ab5..d64259e 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.gd +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.gd @@ -11,7 +11,8 @@ signal setting_changed(setting: String, value: Variant) @onready var _docs_button: Button = $Container/Layout/SplitPanel/Resources/Items/Docs/HBoxContainer/DocsButton @onready var _issues_button: Button = $Container/Layout/SplitPanel/Resources/Items/Issues/HBoxContainer/IssuesButton -@onready var _formatter_install_button: Button = $Container/Layout/Versions/Formatter/Layout/InstallButton +@onready var _formatter_install_button: Button = $Container/Layout/Versions/Formatter/Layout/Actions/InstallButton +@onready var _formatter_uninstall_button: Button = $Container/Layout/Versions/Formatter/Layout/Actions/UninstallButton @onready var _addon_install_button: Button = $Container/Layout/Versions/Addon/Layout/InstallButton @onready var _format_on_save_toggle: CheckButton = $Container/Layout/SplitPanel/QuickSettings/Items/FormatOnSave/Toggle @onready var _lint_on_save_toggle: CheckButton = $Container/Layout/SplitPanel/QuickSettings/Items/LintOnSave/Toggle @@ -29,7 +30,8 @@ func _ready() -> void: _docs_button.button_down.connect(_handle_docs_press) _issues_button.button_down.connect(_handle_issues_press) - _formatter_install_button.button_down.connect(_handle_formatter_press) + _formatter_install_button.button_down.connect(_handle_formatter_install) + _formatter_uninstall_button.button_down.connect(_handle_formatter_uninstall) _addon_install_button.button_down.connect(_handle_addon_press) _format_on_save_toggle.toggled.connect(_handle_format_on_save_toggle) _lint_on_save_toggle.toggled.connect(_handle_lint_on_save_toggle) @@ -40,14 +42,15 @@ func _ready() -> void: func set_addon_version(version: String) -> void: _addon_version = version - + if is_node_ready(): _addon_version_label.text = _addon_version func set_formatter_version(version: String) -> void: _formatter_version = version - + _formatter_uninstall_button.disabled = _formatter_version == "-" + if is_node_ready(): _formatter_version_label.text = _formatter_version @@ -83,7 +86,8 @@ func _handle_close() -> void: _docs_button.button_down.disconnect(_handle_docs_press) _issues_button.button_down.disconnect(_handle_issues_press) - _formatter_install_button.button_down.disconnect(_handle_formatter_press) + _formatter_install_button.button_down.disconnect(_handle_formatter_install) + _formatter_uninstall_button.button_down.disconnect(_handle_formatter_uninstall) _addon_install_button.button_down.disconnect(_handle_addon_press) hide() @@ -97,10 +101,14 @@ func _handle_issues_press() -> void: action_pressed.emit("report_issue") -func _handle_formatter_press() -> void: +func _handle_formatter_install() -> void: action_pressed.emit("install_update") +func _handle_formatter_uninstall() -> void: + action_pressed.emit("uninstall") + + func _handle_addon_press() -> void: action_pressed.emit("update_addon") diff --git a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn index cf5f98c..9ec7223 100644 --- a/addons/GDQuest_GDScript_formatter/editor/greeter.tscn +++ b/addons/GDQuest_GDScript_formatter/editor/greeter.tscn @@ -5,6 +5,7 @@ [ext_resource type="Texture2D" uid="uid://pfs8d8babvcu" path="res://addons/GDQuest_GDScript_formatter/images/icons/download.svg" id="3_cku6i"] [ext_resource type="Texture2D" uid="uid://bgwq4as8xi47j" path="res://addons/GDQuest_GDScript_formatter/images/icons/resources.svg" id="4_2dn7m"] [ext_resource type="Texture2D" uid="uid://ctpras52nelx3" path="res://addons/GDQuest_GDScript_formatter/images/icons/link.svg" id="4_yrmdb"] +[ext_resource type="Texture2D" uid="uid://c25vn7jgshggh" path="res://addons/GDQuest_GDScript_formatter/images/icons/trash.svg" id="5_cx1jr"] [ext_resource type="Texture2D" uid="uid://dp30pekmsn6tt" path="res://addons/GDQuest_GDScript_formatter/images/icons/settings.svg" id="5_lrwqi"] [sub_resource type="StyleBoxFlat" id="StyleBoxFlat_2dn7m"] @@ -206,15 +207,31 @@ theme_override_fonts/font = SubResource("SystemFont_cx1jr") theme_override_font_sizes/font_size = 16 text = "-" -[node name="InstallButton" type="Button" parent="Container/Layout/Versions/Formatter/Layout" unique_id=1459022472] +[node name="Actions" type="HBoxContainer" parent="Container/Layout/Versions/Formatter/Layout" unique_id=568154137] +layout_mode = 2 +size_flags_vertical = 4 + +[node name="InstallButton" type="Button" parent="Container/Layout/Versions/Formatter/Layout/Actions" unique_id=1459022472] layout_mode = 2 size_flags_horizontal = 4 size_flags_vertical = 4 -tooltip_text = "Install the latest version" +tooltip_text = "Installs or updates +the formatter" theme_override_constants/icon_max_width = 16 icon = ExtResource("3_cku6i") icon_alignment = 1 +[node name="UninstallButton" type="Button" parent="Container/Layout/Versions/Formatter/Layout/Actions" unique_id=1828822505] +layout_mode = 2 +size_flags_horizontal = 4 +size_flags_vertical = 4 +tooltip_text = "Removes the formatter +from your system" +theme_override_constants/icon_max_width = 16 +disabled = true +icon = ExtResource("5_cx1jr") +icon_alignment = 1 + [node name="SplitPanel" type="HBoxContainer" parent="Container/Layout" unique_id=1617836975] layout_mode = 2 theme_override_constants/separation = 8 diff --git a/addons/GDQuest_GDScript_formatter/plugin.gd b/addons/GDQuest_GDScript_formatter/plugin.gd index 24982fb..3e01c85 100644 --- a/addons/GDQuest_GDScript_formatter/plugin.gd +++ b/addons/GDQuest_GDScript_formatter/plugin.gd @@ -608,6 +608,13 @@ func _update_formatter_version() -> void: return greeter_panel.set_formatter_version(formatter_version) + + +func _reset_formatter_version() -> void: + if not greeter_panel: + return + + greeter_panel.set_formatter_version("-") func get_addon_version(): @@ -663,6 +670,7 @@ func uninstall_formatter() -> void: add_format_command() remove_uninstall_command() add_uninstall_command() + _reset_formatter_version() if is_instance_valid(menu): menu.update_menu(false) else: