extends Node2D var category var item var item_filter = "" var config var ini var sheet var sort = "alphabetically" func _enter_tree() -> void: ini = "res://02 - Configurations/" + category + ".ini" %new_item_name.visible = false %delete.visible = false %save.visible = false %new_item.text = "New " + category %filter.placeholder_text = "Filter " + category %new_item_name.placeholder_text = "Set " + category + " name" %save.text = "Save " + category #print(category) list_items() set_menu_items() func _on_close_button_up() -> void: queue_free() func list_items() -> void: config = ConfigFile.new() config.load(ini) print(ini) var k = config.get_sections() if sort == "alphabetically": k.sort() #print(str(k)) var i = 0 %list.item_count = k.size() #print(str(%list.item_count)) for j in k: if item_filter == "": %list.set_item_text(i,str(j)) i = i+1 elif item_filter.to_lower() in j.to_lower(): %list.set_item_text(i,str(j)) i = i+1 #print(j) else: %list.item_count = %list.item_count -1 #print(str(%list.item_count)) func refresh_view(): if item != "": config = ConfigFile.new() config.load(ini) %save.visible = false func _on_list_item_selected(index: int) -> void: item = %list.get_item_text(index) #print(%list.get_item_text(index)) %delete.text = "Delete " + %list.get_item_text(index) %delete.visible = true sheet = load("res://01 - Menus/07 - Window/window.tscn").instantiate() sheet.item = item sheet.category = category add_child(sheet) #sheet.set_menu_items() refresh_view() func _on_filter_text_changed(new_text: String) -> void: item_filter = new_text #print(str(%list.get_selected_items())) list_items() if %list.item_count == 1: %list.select(0) else: %list.select(0) %list.deselect(0) func _on_new_item_button_up() -> void: %new_item_name.visible = true %new_item_name.grab_focus() func _on_new_item_name_text_submitted(new_text: String) -> void: config = ConfigFile.new() item = new_text config.load(ini) config.set_value(item,"type",category) config.save(ini) %new_item_name.text = "" %new_item_name.visible = false # sheet.save() refresh_view() list_items() func _on_new_item_name_editing_toggled(toggled_on: bool) -> void: if !toggled_on: %new_item_name.text = "" %new_item_name.visible = false func _on_delete_button_up() -> void: config = ConfigFile.new() config.load(ini) config.erase_section(item) config.save(ini) list_items() item = "" %delete.visible = false %item_name.visible = false remove_child(sheet) refresh_view() func _on_save_button_up() -> void: sheet.save() %save.visible = false func show_save(): %save.visible = true func set_menu_items(): var ui_scale = 1 if get_viewport_rect().size[0] + get_viewport_rect().size[1] < 3000: ui_scale = 0.7 var pixel_x = get_viewport_rect().size[0] / ui_scale var pixel_y = get_viewport_rect().size[1] / ui_scale %ui_background.size.y = pixel_y %close.position.y = pixel_y - 96 %new_item.position.y = pixel_y - 192 %new_item_name.position.y = pixel_y - 192 %delete.position.y = pixel_y - 286 %filter.position.y = pixel_y - 384 %list.position = (Vector2(128,128)) %list.size.y = pixel_y - 620 if pixel_x < pixel_y: #mobile %ui_background.size.x = pixel_x for i in [%close,%new_item,%filter,%delete,%save,%new_item_name,%list]: i.size.x = pixel_x - 128 i.position.x = 64 else: %ui_background.size.x = 512.0 for i in [%close,%new_item,%filter,%delete,%save,%new_item_name,%list]: i.size.x = 448 i.position.x = 32