45 lines
917 B
GDScript3
45 lines
917 B
GDScript3
|
extends Control
|
||
|
|
||
|
|
||
|
var flex_tab
|
||
|
var controls : Array = []
|
||
|
var current : int = -1
|
||
|
|
||
|
|
||
|
func _init():
|
||
|
set_meta("flexlayout", true)
|
||
|
|
||
|
func add(ft):
|
||
|
var tab = load("res://addons/flexible_layout/flexible_tab.tscn").instantiate()
|
||
|
tab.init(ft)
|
||
|
$Tabs.add_child(tab)
|
||
|
custom_minimum_size.y = $Tabs.get_minimum_size().y
|
||
|
controls.push_back(ft)
|
||
|
if current == -1:
|
||
|
set_current(0)
|
||
|
else:
|
||
|
ft.widget.visible = false
|
||
|
|
||
|
func erase(ft):
|
||
|
var index : int = controls.find(ft)
|
||
|
$Tabs.remove_child($Tabs.get_child(index))
|
||
|
controls.erase(ft)
|
||
|
if index == current:
|
||
|
if $Tabs.get_child_count() > 0:
|
||
|
set_current(0)
|
||
|
else:
|
||
|
set_current(-1)
|
||
|
|
||
|
func set_flex_tab(ft):
|
||
|
flex_tab = ft
|
||
|
|
||
|
func set_current(c : int):
|
||
|
current = c
|
||
|
for i in controls.size():
|
||
|
controls[i].widget.visible = (i == current)
|
||
|
$Tabs.get_child(i).queue_redraw()
|
||
|
|
||
|
func _on_resized():
|
||
|
print("%s: %s - %s" % [ str(self), str(position), str(size) ])
|
||
|
$Tabs.queue_sort()
|