init
This commit is contained in:
55
addons/AsepriteWizard/interface/shared/tree/resource_tree.gd
Normal file
55
addons/AsepriteWizard/interface/shared/tree/resource_tree.gd
Normal file
@@ -0,0 +1,55 @@
|
||||
@tool
|
||||
extends VBoxContainer
|
||||
|
||||
signal refresh_triggered
|
||||
signal multi_selected(item: TreeItem, column: int, selected: bool)
|
||||
|
||||
@onready var _tree: Tree = $Tree
|
||||
|
||||
func _on_tree_filter_change_finished(text):
|
||||
var tree_root: TreeItem = _tree.get_root()
|
||||
|
||||
if text == "":
|
||||
tree_root.call_recursive("set", "visible", true)
|
||||
return
|
||||
tree_root.call_recursive("set", "visible", false)
|
||||
|
||||
_make_matching_children_visible(tree_root, text.to_lower())
|
||||
|
||||
|
||||
func _make_matching_children_visible(tree_root: TreeItem, text: String) -> void:
|
||||
for c in tree_root.get_children():
|
||||
if c.get_text(0).to_lower().contains(text):
|
||||
c.visible = true
|
||||
_ensure_parent_visible(c)
|
||||
_make_matching_children_visible(c, text)
|
||||
|
||||
|
||||
func _ensure_parent_visible(tree_item: TreeItem) -> void:
|
||||
var node_parent = tree_item.get_parent()
|
||||
if node_parent != null and not node_parent.visible:
|
||||
node_parent.visible = true
|
||||
_ensure_parent_visible(node_parent)
|
||||
|
||||
|
||||
func _on_expand_all_pressed():
|
||||
var tree_root: TreeItem = _tree.get_root()
|
||||
tree_root.set_collapsed_recursive(false)
|
||||
|
||||
|
||||
func _on_collapse_all_pressed():
|
||||
var tree_root: TreeItem = _tree.get_root()
|
||||
tree_root.set_collapsed_recursive(true)
|
||||
tree_root.collapsed = false
|
||||
|
||||
|
||||
func _on_refresh_tree_pressed():
|
||||
refresh_triggered.emit()
|
||||
|
||||
|
||||
func _on_tree_multi_selected(item: TreeItem, column: int, selected: bool):
|
||||
multi_selected.emit(item, column, selected)
|
||||
|
||||
|
||||
func get_resource_tree() -> Tree:
|
||||
return _tree
|
||||
Reference in New Issue
Block a user