extends ScrollContainer signal reset signal preset_use signal close var dir var conf_reference:Config @onready var tree = $"MarginContainer/VBoxContainer/Tree" var tree_root: TreeItem @onready var addnew_name = $"MarginContainer/VBoxContainer/AddNew/name" @onready var addnew_switch = $"MarginContainer/VBoxContainer/AddNew/switch" @onready var close_icon = load("res://assets/icons/close.png") @onready var preset_use_icon = load("res://assets/icons/preset_use.png") # Called when the node enters the scene tree for the first time. func _ready() -> void: tree.set_column_title(0, "Name") tree.set_column_title(1, "Created") tree_root = tree.create_item() dir = DirAccess.open("user://presets/") tree.button_clicked.connect(func(item:TreeItem, column:int, id:int, _mbi:int): if column == 1: if id == 0: GlobalConfig.load_from_file(item.get_metadata(0)) GlobalConfig.save_to_file() preset_use.emit() if id == 1: dir.remove(item.get_metadata(0)) refresh_tree() ) addnew_switch.pressed.connect(func(): if addnew_name.text.length() > 0 and addnew_name.text.is_valid_filename(): addnew_name.text = addnew_name.text.simplify_path() if addnew_name.text.get_extension() != "cfg": addnew_name.text = addnew_name.text.get_basename() + ".cfg" conf_reference.save_to_file(dir.get_current_dir().path_join(addnew_name.text)) addnew_name.text = "" refresh_tree() ) refresh_tree() func refresh_tree() -> void: for child in tree_root.get_children(): child.free() if not dir: DirAccess.make_dir_absolute("user://presets/") dir = DirAccess.open("user://presets/") dir.list_dir_begin() var file_name = dir.get_next() while file_name != "": if file_name.get_extension() == "cfg": var child:TreeItem = tree.create_item(tree_root) var abs_file_name = dir.get_current_dir().path_join(file_name) child.set_cell_mode(0, TreeItem.CELL_MODE_STRING) child.set_text(0, file_name.get_basename()) var mod_time = FileAccess.get_modified_time(abs_file_name) child.set_text(1, Time.get_datetime_string_from_unix_time(mod_time, true)) child.add_button(1, preset_use_icon) child.add_button(1, close_icon) child.set_metadata(0, abs_file_name) file_name = dir.get_next() func _on_close_button_pressed() -> void: close.emit() func _on_reset_button_pressed() -> void: reset.emit()