Skip to content

Commit 6571f15

Browse files
committed
Added advanced checkbox
This adds an advanced mode to the title dock that allows the user to see advanced blocks, which will help us add advanced blocks without cluttering the block list. I implemented it by: - adding `is_advanced` boolean to the `BlockDefinition` class and set the default value to false. - adding an "advanced" checkbox to `main_panel.tscn` - modifying `picker.gd` to filter the block list to hide advanced blocks if the checkbox is unchecked. Fixes #282
1 parent a9c7193 commit 6571f15

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

addons/block_code/code_generation/block_definition.gd

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ const FORMAT_STRING_PATTERN = "\\[(?<out_parameter>[^\\]]+)\\]|\\{const (?<const
2828
## Empty except for blocks that have a defined scope
2929
@export var scope: String
3030

31+
@export var is_advanced: bool
32+
3133
@export var extension_script: GDScript
3234

3335
static var _display_template_regex := RegEx.create_from_string(FORMAT_STRING_PATTERN)
@@ -46,6 +48,7 @@ func _init(
4648
p_signal_name: String = "",
4749
p_scope: String = "",
4850
p_extension_script: GDScript = null,
51+
p_is_advanced: bool = false,
4952
):
5053
name = p_name
5154
target_node_class = p_target_node_class
@@ -59,6 +62,7 @@ func _init(
5962
signal_name = p_signal_name
6063
scope = p_scope
6164
extension_script = p_extension_script
65+
is_advanced = p_is_advanced
6266

6367

6468
func create_block_extension() -> BlockExtension:

addons/block_code/ui/main_panel.gd

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ func _on_delete_node_button_pressed():
8686
dialog.connect("confirmed", _on_delete_dialog_confirmed.bind(_context.block_code_node))
8787

8888

89+
func _on_advanced_checkbox_toggled(is_advanced: bool):
90+
_picker.set_advanced(is_advanced)
91+
_picker.reload_blocks()
92+
93+
8994
func _on_delete_dialog_confirmed(block_code_node: BlockCode):
9095
var parent_node = block_code_node.get_parent()
9196

addons/block_code/ui/main_panel.tscn

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,10 @@ unique_name_in_owner = true
6060
layout_mode = 2
6161
size_flags_horizontal = 3
6262

63+
[node name="AdvancedCheckBox" type="CheckBox" parent="MarginContainer/HBoxContainer/ScriptVBox/HBoxContainer"]
64+
layout_mode = 2
65+
text = "Advanced"
66+
6367
[node name="ShowScriptButton" type="Button" parent="MarginContainer/HBoxContainer/ScriptVBox/HBoxContainer"]
6468
layout_mode = 2
6569
size_flags_horizontal = 0
@@ -119,6 +123,7 @@ block_canvas_path = NodePath("../PickerSplit/MarginContainer/VBoxContainer/Block
119123

120124
[connection signal="pressed" from="MarginContainer/HBoxContainer/ScriptVBox/HBoxContainer/ShowScriptButton" to="." method="_on_show_script_button_pressed"]
121125
[connection signal="pressed" from="MarginContainer/HBoxContainer/ScriptVBox/HBoxContainer/DeleteNodeButton" to="." method="_on_delete_node_button_pressed"]
126+
[connection signal="toggled" from="MarginContainer/HBoxContainer/ScriptVBox/HBoxContainer/AdvancedCheckBox" to="." method="_on_advanced_checkbox_toggled"]
122127
[connection signal="add_block_code" from="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit/MarginContainer/VBoxContainer/BlockCanvas" to="." method="_on_block_canvas_add_block_code"]
123128
[connection signal="open_scene" from="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit/MarginContainer/VBoxContainer/BlockCanvas" to="." method="_on_block_canvas_open_scene"]
124129
[connection signal="replace_block_code" from="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit/MarginContainer/VBoxContainer/BlockCanvas" to="." method="_on_block_canvas_replace_block_code"]

addons/block_code/ui/picker/picker.gd

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ var scroll_tween: Tween
3838

3939
var _category_buttons: Dictionary # String, BlockCategoryButton
4040
var _category_displays: Dictionary # String, BlockCategoryDisplay
41+
var _advanced_mode: bool = false
4142

4243

4344
func _ready() -> void:
@@ -74,6 +75,10 @@ func _update_block_components():
7475

7576
for category in block_categories:
7677
var block_definitions := _context.block_script.get_blocks_in_category(category)
78+
79+
if not _advanced_mode:
80+
block_definitions = block_definitions.filter(func(definition): return not definition.is_advanced)
81+
7782
var order_override = CATEGORY_ORDER_OVERRIDE.get(category.name)
7883
if order_override:
7984
block_definitions.sort_custom(_sort_blocks_by_list_order.bind(order_override))
@@ -136,3 +141,8 @@ func _category_selected(category_name: String):
136141

137142
func set_collapsed(collapsed: bool):
138143
_widget_container.visible = not collapsed
144+
145+
146+
func set_advanced(advanced: bool):
147+
_advanced_mode = advanced
148+
reload_blocks()

0 commit comments

Comments
 (0)