80 lines
3.3 KiB
GDScript3
80 lines
3.3 KiB
GDScript3
|
@tool
|
||
|
extends "./StatisticsView.gd"
|
||
|
|
||
|
@onready var tree: Tree
|
||
|
@onready var summary_tree: Tree
|
||
|
|
||
|
func display(stats: ProjectStatistics) -> void:
|
||
|
#.display(stats)
|
||
|
super.display(stats)
|
||
|
update_tree(stats)
|
||
|
|
||
|
func update_tree(stats: ProjectStatistics) -> void:
|
||
|
pass
|
||
|
|
||
|
func _on_item_activated() -> void:
|
||
|
if tree.get_selected_column() == 0:
|
||
|
var path: String = tree.get_selected().get_metadata(0)
|
||
|
emit_signal("file_selected", path)
|
||
|
|
||
|
func _on_column_title_clicked(column: int, _mouse_button: int) -> void:
|
||
|
if stats:
|
||
|
stats = stats.duplicate()
|
||
|
_sort_by_column(column)
|
||
|
update_tree(stats)
|
||
|
update_icons()
|
||
|
|
||
|
func _sort_by_column(column: int) -> void:
|
||
|
pass
|
||
|
|
||
|
func sort_name(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
var result: int = file2.get_name().casecmp_to(file1.get_name())
|
||
|
return result == 1 if result != 0 else sort_path(file1, file2)
|
||
|
|
||
|
func sort_path(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
return file2.path.casecmp_to(file1.path) == 1
|
||
|
|
||
|
func sort_extension(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
var result: int = file2._get_extension().casecmp_to(file1._get_extension())
|
||
|
return result == 1 if result != 0 else sort_path(file1, file2)
|
||
|
|
||
|
func sort_resource_type(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
var result: int = file2.type.casecmp_to(file1.type)
|
||
|
return result == 1 if result != 0 else sort_path(file1, file2)
|
||
|
|
||
|
func sort_node_type(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
var result: int = file2.base_node_type.casecmp_to(file1.base_node_type)
|
||
|
return result == 1 if result != 0 else sort_path(file1, file2)
|
||
|
|
||
|
func sort_size(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
return file1.size > file2.size if file1.size != file2.size else sort_name(file1, file2)
|
||
|
|
||
|
func sort_total_lines(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
return file1.total_lines > file2.total_lines if file1.total_lines != file2.total_lines else sort_source_code_lines(file1, file2)
|
||
|
|
||
|
func sort_source_code_lines(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
return file1.source_code_lines > file2.source_code_lines if file1.source_code_lines != file2.source_code_lines else sort_comment_lines(file1, file2)
|
||
|
|
||
|
func sort_comment_lines(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
return file1.comment_lines > file2.comment_lines if file1.comment_lines != file2.comment_lines else sort_blank_lines(file1, file2)
|
||
|
|
||
|
func sort_blank_lines(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
return file1.blank_lines > file2.blank_lines if file1.blank_lines != file2.blank_lines else sort_size(file1, file2)
|
||
|
|
||
|
func sort_node_count(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
return file1.node_count > file2.node_count if file1.node_count != file2.node_count else sort_connection_count(file1, file2)
|
||
|
|
||
|
func sort_connection_count(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
return file1.connection_count > file2.connection_count if file1.connection_count != file2.connection_count else sort_name(file1, file2)
|
||
|
|
||
|
func sort_local_to_scene(file1: FileStatistics, file2: FileStatistics) -> bool:
|
||
|
return file1.local_to_scene if not file1.local_to_scene and file2.local_to_scene else sort_name(file1, file2)
|
||
|
|
||
|
func _notification(what: int) -> void:
|
||
|
match what:
|
||
|
NOTIFICATION_PREDELETE:
|
||
|
if is_instance_valid(tree):
|
||
|
tree.clear()
|
||
|
if is_instance_valid(tree):
|
||
|
summary_tree.clear()
|