diff --git a/addons/block_code/ui/picker/categories/block_category_button.gd b/addons/block_code/ui/picker/categories/block_category_button.gd
index 06fa7fb0..62c8c71e 100644
--- a/addons/block_code/ui/picker/categories/block_category_button.gd
+++ b/addons/block_code/ui/picker/categories/block_category_button.gd
@@ -9,19 +9,20 @@ signal selected
var category: BlockCategory
@onready var _panel := %Panel
-@onready var _label := %Label
+@onready var _button := %Button
func _ready():
if not category:
category = BlockCategory.new("Example", Color.RED)
+ var category_title = category.name.get_slice(" |", 0)
if not self.is_part_of_edited_scene():
- var new_stylebox: StyleBoxFlat = _panel.get_theme_stylebox("panel").duplicate()
- new_stylebox.bg_color = category.color
- _panel.add_theme_stylebox_override("panel", new_stylebox)
+ var texture = load("res://addons/block_code/ui/picker/categories/icons/" + category_title.to_lower() + ".svg")
+ _button.icon = texture
+ _panel.modulate = category.color
- _label.text = tr(category.name)
+ _button.tooltip_text = tr(category_title)
func _on_button_pressed():
diff --git a/addons/block_code/ui/picker/categories/block_category_button.tscn b/addons/block_code/ui/picker/categories/block_category_button.tscn
index 33210926..151cf01e 100644
--- a/addons/block_code/ui/picker/categories/block_category_button.tscn
+++ b/addons/block_code/ui/picker/categories/block_category_button.tscn
@@ -1,57 +1,52 @@
-[gd_scene load_steps=7 format=3 uid="uid://bdtetj0gs45hv"]
+[gd_scene load_steps=8 format=3 uid="uid://bdtetj0gs45hv"]
[ext_resource type="Script" path="res://addons/block_code/ui/picker/categories/block_category_button.gd" id="1_pxxnl"]
+[ext_resource type="Texture2D" uid="uid://g10ct6m5goi6" path="res://addons/block_code/ui/picker/categories/icons/file_broken.svg" id="2_0c1ke"]
-[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_eogpc"]
-bg_color = Color(1, 0, 0, 1)
-corner_radius_top_left = 100
-corner_radius_top_right = 100
-corner_radius_bottom_right = 100
-corner_radius_bottom_left = 100
+[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_w0e7p"]
+bg_color = Color(1, 1, 1, 1)
+corner_radius_top_left = 5
+corner_radius_top_right = 5
+corner_radius_bottom_right = 5
+corner_radius_bottom_left = 5
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ousiv"]
+[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_dgecf"]
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_fyk0j"]
bg_color = Color(1, 1, 1, 0.196078)
+corner_radius_top_left = 5
+corner_radius_top_right = 5
+corner_radius_bottom_right = 5
+corner_radius_bottom_left = 5
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_ha83k"]
bg_color = Color(1, 1, 1, 0.392157)
+corner_radius_top_left = 5
+corner_radius_top_right = 5
+corner_radius_bottom_right = 5
+corner_radius_bottom_left = 5
-[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_dgecf"]
+[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ousiv"]
[node name="BlockCategoryButton" type="MarginContainer"]
-custom_minimum_size = Vector2(150, 0)
-offset_right = 148.0
-offset_bottom = 32.0
script = ExtResource("1_pxxnl")
-[node name="HBoxContainer" type="HBoxContainer" parent="."]
-layout_mode = 2
-
-[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer"]
-custom_minimum_size = Vector2(40, 40)
-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
-
-[node name="Panel" type="Panel" parent="HBoxContainer/MarginContainer"]
+[node name="Panel" type="Panel" parent="."]
unique_name_in_owner = true
layout_mode = 2
-theme_override_styles/panel = SubResource("StyleBoxFlat_eogpc")
-
-[node name="Label" type="Label" parent="HBoxContainer"]
-unique_name_in_owner = true
-layout_mode = 2
-text = "Example"
+theme_override_styles/panel = SubResource("StyleBoxFlat_w0e7p")
[node name="Button" type="Button" parent="."]
+unique_name_in_owner = true
layout_mode = 2
+size_flags_horizontal = 4
+tooltip_text = "Example"
mouse_default_cursor_shape = 2
-theme_override_styles/normal = SubResource("StyleBoxEmpty_ousiv")
+theme_override_styles/focus = SubResource("StyleBoxEmpty_dgecf")
theme_override_styles/hover = SubResource("StyleBoxFlat_fyk0j")
theme_override_styles/pressed = SubResource("StyleBoxFlat_ha83k")
-theme_override_styles/focus = SubResource("StyleBoxEmpty_dgecf")
+theme_override_styles/normal = SubResource("StyleBoxEmpty_ousiv")
+icon = ExtResource("2_0c1ke")
+icon_alignment = 1
[connection signal="pressed" from="Button" to="." method="_on_button_pressed"]
diff --git a/addons/block_code/ui/picker/categories/icons/communication.svg b/addons/block_code/ui/picker/categories/icons/communication.svg
new file mode 100644
index 00000000..92258e6c
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/communication.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/communication.svg.import b/addons/block_code/ui/picker/categories/icons/communication.svg.import
new file mode 100644
index 00000000..912e5739
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/communication.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://d0agg8648xht3"
+path="res://.godot/imported/communication.svg-1c0c83fe5e428cef3e6d7d530d940e5a.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/communication.svg"
+dest_files=["res://.godot/imported/communication.svg-1c0c83fe5e428cef3e6d7d530d940e5a.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/file_broken.svg b/addons/block_code/ui/picker/categories/icons/file_broken.svg
new file mode 100644
index 00000000..46019ebf
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/file_broken.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/file_broken.svg.import b/addons/block_code/ui/picker/categories/icons/file_broken.svg.import
new file mode 100644
index 00000000..e924dcd3
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/file_broken.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://g10ct6m5goi6"
+path="res://.godot/imported/file_broken.svg-b3a1f0e4d54ed488e76a2c99c48cdeac.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/file_broken.svg"
+dest_files=["res://.godot/imported/file_broken.svg-b3a1f0e4d54ed488e76a2c99c48cdeac.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/graphics.svg b/addons/block_code/ui/picker/categories/icons/graphics.svg
new file mode 100644
index 00000000..9ef0514e
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/graphics.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/graphics.svg.import b/addons/block_code/ui/picker/categories/icons/graphics.svg.import
new file mode 100644
index 00000000..2db299b8
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/graphics.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bfvq21qp2l363"
+path="res://.godot/imported/graphics.svg-cb4f23d8db2eb8b1314d97d84a9d0f87.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/graphics.svg"
+dest_files=["res://.godot/imported/graphics.svg-cb4f23d8db2eb8b1314d97d84a9d0f87.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/info.svg b/addons/block_code/ui/picker/categories/icons/info.svg
new file mode 100644
index 00000000..cca6d720
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/info.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/info.svg.import b/addons/block_code/ui/picker/categories/icons/info.svg.import
new file mode 100644
index 00000000..52848c97
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/info.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bw76iiilnqfsn"
+path="res://.godot/imported/info.svg-ea93806d088f2cc7be28fcec5db89f8b.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/info.svg"
+dest_files=["res://.godot/imported/info.svg-ea93806d088f2cc7be28fcec5db89f8b.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/input.svg b/addons/block_code/ui/picker/categories/icons/input.svg
new file mode 100644
index 00000000..b657d20a
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/input.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/input.svg.import b/addons/block_code/ui/picker/categories/icons/input.svg.import
new file mode 100644
index 00000000..309dd655
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/input.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://bqlh8yalvn3qt"
+path="res://.godot/imported/input.svg-d158f2908aeb0a9d8935fe3b05665e57.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/input.svg"
+dest_files=["res://.godot/imported/input.svg-d158f2908aeb0a9d8935fe3b05665e57.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/lifecycle.svg b/addons/block_code/ui/picker/categories/icons/lifecycle.svg
new file mode 100644
index 00000000..39306364
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/lifecycle.svg
@@ -0,0 +1,26 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/lifecycle.svg.import b/addons/block_code/ui/picker/categories/icons/lifecycle.svg.import
new file mode 100644
index 00000000..dc9371b8
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/lifecycle.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://dtx1jvrk0xo6u"
+path="res://.godot/imported/lifecycle.svg-2dc482d9c2280183a8f4bb15c0c9238d.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/lifecycle.svg"
+dest_files=["res://.godot/imported/lifecycle.svg-2dc482d9c2280183a8f4bb15c0c9238d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/log.svg b/addons/block_code/ui/picker/categories/icons/log.svg
new file mode 100644
index 00000000..7d74ed20
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/log.svg
@@ -0,0 +1,41 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/log.svg.import b/addons/block_code/ui/picker/categories/icons/log.svg.import
new file mode 100644
index 00000000..eee4dd9a
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/log.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://deb4kkgrd4ova"
+path="res://.godot/imported/log.svg-ef2cdbf25b532af4f1d65f52bac731aa.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/log.svg"
+dest_files=["res://.godot/imported/log.svg-ef2cdbf25b532af4f1d65f52bac731aa.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/logic.svg b/addons/block_code/ui/picker/categories/icons/logic.svg
new file mode 100644
index 00000000..2baab871
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/logic.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/logic.svg.import b/addons/block_code/ui/picker/categories/icons/logic.svg.import
new file mode 100644
index 00000000..9ad7407f
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/logic.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://xs78uxfonid0"
+path="res://.godot/imported/logic.svg-a21b300b72a9f913c868fe3cc5436231.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/logic.svg"
+dest_files=["res://.godot/imported/logic.svg-a21b300b72a9f913c868fe3cc5436231.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/loops.svg b/addons/block_code/ui/picker/categories/icons/loops.svg
new file mode 100644
index 00000000..de2c8fac
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/loops.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/loops.svg.import b/addons/block_code/ui/picker/categories/icons/loops.svg.import
new file mode 100644
index 00000000..a513a6d4
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/loops.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://xfxkkou3p0re"
+path="res://.godot/imported/loops.svg-13addc2492f789c9527c263b1105b7d5.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/loops.svg"
+dest_files=["res://.godot/imported/loops.svg-13addc2492f789c9527c263b1105b7d5.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/math.svg b/addons/block_code/ui/picker/categories/icons/math.svg
new file mode 100644
index 00000000..a34d3981
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/math.svg
@@ -0,0 +1,19 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/math.svg.import b/addons/block_code/ui/picker/categories/icons/math.svg.import
new file mode 100644
index 00000000..e8241e15
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/math.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cjwntrfvngo35"
+path="res://.godot/imported/math.svg-e06e607e874f8e9cf837b4276af4d81d.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/math.svg"
+dest_files=["res://.godot/imported/math.svg-e06e607e874f8e9cf837b4276af4d81d.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/physics.svg b/addons/block_code/ui/picker/categories/icons/physics.svg
new file mode 100644
index 00000000..42971c42
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/physics.svg
@@ -0,0 +1,36 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/physics.svg.import b/addons/block_code/ui/picker/categories/icons/physics.svg.import
new file mode 100644
index 00000000..e1958b04
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/physics.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://8isr3pc5m4mi"
+path="res://.godot/imported/physics.svg-c4622c08e5d834cb7cad9fd565c1e6ee.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/physics.svg"
+dest_files=["res://.godot/imported/physics.svg-c4622c08e5d834cb7cad9fd565c1e6ee.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/sounds.svg b/addons/block_code/ui/picker/categories/icons/sounds.svg
new file mode 100644
index 00000000..804e349a
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/sounds.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/sounds.svg.import b/addons/block_code/ui/picker/categories/icons/sounds.svg.import
new file mode 100644
index 00000000..60ecb483
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/sounds.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://81pkn6w7wkba"
+path="res://.godot/imported/sounds.svg-f3d6294ef0f3eb318efc7e70a9f70fcd.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/sounds.svg"
+dest_files=["res://.godot/imported/sounds.svg-f3d6294ef0f3eb318efc7e70a9f70fcd.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/transform.svg b/addons/block_code/ui/picker/categories/icons/transform.svg
new file mode 100644
index 00000000..93e92eb1
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/transform.svg
@@ -0,0 +1,26 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/transform.svg.import b/addons/block_code/ui/picker/categories/icons/transform.svg.import
new file mode 100644
index 00000000..dfdea522
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/transform.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://rkbwr5ea2npu"
+path="res://.godot/imported/transform.svg-80edfaead8f509c7ca7a48233cb22999.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/transform.svg"
+dest_files=["res://.godot/imported/transform.svg-80edfaead8f509c7ca7a48233cb22999.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/ui.svg b/addons/block_code/ui/picker/categories/icons/ui.svg
new file mode 100644
index 00000000..11dc3e6e
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/ui.svg
@@ -0,0 +1,26 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/ui.svg.import b/addons/block_code/ui/picker/categories/icons/ui.svg.import
new file mode 100644
index 00000000..c923b2b1
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/ui.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://cpdpycplq4kmp"
+path="res://.godot/imported/ui.svg-c0a42499bbf6afa2f50e6c80eb2dc59f.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/ui.svg"
+dest_files=["res://.godot/imported/ui.svg-c0a42499bbf6afa2f50e6c80eb2dc59f.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/categories/icons/variables.svg b/addons/block_code/ui/picker/categories/icons/variables.svg
new file mode 100644
index 00000000..b98c742b
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/variables.svg
@@ -0,0 +1,19 @@
+
+
diff --git a/addons/block_code/ui/picker/categories/icons/variables.svg.import b/addons/block_code/ui/picker/categories/icons/variables.svg.import
new file mode 100644
index 00000000..d682880c
--- /dev/null
+++ b/addons/block_code/ui/picker/categories/icons/variables.svg.import
@@ -0,0 +1,38 @@
+[remap]
+
+importer="texture"
+type="CompressedTexture2D"
+uid="uid://c0nt5beum2fx"
+path="res://.godot/imported/variables.svg-6bd1cd59f9edcd10c2b7ea75832535b3.ctex"
+metadata={
+"has_editor_variant": true,
+"vram_texture": false
+}
+
+[deps]
+
+source_file="res://addons/block_code/ui/picker/categories/icons/variables.svg"
+dest_files=["res://.godot/imported/variables.svg-6bd1cd59f9edcd10c2b7ea75832535b3.ctex"]
+
+[params]
+
+compress/mode=0
+compress/high_quality=false
+compress/lossy_quality=0.7
+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/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=true
+editor/convert_colors_with_editor_theme=false
diff --git a/addons/block_code/ui/picker/picker.gd b/addons/block_code/ui/picker/picker.gd
index 22783a44..92ffafdf 100644
--- a/addons/block_code/ui/picker/picker.gd
+++ b/addons/block_code/ui/picker/picker.gd
@@ -73,6 +73,7 @@ func _update_block_components():
for block_category_display: BlockCategoryDisplay in _category_displays.values():
block_category_display.hide()
+ var unique_category_prefixes: Array[String]
for category in block_categories:
var block_definitions := _context.block_script.get_blocks_in_category(category)
@@ -83,10 +84,12 @@ func _update_block_components():
if order_override:
block_definitions.sort_custom(_sort_blocks_by_list_order.bind(order_override))
- var block_category_button := _get_or_create_block_category_button(category)
- _category_list.move_child(block_category_button, -1)
- if category.name == "Variables" or not block_definitions.is_empty():
- block_category_button.show()
+ if not unique_category_prefixes.has(category.name.get_slice(" |", 0)):
+ var block_category_button := _get_or_create_block_category_button(category)
+ _category_list.move_child(block_category_button, -1)
+ if category.name == "Variables" or not block_definitions.is_empty():
+ block_category_button.show()
+ unique_category_prefixes.append(category.name.get_slice(" |", 0))
var block_category_display := _get_or_create_block_category_display(category)
block_category_display.block_definitions = block_definitions
diff --git a/addons/block_code/ui/picker/picker.tscn b/addons/block_code/ui/picker/picker.tscn
index 893da1db..b20a3826 100644
--- a/addons/block_code/ui/picker/picker.tscn
+++ b/addons/block_code/ui/picker/picker.tscn
@@ -14,32 +14,28 @@ layout_mode = 2
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
-theme_override_constants/separation = 12
+theme_override_constants/separation = 0
[node name="CategoryMarginContainer" type="MarginContainer" parent="WidgetContainer"]
layout_mode = 2
-theme_override_constants/margin_left = 0
-theme_override_constants/margin_top = 12
-theme_override_constants/margin_right = 0
-theme_override_constants/margin_bottom = 12
+size_flags_horizontal = 0
+theme_override_constants/margin_left = 4
+theme_override_constants/margin_top = 4
+theme_override_constants/margin_right = 4
+theme_override_constants/margin_bottom = 4
[node name="CategoryScroll" type="ScrollContainer" parent="WidgetContainer/CategoryMarginContainer"]
layout_mode = 2
-size_flags_horizontal = 3
horizontal_scroll_mode = 0
[node name="CategoryList" type="VBoxContainer" parent="WidgetContainer/CategoryMarginContainer/CategoryScroll"]
unique_name_in_owner = true
layout_mode = 2
-theme_override_constants/separation = 4
+theme_override_constants/separation = 10
[node name="BlockMarginContainer" type="MarginContainer" parent="WidgetContainer"]
layout_mode = 2
size_flags_horizontal = 3
-theme_override_constants/margin_left = 0
-theme_override_constants/margin_top = 12
-theme_override_constants/margin_right = 4
-theme_override_constants/margin_bottom = 12
[node name="BlockScroll" type="ScrollContainer" parent="WidgetContainer/BlockMarginContainer"]
unique_name_in_owner = true