Initial commit, layout mockup
This commit is contained in:
63
addons/dockable_container/samples/TestScene.gd
Normal file
63
addons/dockable_container/samples/TestScene.gd
Normal file
@@ -0,0 +1,63 @@
|
||||
extends VBoxContainer
|
||||
|
||||
const SAVED_LAYOUT_PATH := "user://layout.tres"
|
||||
|
||||
@onready var _container := $DockableContainers/DockableContainer as DockableContainer
|
||||
@onready var _clone_control := $HBoxContainer/ControlPrefab as ColorRect
|
||||
@onready var _checkbox_container := $HBoxContainer as HBoxContainer
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if not OS.is_userfs_persistent():
|
||||
$HBoxContainer/SaveLayoutButton.visible = false
|
||||
$HBoxContainer/LoadLayoutButton.visible = false
|
||||
|
||||
var tabs := _container.get_tabs()
|
||||
for i in tabs.size():
|
||||
var checkbox := CheckBox.new()
|
||||
checkbox.text = str(i)
|
||||
checkbox.button_pressed = not _container.is_control_hidden(tabs[i])
|
||||
checkbox.toggled.connect(_on_CheckButton_toggled.bind(tabs[i]))
|
||||
_checkbox_container.add_child(checkbox)
|
||||
|
||||
|
||||
func _on_add_pressed() -> void:
|
||||
var control := _clone_control.duplicate()
|
||||
control.get_node("Buttons/Rename").pressed.connect(
|
||||
_on_control_rename_button_pressed.bind(control)
|
||||
)
|
||||
control.get_node("Buttons/Remove").pressed.connect(
|
||||
_on_control_remove_button_pressed.bind(control)
|
||||
)
|
||||
control.color = Color(randf(), randf(), randf())
|
||||
control.name = "Control0"
|
||||
|
||||
_container.add_child(control, true)
|
||||
await _container.sort_children
|
||||
_container.set_control_as_current_tab(control)
|
||||
|
||||
|
||||
func _on_save_pressed() -> void:
|
||||
if ResourceSaver.save(_container.layout, SAVED_LAYOUT_PATH) != OK:
|
||||
print("ERROR")
|
||||
|
||||
|
||||
func _on_load_pressed() -> void:
|
||||
var res = load(SAVED_LAYOUT_PATH)
|
||||
if res:
|
||||
_container.set_layout(res.clone())
|
||||
else:
|
||||
print("Error")
|
||||
|
||||
|
||||
func _on_control_rename_button_pressed(control: Control) -> void:
|
||||
control.name = StringName(str(control.name) + " =D")
|
||||
|
||||
|
||||
func _on_control_remove_button_pressed(control: Control) -> void:
|
||||
control.get_parent().remove_child(control)
|
||||
control.queue_free()
|
||||
|
||||
|
||||
func _on_CheckButton_toggled(button_pressed: bool, tab: Control) -> void:
|
||||
_container.set_control_hidden(tab, not button_pressed)
|
||||
177
addons/dockable_container/samples/TestScene.tscn
Normal file
177
addons/dockable_container/samples/TestScene.tscn
Normal file
@@ -0,0 +1,177 @@
|
||||
[gd_scene load_steps=16 format=3 uid="uid://drlvhuchtk6if"]
|
||||
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/dockable_container.gd" id="1"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout.gd" id="2"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/samples/TestScene.gd" id="4"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout_split.gd" id="4_yhgfb"]
|
||||
[ext_resource type="Script" path="res://addons/dockable_container/layout_panel.gd" id="5"]
|
||||
|
||||
[sub_resource type="Resource" id="Resource_8aoc2"]
|
||||
resource_name = "Tabs"
|
||||
script = ExtResource("5")
|
||||
names = PackedStringArray("Control0")
|
||||
current_tab = 0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_6kjom"]
|
||||
resource_name = "Tabs"
|
||||
script = ExtResource("5")
|
||||
names = PackedStringArray("Control1", "Control2")
|
||||
current_tab = 0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_hl8y1"]
|
||||
resource_name = "Split"
|
||||
script = ExtResource("4_yhgfb")
|
||||
direction = 1
|
||||
percent = 0.5
|
||||
first = SubResource("Resource_8aoc2")
|
||||
second = SubResource("Resource_6kjom")
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ybwqe"]
|
||||
resource_name = "Layout"
|
||||
script = ExtResource("2")
|
||||
root = SubResource("Resource_hl8y1")
|
||||
hidden_tabs = {}
|
||||
|
||||
[sub_resource type="Resource" id="Resource_ntwfj"]
|
||||
resource_name = "Tabs"
|
||||
script = ExtResource("5")
|
||||
names = PackedStringArray("Control3")
|
||||
current_tab = 0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_dmyvf"]
|
||||
resource_name = "Tabs"
|
||||
script = ExtResource("5")
|
||||
names = PackedStringArray("Control4")
|
||||
current_tab = 0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_vag66"]
|
||||
resource_name = "Split"
|
||||
script = ExtResource("4_yhgfb")
|
||||
direction = 1
|
||||
percent = 0.281
|
||||
first = SubResource("Resource_ntwfj")
|
||||
second = SubResource("Resource_dmyvf")
|
||||
|
||||
[sub_resource type="Resource" id="Resource_4q660"]
|
||||
resource_name = "Tabs"
|
||||
script = ExtResource("5")
|
||||
names = PackedStringArray("Control5")
|
||||
current_tab = 0
|
||||
|
||||
[sub_resource type="Resource" id="Resource_jhibs"]
|
||||
resource_name = "Split"
|
||||
script = ExtResource("4_yhgfb")
|
||||
direction = 0
|
||||
percent = 0.5
|
||||
first = SubResource("Resource_vag66")
|
||||
second = SubResource("Resource_4q660")
|
||||
|
||||
[sub_resource type="Resource" id="Resource_xhxpg"]
|
||||
resource_name = "Layout"
|
||||
script = ExtResource("2")
|
||||
root = SubResource("Resource_jhibs")
|
||||
hidden_tabs = {}
|
||||
|
||||
[node name="SampleScene" type="VBoxContainer"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
script = ExtResource("4")
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
alignment = 1
|
||||
|
||||
[node name="AddControlButton" type="Button" parent="HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 4
|
||||
text = "(+) ADD CONTROL"
|
||||
|
||||
[node name="SaveLayoutButton" type="Button" parent="HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 4
|
||||
text = "Save Layout"
|
||||
|
||||
[node name="LoadLayoutButton" type="Button" parent="HBoxContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 4
|
||||
text = "Load Layout"
|
||||
|
||||
[node name="ControlPrefab" type="ColorRect" parent="HBoxContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
color = Color(0.129412, 0.121569, 0.121569, 1)
|
||||
|
||||
[node name="Buttons" type="VBoxContainer" parent="HBoxContainer/ControlPrefab"]
|
||||
layout_mode = 0
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -65.5
|
||||
offset_top = -22.0
|
||||
offset_right = 65.5
|
||||
offset_bottom = 22.0
|
||||
|
||||
[node name="Rename" type="Button" parent="HBoxContainer/ControlPrefab/Buttons"]
|
||||
layout_mode = 2
|
||||
text = "Rename"
|
||||
|
||||
[node name="Remove" type="Button" parent="HBoxContainer/ControlPrefab/Buttons"]
|
||||
layout_mode = 2
|
||||
text = "REMOVE"
|
||||
|
||||
[node name="DockableContainers" type="HBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="DockableContainer" type="Container" parent="DockableContainers"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource("1")
|
||||
layout = SubResource("Resource_ybwqe")
|
||||
|
||||
[node name="Control0" type="ColorRect" parent="DockableContainers/DockableContainer"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Control1" type="ColorRect" parent="DockableContainers/DockableContainer"]
|
||||
layout_mode = 2
|
||||
color = Color(0.141176, 0.0745098, 0.603922, 1)
|
||||
|
||||
[node name="Control2" type="ColorRect" parent="DockableContainers/DockableContainer"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
color = Color(0.533333, 0.380392, 0.380392, 1)
|
||||
|
||||
[node name="Separator" type="ColorRect" parent="DockableContainers"]
|
||||
custom_minimum_size = Vector2(50, 0)
|
||||
layout_mode = 2
|
||||
color = Color(0, 0, 0, 1)
|
||||
|
||||
[node name="DockableContainer2" type="Container" parent="DockableContainers"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
script = ExtResource("1")
|
||||
layout = SubResource("Resource_xhxpg")
|
||||
|
||||
[node name="Control3" type="ColorRect" parent="DockableContainers/DockableContainer2"]
|
||||
layout_mode = 2
|
||||
color = Color(0, 1, 0.905882, 1)
|
||||
|
||||
[node name="Control4" type="ColorRect" parent="DockableContainers/DockableContainer2"]
|
||||
layout_mode = 2
|
||||
color = Color(0, 0.698039, 0.0588235, 1)
|
||||
|
||||
[node name="Control5" type="ColorRect" parent="DockableContainers/DockableContainer2"]
|
||||
layout_mode = 2
|
||||
color = Color(1, 0.937255, 0, 1)
|
||||
|
||||
[connection signal="pressed" from="HBoxContainer/AddControlButton" to="." method="_on_add_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/SaveLayoutButton" to="." method="_on_save_pressed"]
|
||||
[connection signal="pressed" from="HBoxContainer/LoadLayoutButton" to="." method="_on_load_pressed"]
|
||||
Reference in New Issue
Block a user