mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-18 17:19:50 +00:00
Update the dockable_container addon to 1.1.1
This commit is contained in:
parent
20bce8175c
commit
927e4f45a6
|
@ -18,5 +18,5 @@ Files extracted from source:
|
||||||
## godot-dockable-container
|
## godot-dockable-container
|
||||||
|
|
||||||
- Upstream: https://github.com/gilzoide/godot-dockable-container
|
- Upstream: https://github.com/gilzoide/godot-dockable-container
|
||||||
- Version: custom
|
- Version: Based on git commit e5df60ed1d53246e03dba36053ff009846ba5174 with a modification on dockable_container.gd (lines 187-191).
|
||||||
- License: [CC0-1.0](https://github.com/gilzoide/godot-dockable-container/blob/main/LICENSE)
|
- License: [CC0-1.0](https://github.com/gilzoide/godot-dockable-container/blob/main/LICENSE)
|
||||||
|
|
|
@ -3,6 +3,7 @@ extends Container
|
||||||
|
|
||||||
const SplitHandle = preload("split_handle.gd")
|
const SplitHandle = preload("split_handle.gd")
|
||||||
const DockablePanel = preload("dockable_panel.gd")
|
const DockablePanel = preload("dockable_panel.gd")
|
||||||
|
const ReferenceControl = preload("dockable_panel_reference_control.gd")
|
||||||
const DragNDropPanel = preload("drag_n_drop_panel.gd")
|
const DragNDropPanel = preload("drag_n_drop_panel.gd")
|
||||||
const Layout = preload("layout.gd")
|
const Layout = preload("layout.gd")
|
||||||
|
|
||||||
|
@ -60,10 +61,10 @@ func _notification(what: int) -> void:
|
||||||
what == NOTIFICATION_DRAG_BEGIN
|
what == NOTIFICATION_DRAG_BEGIN
|
||||||
and _can_handle_drag_data(get_viewport().gui_get_drag_data())
|
and _can_handle_drag_data(get_viewport().gui_get_drag_data())
|
||||||
):
|
):
|
||||||
_drag_n_drop_panel.visible = true
|
_drag_n_drop_panel.set_enabled(true, not _layout.root.empty())
|
||||||
set_process_input(true)
|
set_process_input(true)
|
||||||
elif what == NOTIFICATION_DRAG_END:
|
elif what == NOTIFICATION_DRAG_END:
|
||||||
_drag_n_drop_panel.visible = false
|
_drag_n_drop_panel.set_enabled(false)
|
||||||
set_process_input(false)
|
set_process_input(false)
|
||||||
|
|
||||||
|
|
||||||
|
@ -107,17 +108,22 @@ func can_drop_data_fw(_position: Vector2, data, from_control) -> bool:
|
||||||
func drop_data_fw(_position: Vector2, data, from_control) -> void:
|
func drop_data_fw(_position: Vector2, data, from_control) -> void:
|
||||||
assert(from_control == _drag_n_drop_panel, "FIXME")
|
assert(from_control == _drag_n_drop_panel, "FIXME")
|
||||||
|
|
||||||
var from_node: DockablePanel = get_node(data.from_path)
|
var from_node: TabContainer = get_node(data.from_path)
|
||||||
if _drag_panel == null or (from_node == _drag_panel and _drag_panel.get_child_count() == 1):
|
if from_node == _drag_panel and _drag_panel.get_child_count() == 1:
|
||||||
return
|
return
|
||||||
|
|
||||||
var moved_tab = from_node.get_tab_control(data.tabc_element)
|
var moved_tab = from_node.get_tab_control(data.tabc_element)
|
||||||
var moved_reference = moved_tab.reference_to
|
if moved_tab is ReferenceControl:
|
||||||
|
moved_tab = moved_tab.reference_to
|
||||||
|
if not _is_managed_node(moved_tab):
|
||||||
|
moved_tab.get_parent().remove_child(moved_tab)
|
||||||
|
add_child(moved_tab)
|
||||||
|
|
||||||
|
if _drag_panel != null:
|
||||||
|
var margin = _drag_n_drop_panel.get_hover_margin()
|
||||||
|
_layout.split_leaf_with_node(_drag_panel.leaf, moved_tab, margin)
|
||||||
|
|
||||||
var margin = _drag_n_drop_panel.get_hover_margin()
|
|
||||||
_layout.split_leaf_with_node(_drag_panel.leaf, moved_reference, margin)
|
|
||||||
_layout_dirty = true
|
_layout_dirty = true
|
||||||
|
|
||||||
queue_sort()
|
queue_sort()
|
||||||
|
|
||||||
|
|
||||||
|
@ -239,7 +245,8 @@ func _can_handle_drag_data(data):
|
||||||
|
|
||||||
func _is_managed_node(node: Node) -> bool:
|
func _is_managed_node(node: Node) -> bool:
|
||||||
return (
|
return (
|
||||||
node != _panel_container
|
node.get_parent() == self
|
||||||
|
and node != _panel_container
|
||||||
and node != _drag_n_drop_panel
|
and node != _drag_n_drop_panel
|
||||||
and node is Control
|
and node is Control
|
||||||
and not node.is_set_as_toplevel()
|
and not node.is_set_as_toplevel()
|
||||||
|
@ -415,8 +422,13 @@ static func _untrack_children_after(node, idx: int) -> void:
|
||||||
func _on_panel_tab_layout_changed(tab: int, panel: DockablePanel) -> void:
|
func _on_panel_tab_layout_changed(tab: int, panel: DockablePanel) -> void:
|
||||||
"""Handler for `DockablePanel.tab_layout_changed`, update its LayoutPanel"""
|
"""Handler for `DockablePanel.tab_layout_changed`, update its LayoutPanel"""
|
||||||
_layout_dirty = true
|
_layout_dirty = true
|
||||||
var tab_reference = panel.get_tab_control(tab)
|
var control = panel.get_tab_control(tab)
|
||||||
_layout.move_node_to_leaf(tab_reference.reference_to, panel.leaf, tab)
|
if control is ReferenceControl:
|
||||||
|
control = control.reference_to
|
||||||
|
if not _is_managed_node(control):
|
||||||
|
control.get_parent().remove_child(control)
|
||||||
|
add_child(control)
|
||||||
|
_layout.move_node_to_leaf(control, panel.leaf, tab)
|
||||||
queue_sort()
|
queue_sort()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,10 @@ func _on_tab_selected(tab: int) -> void:
|
||||||
func _on_tab_changed(tab: int) -> void:
|
func _on_tab_changed(tab: int) -> void:
|
||||||
if not _leaf:
|
if not _leaf:
|
||||||
return
|
return
|
||||||
var tab_name = get_tab_control(tab).name
|
var control = get_tab_control(tab)
|
||||||
|
if not control:
|
||||||
|
return
|
||||||
|
var tab_name = control.name
|
||||||
var name_index_in_leaf = _leaf.find_name(tab_name)
|
var name_index_in_leaf = _leaf.find_name(tab_name)
|
||||||
if name_index_in_leaf != tab: # NOTE: this handles added tabs (index == -1)
|
if name_index_in_leaf != tab: # NOTE: this handles added tabs (index == -1)
|
||||||
emit_signal("tab_layout_changed", tab)
|
emit_signal("tab_layout_changed", tab)
|
||||||
|
|
|
@ -2,8 +2,6 @@ tool
|
||||||
extends Container
|
extends Container
|
||||||
# Control that mimics its own visibility and rect into another Control.
|
# Control that mimics its own visibility and rect into another Control.
|
||||||
|
|
||||||
signal moved_in_parent(control)
|
|
||||||
|
|
||||||
var reference_to: Control setget set_reference_to, get_reference_to
|
var reference_to: Control setget set_reference_to, get_reference_to
|
||||||
|
|
||||||
var _reference_to: Control = null
|
var _reference_to: Control = null
|
||||||
|
@ -30,11 +28,11 @@ func set_reference_to(control: Control) -> void:
|
||||||
_reference_to.disconnect("renamed", self, "_on_reference_to_renamed")
|
_reference_to.disconnect("renamed", self, "_on_reference_to_renamed")
|
||||||
_reference_to.disconnect("minimum_size_changed", self, "minimum_size_changed")
|
_reference_to.disconnect("minimum_size_changed", self, "minimum_size_changed")
|
||||||
_reference_to = control
|
_reference_to = control
|
||||||
_reference_to.connect("minimum_size_changed", self, "minimum_size_changed")
|
|
||||||
minimum_size_changed()
|
minimum_size_changed()
|
||||||
if not _reference_to:
|
if not _reference_to:
|
||||||
return
|
return
|
||||||
_reference_to.connect("renamed", self, "_on_reference_to_renamed")
|
_reference_to.connect("renamed", self, "_on_reference_to_renamed")
|
||||||
|
_reference_to.connect("minimum_size_changed", self, "minimum_size_changed")
|
||||||
_reference_to.visible = visible
|
_reference_to.visible = visible
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,47 +1,61 @@
|
||||||
tool
|
tool
|
||||||
extends Control
|
extends Control
|
||||||
|
|
||||||
const MARGIN_NONE = -1
|
const DRAW_NOTHING = -1
|
||||||
|
const DRAW_CENTERED = -2
|
||||||
|
|
||||||
var _hover_margin = MARGIN_NONE
|
var _draw_margin = DRAW_NOTHING
|
||||||
|
var _should_split = false
|
||||||
|
|
||||||
|
|
||||||
func _notification(what: int) -> void:
|
func _notification(what: int) -> void:
|
||||||
if what == NOTIFICATION_MOUSE_EXIT:
|
if what == NOTIFICATION_MOUSE_EXIT:
|
||||||
_hover_margin = MARGIN_NONE
|
_draw_margin = DRAW_NOTHING
|
||||||
elif what == NOTIFICATION_DRAG_BEGIN:
|
update()
|
||||||
_hover_margin = MARGIN_NONE
|
elif what == NOTIFICATION_MOUSE_ENTER and not _should_split:
|
||||||
|
_draw_margin = DRAW_CENTERED
|
||||||
|
update()
|
||||||
|
|
||||||
|
|
||||||
func _gui_input(event: InputEvent) -> void:
|
func _gui_input(event: InputEvent) -> void:
|
||||||
if event is InputEventMouseMotion:
|
if _should_split and event is InputEventMouseMotion:
|
||||||
_find_hover_margin(event.position)
|
_draw_margin = _find_hover_margin(event.position)
|
||||||
update()
|
update()
|
||||||
|
|
||||||
|
|
||||||
func _draw() -> void:
|
func _draw() -> void:
|
||||||
var rect
|
var rect
|
||||||
if _hover_margin == MARGIN_NONE:
|
if _draw_margin == DRAW_NOTHING:
|
||||||
return
|
return
|
||||||
elif _hover_margin == MARGIN_LEFT:
|
elif _draw_margin == DRAW_CENTERED:
|
||||||
|
rect = Rect2(Vector2.ZERO, rect_size)
|
||||||
|
elif _draw_margin == MARGIN_LEFT:
|
||||||
rect = Rect2(0, 0, rect_size.x * 0.5, rect_size.y)
|
rect = Rect2(0, 0, rect_size.x * 0.5, rect_size.y)
|
||||||
elif _hover_margin == MARGIN_TOP:
|
elif _draw_margin == MARGIN_TOP:
|
||||||
rect = Rect2(0, 0, rect_size.x, rect_size.y * 0.5)
|
rect = Rect2(0, 0, rect_size.x, rect_size.y * 0.5)
|
||||||
elif _hover_margin == MARGIN_RIGHT:
|
elif _draw_margin == MARGIN_RIGHT:
|
||||||
var half_width = rect_size.x * 0.5
|
var half_width = rect_size.x * 0.5
|
||||||
rect = Rect2(half_width, 0, half_width, rect_size.y)
|
rect = Rect2(half_width, 0, half_width, rect_size.y)
|
||||||
elif _hover_margin == MARGIN_BOTTOM:
|
elif _draw_margin == MARGIN_BOTTOM:
|
||||||
var half_height = rect_size.y * 0.5
|
var half_height = rect_size.y * 0.5
|
||||||
rect = Rect2(0, half_height, rect_size.x, half_height)
|
rect = Rect2(0, half_height, rect_size.x, half_height)
|
||||||
var stylebox = get_stylebox("panel", "TooltipPanel")
|
var stylebox = get_stylebox("panel", "TooltipPanel")
|
||||||
draw_style_box(stylebox, rect)
|
draw_style_box(stylebox, rect)
|
||||||
|
|
||||||
|
|
||||||
|
func set_enabled(enabled: bool, should_split: bool = true) -> void:
|
||||||
|
visible = enabled
|
||||||
|
_should_split = should_split
|
||||||
|
if enabled:
|
||||||
|
_draw_margin = DRAW_NOTHING
|
||||||
|
update()
|
||||||
|
|
||||||
|
|
||||||
func get_hover_margin() -> int:
|
func get_hover_margin() -> int:
|
||||||
return _hover_margin
|
return _draw_margin
|
||||||
|
|
||||||
|
|
||||||
func _find_hover_margin(point: Vector2):
|
func _find_hover_margin(point: Vector2) -> int:
|
||||||
var half_size = rect_size * 0.5
|
var half_size = rect_size * 0.5
|
||||||
|
|
||||||
var left = point.distance_squared_to(Vector2(0, half_size.y))
|
var left = point.distance_squared_to(Vector2(0, half_size.y))
|
||||||
|
@ -62,4 +76,4 @@ func _find_hover_margin(point: Vector2):
|
||||||
if lesser > bottom:
|
if lesser > bottom:
|
||||||
#lesser = bottom # unused result
|
#lesser = bottom # unused result
|
||||||
lesser_margin = MARGIN_BOTTOM
|
lesser_margin = MARGIN_BOTTOM
|
||||||
_hover_margin = lesser_margin
|
return lesser_margin
|
||||||
|
|
|
@ -90,11 +90,10 @@ func update_nodes(names: PoolStringArray) -> void:
|
||||||
func move_node_to_leaf(node: Node, leaf: LayoutPanel, relative_position: int) -> void:
|
func move_node_to_leaf(node: Node, leaf: LayoutPanel, relative_position: int) -> void:
|
||||||
var node_name = node.name
|
var node_name = node.name
|
||||||
var previous_leaf = _leaf_by_node_name.get(node_name)
|
var previous_leaf = _leaf_by_node_name.get(node_name)
|
||||||
if not previous_leaf:
|
if previous_leaf:
|
||||||
return
|
previous_leaf.remove_node(node)
|
||||||
previous_leaf.remove_node(node)
|
if previous_leaf.empty():
|
||||||
if previous_leaf.empty():
|
_remove_leaf(previous_leaf)
|
||||||
_remove_leaf(previous_leaf)
|
|
||||||
|
|
||||||
leaf.insert_node(relative_position, node)
|
leaf.insert_node(relative_position, node)
|
||||||
_leaf_by_node_name[node_name] = leaf
|
_leaf_by_node_name[node_name] = leaf
|
||||||
|
|
|
@ -9,5 +9,5 @@ Layout information is stored in Resource objects, so they can be saved/loaded fr
|
||||||
|
|
||||||
This plugin also offers a replica of the Container layout to be edited directly in the inspector."
|
This plugin also offers a replica of the Container layout to be edited directly in the inspector."
|
||||||
author="gilzoide"
|
author="gilzoide"
|
||||||
version="0.4.0"
|
version="1.1.1"
|
||||||
script="plugin.gd"
|
script="plugin.gd"
|
||||||
|
|
|
@ -2,7 +2,7 @@ extends VBoxContainer
|
||||||
|
|
||||||
const SAVED_LAYOUT_PATH = "user://layout.tres"
|
const SAVED_LAYOUT_PATH = "user://layout.tres"
|
||||||
|
|
||||||
onready var _container = $DockableContainer
|
onready var _container = $DockableContainers/DockableContainer
|
||||||
onready var _clone_control = $HBoxContainer/ControlPrefab
|
onready var _clone_control = $HBoxContainer/ControlPrefab
|
||||||
onready var _checkbox_container = $HBoxContainer
|
onready var _checkbox_container = $HBoxContainer
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=18 format=2]
|
[gd_scene load_steps=16 format=2]
|
||||||
|
|
||||||
[ext_resource path="res://addons/dockable_container/dockable_container.gd" type="Script" id=1]
|
[ext_resource path="res://addons/dockable_container/dockable_container.gd" type="Script" id=1]
|
||||||
[ext_resource path="res://addons/dockable_container/layout.gd" type="Script" id=2]
|
[ext_resource path="res://addons/dockable_container/layout.gd" type="Script" id=2]
|
||||||
|
@ -6,46 +6,39 @@
|
||||||
[ext_resource path="res://addons/dockable_container/samples/TestScene.gd" type="Script" id=4]
|
[ext_resource path="res://addons/dockable_container/samples/TestScene.gd" type="Script" id=4]
|
||||||
[ext_resource path="res://addons/dockable_container/layout_panel.gd" type="Script" id=5]
|
[ext_resource path="res://addons/dockable_container/layout_panel.gd" type="Script" id=5]
|
||||||
|
|
||||||
[sub_resource type="Resource" id=1]
|
[sub_resource type="Resource" id=5]
|
||||||
resource_name = "Tabs"
|
resource_name = "Tabs"
|
||||||
script = ExtResource( 5 )
|
script = ExtResource( 5 )
|
||||||
names = PoolStringArray( "Control0" )
|
names = PoolStringArray( "Control0" )
|
||||||
current_tab = 0
|
current_tab = 0
|
||||||
|
|
||||||
[sub_resource type="Resource" id=2]
|
[sub_resource type="Resource" id=1]
|
||||||
resource_name = "Tabs"
|
resource_name = "Tabs"
|
||||||
script = ExtResource( 5 )
|
script = ExtResource( 5 )
|
||||||
names = PoolStringArray( "Control2" )
|
names = PoolStringArray( "Control1", "Control2" )
|
||||||
current_tab = 0
|
current_tab = 0
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id=6]
|
||||||
|
resource_name = "Split"
|
||||||
|
script = ExtResource( 3 )
|
||||||
|
direction = 1
|
||||||
|
percent = 0.5
|
||||||
|
first = SubResource( 5 )
|
||||||
|
second = SubResource( 1 )
|
||||||
|
|
||||||
|
[sub_resource type="Resource" id=2]
|
||||||
|
resource_name = "Layout"
|
||||||
|
script = ExtResource( 2 )
|
||||||
|
root = SubResource( 6 )
|
||||||
|
hidden_tabs = {
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Resource" id=3]
|
[sub_resource type="Resource" id=3]
|
||||||
resource_name = "Tabs"
|
resource_name = "Tabs"
|
||||||
script = ExtResource( 5 )
|
script = ExtResource( 5 )
|
||||||
names = PoolStringArray( "Control3" )
|
names = PoolStringArray( "Control3" )
|
||||||
current_tab = 0
|
current_tab = 0
|
||||||
|
|
||||||
[sub_resource type="Resource" id=4]
|
|
||||||
resource_name = "Split"
|
|
||||||
script = ExtResource( 3 )
|
|
||||||
direction = 1
|
|
||||||
percent = 0.5
|
|
||||||
first = SubResource( 2 )
|
|
||||||
second = SubResource( 3 )
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id=5]
|
|
||||||
resource_name = "Split"
|
|
||||||
script = ExtResource( 3 )
|
|
||||||
direction = 1
|
|
||||||
percent = 0.333
|
|
||||||
first = SubResource( 1 )
|
|
||||||
second = SubResource( 4 )
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id=6]
|
|
||||||
resource_name = "Tabs"
|
|
||||||
script = ExtResource( 5 )
|
|
||||||
names = PoolStringArray( "Control1" )
|
|
||||||
current_tab = 0
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id=7]
|
[sub_resource type="Resource" id=7]
|
||||||
resource_name = "Tabs"
|
resource_name = "Tabs"
|
||||||
script = ExtResource( 5 )
|
script = ExtResource( 5 )
|
||||||
|
@ -56,47 +49,35 @@ current_tab = 0
|
||||||
resource_name = "Split"
|
resource_name = "Split"
|
||||||
script = ExtResource( 3 )
|
script = ExtResource( 3 )
|
||||||
direction = 1
|
direction = 1
|
||||||
percent = 0.5
|
percent = 0.28125
|
||||||
first = SubResource( 6 )
|
first = SubResource( 3 )
|
||||||
second = SubResource( 7 )
|
second = SubResource( 7 )
|
||||||
|
|
||||||
[sub_resource type="Resource" id=9]
|
[sub_resource type="Resource" id=9]
|
||||||
resource_name = "Tabs"
|
resource_name = "Tabs"
|
||||||
script = ExtResource( 5 )
|
script = ExtResource( 5 )
|
||||||
names = PoolStringArray( "Control5", "Control6" )
|
names = PoolStringArray( "Control5" )
|
||||||
current_tab = 1
|
current_tab = 0
|
||||||
|
|
||||||
[sub_resource type="Resource" id=10]
|
[sub_resource type="Resource" id=10]
|
||||||
resource_name = "Split"
|
resource_name = "Split"
|
||||||
script = ExtResource( 3 )
|
script = ExtResource( 3 )
|
||||||
direction = 0
|
direction = 0
|
||||||
percent = 0.649798
|
percent = 0.5
|
||||||
first = SubResource( 8 )
|
first = SubResource( 8 )
|
||||||
second = SubResource( 9 )
|
second = SubResource( 9 )
|
||||||
|
|
||||||
[sub_resource type="Resource" id=11]
|
[sub_resource type="Resource" id=4]
|
||||||
resource_name = "Split"
|
|
||||||
script = ExtResource( 3 )
|
|
||||||
direction = 0
|
|
||||||
percent = 0.230294
|
|
||||||
first = SubResource( 5 )
|
|
||||||
second = SubResource( 10 )
|
|
||||||
|
|
||||||
[sub_resource type="Resource" id=12]
|
|
||||||
resource_name = "Layout"
|
resource_name = "Layout"
|
||||||
script = ExtResource( 2 )
|
script = ExtResource( 2 )
|
||||||
root = SubResource( 11 )
|
root = SubResource( 10 )
|
||||||
hidden_tabs = {
|
hidden_tabs = {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="SampleScene" type="VBoxContainer"]
|
[node name="SampleScene" type="VBoxContainer"]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
script = ExtResource( 4 )
|
script = ExtResource( 4 )
|
||||||
__meta__ = {
|
|
||||||
"_edit_use_anchors_": false
|
|
||||||
}
|
|
||||||
|
|
||||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||||
margin_right = 1024.0
|
margin_right = 1024.0
|
||||||
|
@ -166,73 +147,90 @@ __meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="DockableContainer" type="Container" parent="."]
|
[node name="DockableContainers" type="HBoxContainer" parent="."]
|
||||||
margin_top = 24.0
|
margin_top = 24.0
|
||||||
margin_right = 1024.0
|
margin_right = 1024.0
|
||||||
margin_bottom = 600.0
|
margin_bottom = 600.0
|
||||||
size_flags_horizontal = 3
|
size_flags_horizontal = 3
|
||||||
size_flags_vertical = 3
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="DockableContainer" type="Container" parent="DockableContainers"]
|
||||||
|
margin_right = 483.0
|
||||||
|
margin_bottom = 576.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
script = ExtResource( 1 )
|
script = ExtResource( 1 )
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
layout = SubResource( 12 )
|
layout = SubResource( 2 )
|
||||||
|
|
||||||
[node name="Control0" type="ColorRect" parent="DockableContainer"]
|
[node name="Control0" type="ColorRect" parent="DockableContainers/DockableContainer"]
|
||||||
margin_left = 4.0
|
margin_left = 4.0
|
||||||
margin_top = 32.0
|
margin_top = 32.0
|
||||||
margin_right = 225.821
|
margin_right = 479.0
|
||||||
margin_bottom = 180.476
|
margin_bottom = 278.0
|
||||||
rect_min_size = Vector2( 64, 64 )
|
rect_min_size = Vector2( 64, 64 )
|
||||||
|
|
||||||
[node name="Control1" type="ColorRect" parent="DockableContainer"]
|
[node name="Control1" type="ColorRect" parent="DockableContainers/DockableContainer"]
|
||||||
margin_left = 245.821
|
margin_left = 4.0
|
||||||
margin_top = 32.0
|
margin_top = 326.0
|
||||||
margin_right = 740.079
|
margin_right = 479.0
|
||||||
margin_bottom = 276.0
|
margin_bottom = 572.0
|
||||||
rect_min_size = Vector2( 128, 128 )
|
rect_min_size = Vector2( 128, 128 )
|
||||||
color = Color( 0.141176, 0.0745098, 0.603922, 1 )
|
color = Color( 0.141176, 0.0745098, 0.603922, 1 )
|
||||||
|
|
||||||
[node name="Control2" type="ColorRect" parent="DockableContainer"]
|
[node name="Control2" type="ColorRect" parent="DockableContainers/DockableContainer"]
|
||||||
margin_left = 4.0
|
visible = false
|
||||||
margin_top = 228.476
|
margin_top = 294.0
|
||||||
margin_right = 225.821
|
margin_right = 64.0
|
||||||
margin_bottom = 374.238
|
margin_bottom = 358.0
|
||||||
rect_min_size = Vector2( 64, 64 )
|
rect_min_size = Vector2( 64, 64 )
|
||||||
color = Color( 0.533333, 0.380392, 0.380392, 1 )
|
color = Color( 0.533333, 0.380392, 0.380392, 1 )
|
||||||
|
|
||||||
[node name="Control3" type="ColorRect" parent="DockableContainer"]
|
[node name="Separator" type="ColorRect" parent="DockableContainers"]
|
||||||
|
margin_left = 487.0
|
||||||
|
margin_right = 537.0
|
||||||
|
margin_bottom = 576.0
|
||||||
|
rect_min_size = Vector2( 50, 0 )
|
||||||
|
color = Color( 0, 0, 0, 1 )
|
||||||
|
|
||||||
|
[node name="DockableContainer2" type="Container" parent="DockableContainers"]
|
||||||
|
margin_left = 541.0
|
||||||
|
margin_right = 1024.0
|
||||||
|
margin_bottom = 576.0
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
script = ExtResource( 1 )
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
layout = SubResource( 4 )
|
||||||
|
|
||||||
|
[node name="Control3" type="ColorRect" parent="DockableContainers/DockableContainer2"]
|
||||||
margin_left = 4.0
|
margin_left = 4.0
|
||||||
margin_top = 422.238
|
margin_top = 32.0
|
||||||
margin_right = 225.821
|
margin_right = 231.5
|
||||||
margin_bottom = 568.0
|
margin_bottom = 152.0
|
||||||
rect_min_size = Vector2( 64, 64 )
|
rect_min_size = Vector2( 64, 64 )
|
||||||
color = Color( 0.741176, 0.188235, 0.188235, 1 )
|
color = Color( 0, 1, 0.905882, 1 )
|
||||||
|
|
||||||
[node name="Control4" type="ColorRect" parent="DockableContainer"]
|
[node name="Control4" type="ColorRect" parent="DockableContainers/DockableContainer2"]
|
||||||
margin_left = 245.821
|
margin_left = 4.0
|
||||||
margin_top = 324.0
|
margin_top = 200.0
|
||||||
margin_right = 740.079
|
margin_right = 231.5
|
||||||
margin_bottom = 568.0
|
margin_bottom = 572.0
|
||||||
rect_min_size = Vector2( 128, 128 )
|
rect_min_size = Vector2( 128, 128 )
|
||||||
color = Color( 0.129412, 0.121569, 0.121569, 1 )
|
color = Color( 0, 0.698039, 0.0588235, 1 )
|
||||||
|
|
||||||
[node name="Control5" type="ColorRect" parent="DockableContainer"]
|
[node name="Control5" type="ColorRect" parent="DockableContainers/DockableContainer2"]
|
||||||
margin_left = 760.079
|
margin_left = 251.5
|
||||||
margin_top = 32.0
|
margin_top = 32.0
|
||||||
margin_right = 1020.0
|
margin_right = 479.0
|
||||||
margin_bottom = 568.0
|
margin_bottom = 572.0
|
||||||
rect_min_size = Vector2( 64, 64 )
|
rect_min_size = Vector2( 64, 64 )
|
||||||
color = Color( 0.333333, 0.862745, 0.8, 1 )
|
color = Color( 1, 0.937255, 0, 1 )
|
||||||
|
|
||||||
[node name="Control6" type="ColorRect" parent="DockableContainer"]
|
|
||||||
visible = false
|
|
||||||
margin_left = 760.079
|
|
||||||
margin_top = 32.0
|
|
||||||
margin_right = 1020.0
|
|
||||||
margin_bottom = 568.0
|
|
||||||
rect_min_size = Vector2( 64, 64 )
|
|
||||||
color = Color( 0.898039, 0.921569, 0.188235, 1 )
|
|
||||||
[connection signal="pressed" from="HBoxContainer/AddControlButton" to="." method="_on_add_pressed"]
|
[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/SaveLayoutButton" to="." method="_on_save_pressed"]
|
||||||
[connection signal="pressed" from="HBoxContainer/LoadLayoutButton" to="." method="_on_load_pressed"]
|
[connection signal="pressed" from="HBoxContainer/LoadLayoutButton" to="." method="_on_load_pressed"]
|
||||||
|
|
Loading…
Reference in a new issue