From bf898dc717eff801fdc67c3048048acd47351286 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Tue, 17 Jan 2023 21:39:28 +0100 Subject: [PATCH] Update and improve GUI Theming Override demo (#817) --- gui/theming_override/README.md | 6 +- gui/theming_override/icon.png.import | 29 +++-- gui/theming_override/project.godot | 9 +- gui/theming_override/screenshots/.gdignore | 0 .../screenshots/theming_override.png | Bin 6543 -> 0 bytes .../screenshots/theming_override.png.import | 35 ------ .../screenshots/theming_override.webp | Bin 0 -> 5310 bytes gui/theming_override/test.gd | 58 +++++----- gui/theming_override/test.tscn | 108 +++++++++--------- 9 files changed, 105 insertions(+), 140 deletions(-) create mode 100644 gui/theming_override/screenshots/.gdignore delete mode 100644 gui/theming_override/screenshots/theming_override.png delete mode 100644 gui/theming_override/screenshots/theming_override.png.import create mode 100644 gui/theming_override/screenshots/theming_override.webp diff --git a/gui/theming_override/README.md b/gui/theming_override/README.md index 5c817431..1ce99bca 100644 --- a/gui/theming_override/README.md +++ b/gui/theming_override/README.md @@ -1,13 +1,13 @@ -# GUI Theming Override Demo +# GUI Theming Override Demonstrates how to override GUI colors and styleboxes at runtime. Language: GDScript -Renderer: GLES 2 +Renderer: Compatibility Check out this demo on the asset library: https://godotengine.org/asset-library/asset/786 ## Screenshots -![Screenshot](screenshots/theming_override.png) +![Screenshot](screenshots/theming_override.webp) diff --git a/gui/theming_override/icon.png.import b/gui/theming_override/icon.png.import index 889af9df..4ec55648 100644 --- a/gui/theming_override/icon.png.import +++ b/gui/theming_override/icon.png.import @@ -1,8 +1,9 @@ [remap] importer="texture" -type="StreamTexture2D" -path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +type="CompressedTexture2D" +uid="uid://7wt6l3j3m4hn" +path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" metadata={ "vram_texture": false } @@ -10,26 +11,24 @@ metadata={ [deps] source_file="res://icon.png" -dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.stex"] +dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] [params] compress/mode=0 compress/lossy_quality=0.7 -compress/hdr_mode=0 +compress/hdr_compression=1 compress/bptc_ldr=0 compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" process/fix_alpha_border=true process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/gui/theming_override/project.godot b/gui/theming_override/project.godot index f9d8880e..1574d146 100644 --- a/gui/theming_override/project.godot +++ b/gui/theming_override/project.godot @@ -6,21 +6,26 @@ ; [section] ; section goes between [] ; param=value ; assign values to parameters -config_version=4 +config_version=5 [application] -config/name="GUI Theming Override Demo" +config/name="GUI Theming Override" config/description="Demonstrates how to override GUI colors and styleboxes at runtime." run/main_scene="res://test.tscn" +config/features=PackedStringArray("4.0") +run/low_processor_mode=true config/icon="res://icon.png" [display] window/size/viewport_height=576 +window/vsync/vsync_mode=0 window/stretch/mode="canvas_items" window/stretch/aspect="expand" [rendering] +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility" environment/defaults/default_clear_color=Color(0.133333, 0.133333, 0.133333, 1) diff --git a/gui/theming_override/screenshots/.gdignore b/gui/theming_override/screenshots/.gdignore new file mode 100644 index 00000000..e69de29b diff --git a/gui/theming_override/screenshots/theming_override.png b/gui/theming_override/screenshots/theming_override.png deleted file mode 100644 index a081b8c0c11ffc7b4b7d94c9f56cc6f920c30634..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6543 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 diff --git a/gui/theming_override/screenshots/theming_override.png.import b/gui/theming_override/screenshots/theming_override.png.import deleted file mode 100644 index b82c0998..00000000 --- a/gui/theming_override/screenshots/theming_override.png.import +++ /dev/null @@ -1,35 +0,0 @@ -[remap] - -importer="texture" -type="StreamTexture2D" -path="res://.godot/imported/theming_override.png-fd290b6e357e98ef694c719db436e418.stex" -metadata={ -"vram_texture": false -} - -[deps] - -source_file="res://screenshots/theming_override.png" -dest_files=["res://.godot/imported/theming_override.png-fd290b6e357e98ef694c719db436e418.stex"] - -[params] - -compress/mode=0 -compress/lossy_quality=0.7 -compress/hdr_mode=0 -compress/bptc_ldr=0 -compress/normal_map=0 -flags/repeat=0 -flags/filter=true -flags/mipmaps=false -flags/anisotropic=false -flags/srgb=2 -process/fix_alpha_border=true -process/premult_alpha=false -process/HDR_as_SRGB=false -process/invert_color=false -process/normal_map_invert_y=false -stream=false -size_limit=0 -detect_3d=true -svg/scale=1.0 diff --git a/gui/theming_override/screenshots/theming_override.webp b/gui/theming_override/screenshots/theming_override.webp new file mode 100644 index 0000000000000000000000000000000000000000..2e483e0f033d2c2804e58cfd2f6fc4264b8cb1b4 GIT binary patch literal 5310 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 literal 0 HcmV?d00001 diff --git a/gui/theming_override/test.gd b/gui/theming_override/test.gd index cc02bda0..f2fa71e4 100644 --- a/gui/theming_override/test.gd +++ b/gui/theming_override/test.gd @@ -2,15 +2,13 @@ extends Control # This script demonstrates how to alter StyleBoxes at runtime. # Custom theme item properties aren't considered Object properties per se. -# This means that you should use `add_stylebox_override("normal", ...)` +# This means that you should use `add_theme_stylebox_override("normal", ...)` # instead of `set("custom_styles/normal", ...)`. -@onready var label = $VBoxContainer/Label -@onready var button = $VBoxContainer/Button -@onready var button2 = $VBoxContainer/Button2 -@onready var reset_all_button = $VBoxContainer/ResetAllButton -# Save the label color so it can be reset. -@onready var default_label_color = label.get_color("font_color") +@onready var label = $Panel/MarginContainer/VBoxContainer/Label +@onready var button = $Panel/MarginContainer/VBoxContainer/Button +@onready var button2 = $Panel/MarginContainer/VBoxContainer/Button2 +@onready var reset_all_button = $Panel/MarginContainer/VBoxContainer/ResetAllButton func _ready(): # Focus the first button automatically for keyboard/controller-friendly navigation. @@ -22,46 +20,42 @@ func _on_button_pressed(): # to get a correct appearance when the button is hovered or pressed. # We can't use a single StyleBox for all of them as these have different # background colors. - var new_stylebox_normal = button.get_stylebox("normal").duplicate() + var new_stylebox_normal = button.get_theme_stylebox("normal").duplicate() new_stylebox_normal.border_color = Color(1, 1, 0) - var new_stylebox_hover = button.get_stylebox("hover").duplicate() + var new_stylebox_hover = button.get_theme_stylebox("hover").duplicate() new_stylebox_hover.border_color = Color(1, 1, 0) - var new_stylebox_pressed = button.get_stylebox("pressed").duplicate() + var new_stylebox_pressed = button.get_theme_stylebox("pressed").duplicate() new_stylebox_pressed.border_color = Color(1, 1, 0) - button.add_stylebox_override("normal", new_stylebox_normal) - button.add_stylebox_override("hover", new_stylebox_hover) - button.add_stylebox_override("pressed", new_stylebox_pressed) + button.add_theme_stylebox_override("normal", new_stylebox_normal) + button.add_theme_stylebox_override("hover", new_stylebox_hover) + button.add_theme_stylebox_override("pressed", new_stylebox_pressed) - label.add_color_override("font_color", Color(1, 1, 0.5)) + label.add_theme_color_override("font_color", Color(1, 1, 0.5)) func _on_button2_pressed(): - var new_stylebox_normal = button2.get_stylebox("normal").duplicate() + var new_stylebox_normal = button2.get_theme_stylebox("normal").duplicate() new_stylebox_normal.border_color = Color(0, 1, 0.5) - var new_stylebox_hover = button2.get_stylebox("hover").duplicate() + var new_stylebox_hover = button2.get_theme_stylebox("hover").duplicate() new_stylebox_hover.border_color = Color(0, 1, 0.5) - var new_stylebox_pressed = button2.get_stylebox("pressed").duplicate() + var new_stylebox_pressed = button2.get_theme_stylebox("pressed").duplicate() new_stylebox_pressed.border_color = Color(0, 1, 0.5) - button2.add_stylebox_override("normal", new_stylebox_normal) - button2.add_stylebox_override("hover", new_stylebox_hover) - button2.add_stylebox_override("pressed", new_stylebox_pressed) + button2.add_theme_stylebox_override("normal", new_stylebox_normal) + button2.add_theme_stylebox_override("hover", new_stylebox_hover) + button2.add_theme_stylebox_override("pressed", new_stylebox_pressed) - label.add_color_override("font_color", Color(0.5, 1, 0.75)) + label.add_theme_color_override("font_color", Color(0.5, 1, 0.75)) func _on_reset_all_button_pressed(): - # Resetting a theme override is done by setting the property to: - # - `null` for fonts, icons, styleboxes, and shaders. - # - `0` for constants. - # - Colors must be reset manually by adding the previous color value as an override. - button.add_stylebox_override("normal", null) - button.add_stylebox_override("hover", null) - button.add_stylebox_override("pressed", null) + button.remove_theme_stylebox_override("normal") + button.remove_theme_stylebox_override("hover") + button.remove_theme_stylebox_override("pressed") - button2.add_stylebox_override("normal", null) - button2.add_stylebox_override("hover", null) - button2.add_stylebox_override("pressed", null) + button2.remove_theme_stylebox_override("normal") + button2.remove_theme_stylebox_override("hover") + button2.remove_theme_stylebox_override("pressed") - label.add_color_override("font_color", default_label_color) + label.remove_theme_color_override("font_color") diff --git a/gui/theming_override/test.tscn b/gui/theming_override/test.tscn index f8aa9903..0381356e 100644 --- a/gui/theming_override/test.tscn +++ b/gui/theming_override/test.tscn @@ -1,11 +1,11 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=7 format=3 uid="uid://dbk0b4jkfq81v"] -[ext_resource path="res://test.gd" type="Script" id=1] +[ext_resource type="Script" path="res://test.gd" id="1"] -[sub_resource type="StyleBoxFlat" id=1] +[sub_resource type="StyleBoxFlat" id="1"] bg_color = Color(0.16, 0.678, 1, 0.12549) -[sub_resource type="StyleBoxFlat" id=2] +[sub_resource type="StyleBoxFlat" id="2"] bg_color = Color(0.266667, 0.266667, 0.266667, 1) border_width_left = 3 border_width_top = 3 @@ -14,11 +14,7 @@ border_width_bottom = 3 border_color = Color(0.4, 0.4, 0.4, 1) border_blend = true -[sub_resource type="StyleBoxFlat" id=3] -content_offset_left = 20.0 -content_offset_right = 20.0 -content_offset_top = 16.0 -content_offset_bottom = 16.0 +[sub_resource type="StyleBoxFlat" id="3"] bg_color = Color(0.2, 0.2, 0.2, 1) border_width_left = 3 border_width_top = 3 @@ -27,7 +23,7 @@ border_width_bottom = 3 border_color = Color(0.333333, 0.333333, 0.333333, 1) border_blend = true -[sub_resource type="StyleBoxFlat" id=4] +[sub_resource type="StyleBoxFlat" id="4"] bg_color = Color(0.133333, 0.133333, 0.133333, 1) border_width_left = 3 border_width_top = 3 @@ -36,7 +32,7 @@ border_width_bottom = 3 border_color = Color(0.266667, 0.266667, 0.266667, 1) border_blend = true -[sub_resource type="Theme" id=5] +[sub_resource type="Theme" id="5"] Button/colors/font_color = Color(0.88, 0.88, 0.88, 1) Button/colors/font_color_disabled = Color(0.9, 0.9, 0.9, 0.2) Button/colors/font_color_hover = Color(0.94, 0.94, 0.94, 1) @@ -44,63 +40,69 @@ Button/colors/font_color_pressed = Color(1, 1, 1, 1) Button/constants/hseparation = 2 Button/fonts/font = null Button/styles/disabled = null -Button/styles/focus = SubResource( 1 ) -Button/styles/hover = SubResource( 2 ) -Button/styles/normal = SubResource( 3 ) -Button/styles/pressed = SubResource( 4 ) +Button/styles/focus = SubResource("1") +Button/styles/hover = SubResource("2") +Button/styles/normal = SubResource("3") +Button/styles/pressed = SubResource("4") [node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -theme = SubResource( 5 ) -script = ExtResource( 1 ) -__meta__ = { -"_edit_use_anchors_": false -} +grow_horizontal = 2 +grow_vertical = 2 +theme = SubResource("5") +script = ExtResource("1") -[node name="VBoxContainer" type="VBoxContainer" parent="."] +[node name="Panel" type="PanelContainer" parent="."] +layout_mode = 1 +anchors_preset = 8 anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = -75.5 -offset_top = -157.0 -offset_right = 75.5 -offset_bottom = 89.0 -custom_constants/separation = 20 -__meta__ = { -"_edit_use_anchors_": false -} +offset_left = -110.0 +offset_top = -127.0 +offset_right = 110.0 +offset_bottom = 127.0 +grow_horizontal = 2 +grow_vertical = 2 -[node name="Label" type="Label" parent="VBoxContainer"] -offset_right = 151.0 -offset_bottom = 48.0 -rect_min_size = Vector2(0, 48) +[node name="MarginContainer" type="MarginContainer" parent="Panel"] +layout_mode = 2 +theme_override_constants/margin_left = 20 +theme_override_constants/margin_top = 20 +theme_override_constants/margin_right = 20 +theme_override_constants/margin_bottom = 20 + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/MarginContainer"] +layout_mode = 2 +theme_override_constants/separation = 10 + +[node name="Label" type="Label" parent="Panel/MarginContainer/VBoxContainer"] +layout_mode = 2 text = "GUI Theming Overrides" -align = 1 -valign = 1 +horizontal_alignment = 1 -[node name="Button" type="Button" parent="VBoxContainer"] -offset_top = 68.0 -offset_right = 151.0 -offset_bottom = 114.0 +[node name="HSeparator" type="HSeparator" parent="Panel/MarginContainer/VBoxContainer"] +layout_mode = 2 + +[node name="Button" type="Button" parent="Panel/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 48) +layout_mode = 2 text = "Click Me" -[node name="Button2" type="Button" parent="VBoxContainer"] -offset_top = 134.0 -offset_right = 151.0 -offset_bottom = 180.0 +[node name="Button2" type="Button" parent="Panel/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 48) +layout_mode = 2 text = "Click Me" -[node name="ResetAllButton" type="Button" parent="VBoxContainer"] -offset_top = 200.0 -offset_right = 151.0 -offset_bottom = 246.0 +[node name="ResetAllButton" type="Button" parent="Panel/MarginContainer/VBoxContainer"] +custom_minimum_size = Vector2(0, 48) +layout_mode = 2 text = "Reset All" -__meta__ = { -"_edit_use_anchors_": false -} -[connection signal="pressed" from="VBoxContainer/Button" to="." method="_on_button_pressed"] -[connection signal="pressed" from="VBoxContainer/Button2" to="." method="_on_button2_pressed"] -[connection signal="pressed" from="VBoxContainer/ResetAllButton" to="." method="_on_reset_all_button_pressed"] +[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/Button" to="." method="_on_button_pressed"] +[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/Button2" to="." method="_on_button2_pressed"] +[connection signal="pressed" from="Panel/MarginContainer/VBoxContainer/ResetAllButton" to="." method="_on_reset_all_button_pressed"]