extends VBoxContainer @onready var group_menus_container: VBoxContainer = %GroupMenusContainer @onready var new_group_button: Button = %NewGroupButton @onready var group_edit_dialog: GroupEditDialog = %GroupEditDialog const GROUP_MENU_SCENE := preload("res://UI/Components/GroupMenu.tscn") var group_list_metadata: GroupListMetadata func _ready() -> void: group_list_metadata = GroupListMetadata.new() new_group_button.pressed.connect(add_new_group) group_edit_dialog.canceled.connect(group_edit_dialog.clear_ok_button_connections) for gm in GroupsInstallsManager.get_all_group_metadatas(): add_group_from_metadata(gm) func add_new_group() -> void: group_edit_dialog.clear() group_edit_dialog.ok_button_text = "Create" group_edit_dialog.confirmed.connect( func(): var gm := group_edit_dialog.get_group_metadata() var group_menu: GroupMenu = GROUP_MENU_SCENE.instantiate() group_menus_container.add_child(group_menu) group_menu.setup_from_metadata(gm) group_menu.edit_group_button_pressed.connect(edit_group.bind(group_menu)) GroupsInstallsManager.create_group_folder(gm) GroupsInstallsManager.group_metadata_should_save(gm) , CONNECT_ONE_SHOT) group_edit_dialog.show() func edit_group(group_menu: GroupMenu) -> void: group_edit_dialog.clear() group_edit_dialog.ok_button_text = "OK" group_edit_dialog.group_metadata = group_menu.group_metadata group_edit_dialog.fill_from_group_metadata() group_edit_dialog.confirmed.connect( func(): group_menu.setup_from_metadata(group_edit_dialog.get_group_metadata()) , CONNECT_ONE_SHOT) group_edit_dialog.show() func add_group_from_metadata(gm: GroupMetadata) -> void: var group_menu: GroupMenu = GROUP_MENU_SCENE.instantiate() group_menus_container.add_child(group_menu) group_menu.setup_from_metadata(gm) group_menu.edit_group_button_pressed.connect(edit_group.bind(group_menu))