small racing game im working on
Diffstat (limited to 'ui/editor/tree.gd')
-rw-r--r--ui/editor/tree.gd34
1 files changed, 34 insertions, 0 deletions
diff --git a/ui/editor/tree.gd b/ui/editor/tree.gd
new file mode 100644
index 0000000..df1f0ab
--- /dev/null
+++ b/ui/editor/tree.gd
@@ -0,0 +1,34 @@
+@tool
+extends Tree
+
+@export var root_fs: DirRes
+var selected: DirRes
+
+signal selected_dir(d: DirRes)
+
+func _ready() -> void:
+ var root := create_item();
+ populate(root_fs, root)
+
+func populate(fs: DirRes, parent: TreeItem):
+ for file in fs.files:
+ if file is DirRes:
+ var item := create_item(parent)
+ item.set_icon(0, preload("res://ui/assets/folder.png"))
+ item.set_icon_max_width(0, 24)
+ item.set_text(0, file.resource_name)
+ item.set_meta(&"res", file)
+ item.set_tooltip_text(0, file.description)
+ item.collapsed = true
+ populate(file, item)
+ else: pass # we dont do files here (that responsibility goes to items)
+
+func expand_selected() -> void:
+ get_selected().collapsed = false
+
+func _on_cell_selected() -> void:
+ selected = get_selected().get_meta(&"res")
+ selected_dir.emit(selected)
+
+func _on_items_dir_selected(i: int) -> void:
+ get_selected().get_child(i).select(0)