small racing game im working on
Diffstat (limited to 'ui/editor/tree.gd')
| -rw-r--r-- | ui/editor/tree.gd | 34 |
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) |