1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- tool
- extends Panel
-
- signal tree_built # used for debugging
-
- const Todo := preload("res://addons/Todo_Manager/todo_class.gd")
-
- var sort_alphabetical := true
-
- onready var tree := $Tree as Tree
-
- func build_tree(todo_items : Array, ignore_paths : Array, patterns : Array, sort_alphabetical : bool, full_path : bool) -> void:
- tree.clear()
- if sort_alphabetical:
- todo_items.sort_custom(self, "sort_alphabetical")
- else:
- todo_items.sort_custom(self, "sort_backwards")
- var root := tree.create_item()
- root.set_text(0, "Scripts")
- for todo_item in todo_items:
- var ignore := false
- for ignore_path in ignore_paths:
- var script_path : String = todo_item.script_path
- if script_path.begins_with(ignore_path) or script_path.begins_with("res://" + ignore_path) or script_path.begins_with("res:///" + ignore_path):
- ignore = true
- break
- if ignore:
- continue
- var script := tree.create_item(root)
- if full_path:
- script.set_text(0, todo_item.script_path + " -------")
- else:
- script.set_text(0, todo_item.get_short_path() + " -------")
- script.set_metadata(0, todo_item)
- for todo in todo_item.todos:
- var item := tree.create_item(script)
- var content_header : String = todo.content
- if "\n" in todo.content:
- content_header = content_header.split("\n")[0] + "..."
- item.set_text(0, "(%0) - %1".format([todo.line_number, content_header], "%_"))
- item.set_tooltip(0, todo.content)
- item.set_metadata(0, todo)
- for pattern in patterns:
- if pattern[0] == todo.pattern:
- item.set_custom_color(0, pattern[1])
- emit_signal("tree_built")
-
-
- func sort_alphabetical(a, b) -> bool:
- if a.script_path > b.script_path:
- return true
- else:
- return false
-
- func sort_backwards(a, b) -> bool:
- if a.script_path < b.script_path:
- return true
- else:
- return false
|