Skip to content

Commit 34bb0ae

Browse files
committed
Collapsible picker
1 parent a01f06f commit 34bb0ae

File tree

4 files changed

+69
-14
lines changed

4 files changed

+69
-14
lines changed

addons/block_code/ui/main_panel.gd

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,17 @@ var eia: EditorInterfaceAccess
99
@onready var _drag_manager: DragManager = %DragManager
1010
@onready var _title_bar: TitleBar = %TitleBar
1111
@onready var _editor_inspector: EditorInspector = EditorInterface.get_inspector()
12+
@onready var _picker_split: HSplitContainer = %PickerSplit
13+
@onready var _collapse_button: Button = %CollapseButton
14+
15+
@onready var _icon_collapse := EditorInterface.get_editor_theme().get_icon("Back", "EditorIcons")
16+
@onready var _icon_expand := EditorInterface.get_editor_theme().get_icon("Forward", "EditorIcons")
1217

1318
var block_code_tab: Button
1419
var _current_block_code_node: BlockCode
1520
var _scene_root: Node
1621
var _block_code_nodes: Array
22+
var _collapsed: bool = false
1723

1824
var undo_redo: EditorUndoRedoManager
1925

@@ -30,6 +36,8 @@ func _ready():
3036
block_code_tab = eia.Utils.find_child_by_name(eia.context_switcher, "Block Code")
3137
undo_redo.version_changed.connect(_on_undo_redo_version_changed)
3238

39+
_collapse_button.icon = _icon_collapse
40+
3341

3442
func _on_undo_redo_version_changed():
3543
if _current_block_code_node == null:
@@ -92,6 +100,11 @@ func _input(event):
92100
else:
93101
_drag_manager.drag_ended()
94102

103+
if event is InputEventKey:
104+
if Input.is_key_pressed(KEY_CTRL) and event.pressed and event.keycode == KEY_BACKSLASH:
105+
_collapse_button.button_pressed = not _collapse_button.button_pressed
106+
toggle_collapse()
107+
95108

96109
func _print_generated_script():
97110
if _current_block_code_node == null:
@@ -100,3 +113,15 @@ func _print_generated_script():
100113
var script: String = _block_canvas.generate_script_from_current_window(block_script.script_inherits)
101114
print(script)
102115
print("Debug script! (not saved)")
116+
117+
118+
func toggle_collapse():
119+
_collapsed = not _collapsed
120+
121+
_collapse_button.icon = _icon_expand if _collapsed else _icon_collapse
122+
_picker.set_collapsed(_collapsed)
123+
_picker_split.collapsed = _collapsed
124+
125+
126+
func _on_collapse_button_pressed():
127+
toggle_collapse()

addons/block_code/ui/main_panel.tscn

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,24 +45,46 @@ text = "Print Generated Script"
4545
layout_mode = 2
4646
size_flags_vertical = 3
4747

48-
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer"]
48+
[node name="PickerSplit" type="HSplitContainer" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer"]
49+
unique_name_in_owner = true
4950
layout_mode = 2
5051
size_flags_horizontal = 3
5152
size_flags_vertical = 3
5253

53-
[node name="Picker" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/HBoxContainer" instance=ExtResource("2_hv5f3")]
54+
[node name="Picker" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit" instance=ExtResource("2_hv5f3")]
55+
unique_name_in_owner = true
56+
layout_mode = 2
57+
58+
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit"]
59+
layout_mode = 2
60+
theme_override_constants/margin_bottom = 4
61+
62+
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit/MarginContainer"]
63+
layout_mode = 2
64+
65+
[node name="NodeBlockCanvas" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit/MarginContainer/VBoxContainer" instance=ExtResource("3_ml5y3")]
5466
unique_name_in_owner = true
5567
layout_mode = 2
5668

57-
[node name="NodeBlockCanvas" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/HBoxContainer" instance=ExtResource("3_ml5y3")]
69+
[node name="BottomBar" type="HBoxContainer" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit/MarginContainer/VBoxContainer"]
70+
layout_mode = 2
71+
72+
[node name="CollapseButton" type="Button" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit/MarginContainer/VBoxContainer/BottomBar"]
5873
unique_name_in_owner = true
5974
layout_mode = 2
75+
size_flags_horizontal = 8
76+
tooltip_text = "Collapse the picker toolbar. Shortcut (Ctrl-Space)"
77+
flat = true
78+
79+
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit/MarginContainer/VBoxContainer/BottomBar"]
80+
layout_mode = 2
6081

6182
[node name="DragManager" parent="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer" instance=ExtResource("4_yijtu")]
6283
unique_name_in_owner = true
6384
layout_mode = 2
6485
mouse_filter = 2
65-
picker_path = NodePath("../HBoxContainer/Picker")
66-
block_canvas_path = NodePath("../HBoxContainer/NodeBlockCanvas")
86+
picker_path = NodePath("../PickerSplit/Picker")
87+
block_canvas_path = NodePath("../PickerSplit/MarginContainer/VBoxContainer/NodeBlockCanvas")
6788

6889
[connection signal="pressed" from="MarginContainer/HBoxContainer/ScriptVBox/HBoxContainer/Button" to="." method="_on_button_pressed"]
90+
[connection signal="pressed" from="MarginContainer/HBoxContainer/ScriptVBox/MarginContainer/PickerSplit/MarginContainer/VBoxContainer/BottomBar/CollapseButton" to="." method="_on_collapse_button_pressed"]

addons/block_code/ui/picker/picker.gd

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ signal block_picked(block: Block)
77
@onready var _block_list := %BlockList
88
@onready var _block_scroll := %BlockScroll
99
@onready var _category_list := %CategoryList
10+
@onready var _widget_container := %WidgetContainer
1011

1112

1213
func bsd_selected(bsd: BlockScriptData):
@@ -78,3 +79,7 @@ func _category_selected(category: BlockCategory):
7879
if block_category_display.category.name == category.name:
7980
_block_scroll.scroll_vertical = block_category_display.position.y
8081
break
82+
83+
84+
func set_collapsed(collapsed: bool):
85+
_widget_container.visible = not collapsed

addons/block_code/ui/picker/picker.tscn

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,52 @@
33
[ext_resource type="Script" path="res://addons/block_code/ui/picker/picker.gd" id="1_tkt44"]
44

55
[node name="Picker" type="MarginContainer"]
6-
custom_minimum_size = Vector2(200, 0)
76
offset_right = 251.0
87
offset_bottom = 253.0
98
script = ExtResource("1_tkt44")
109

1110
[node name="Panel" type="Panel" parent="."]
1211
layout_mode = 2
1312

14-
[node name="HBoxContainer" type="HBoxContainer" parent="."]
13+
[node name="WidgetContainer" type="HBoxContainer" parent="."]
14+
unique_name_in_owner = true
1515
layout_mode = 2
16+
size_flags_vertical = 3
1617
theme_override_constants/separation = 12
1718

18-
[node name="CategoryMarginContainer" type="MarginContainer" parent="HBoxContainer"]
19+
[node name="CategoryMarginContainer" type="MarginContainer" parent="WidgetContainer"]
1920
layout_mode = 2
2021
theme_override_constants/margin_left = 12
2122
theme_override_constants/margin_top = 12
2223
theme_override_constants/margin_right = 0
2324
theme_override_constants/margin_bottom = 12
2425

25-
[node name="CategoryScroll" type="ScrollContainer" parent="HBoxContainer/CategoryMarginContainer"]
26+
[node name="CategoryScroll" type="ScrollContainer" parent="WidgetContainer/CategoryMarginContainer"]
2627
layout_mode = 2
2728
size_flags_horizontal = 3
2829
horizontal_scroll_mode = 0
2930

30-
[node name="CategoryList" type="VBoxContainer" parent="HBoxContainer/CategoryMarginContainer/CategoryScroll"]
31+
[node name="CategoryList" type="VBoxContainer" parent="WidgetContainer/CategoryMarginContainer/CategoryScroll"]
3132
unique_name_in_owner = true
3233
layout_mode = 2
3334
theme_override_constants/separation = 4
3435

35-
[node name="BlockMarginContainer" type="MarginContainer" parent="HBoxContainer"]
36+
[node name="BlockMarginContainer" type="MarginContainer" parent="WidgetContainer"]
3637
layout_mode = 2
38+
size_flags_horizontal = 3
3739
theme_override_constants/margin_left = 0
3840
theme_override_constants/margin_top = 12
3941
theme_override_constants/margin_right = 12
4042
theme_override_constants/margin_bottom = 12
4143

42-
[node name="BlockScroll" type="ScrollContainer" parent="HBoxContainer/BlockMarginContainer"]
44+
[node name="BlockScroll" type="ScrollContainer" parent="WidgetContainer/BlockMarginContainer"]
4345
unique_name_in_owner = true
46+
custom_minimum_size = Vector2(250, 0)
4447
layout_mode = 2
4548
size_flags_horizontal = 3
46-
horizontal_scroll_mode = 0
49+
horizontal_scroll_mode = 3
4750

48-
[node name="BlockList" type="VBoxContainer" parent="HBoxContainer/BlockMarginContainer/BlockScroll"]
51+
[node name="BlockList" type="VBoxContainer" parent="WidgetContainer/BlockMarginContainer/BlockScroll"]
4952
unique_name_in_owner = true
5053
layout_mode = 2
5154
theme_override_constants/separation = 0

0 commit comments

Comments
 (0)