extends MenuButton const menu_items: Array = [ { label = "Import Option Sets", action = "import_option_sets_action" }, { label = "Export Option Sets", action = "export_option_sets_action" }, { label = "Clear Option Sets", action = "clear_option_sets_action" }, { label = "Import Database", action = "import_database_action" }, { label = "Export Database", action = "export_database_action" }, { label = "Clear Database", action = "clear_database_action" }, { label = "About", action = "about_action" }, # { label = "TEST_FAKE_DB", action = "test_fake_db_action" }, ] const license_font_b612: String = "res://licenses/font_b612.txt" const license_godot: String = "res://licenses/godot.txt" onready var menu := get_popup() as PopupMenu onready var popup := get_node("/root/main/popup") as ModalPopup onready var dialog := get_node("/root/main/dialog") as Dialog onready var file_picker := get_node("/root/main/file_picker") as FileDialog onready var database := get_node("/root/main/database") as Database onready var stage := get_node("/root/main/stage") as Stage func _ready(): for idx in range(menu_items.size()): menu.add_item(menu_items[idx].label, idx) menu.connect("id_pressed", self, "id_pressed") func id_pressed(id: int): self.call_deferred(menu_items[id].action) func import_option_sets_action(): dialog.setup("All option sets from the dropdown menus will be replaced.", "Continue", "No") dialog.connect("accepted", self, "import_option_sets_action_accepted") popup.open_popup("Replace option sets?", dialog) func import_option_sets_action_accepted(): file_picker.mode = FileDialog.MODE_OPEN_FILE file_picker.current_dir = OS.get_system_dir(OS.SYSTEM_DIR_DOWNLOADS) file_picker.filters = ["*.json", "*.csv"] file_picker.current_file = "" file_picker.connect("file_selected", stage, "load_option_sets") file_picker.show_modal(true) file_picker.invalidate() func export_option_sets_action(): file_picker.mode = FileDialog.MODE_SAVE_FILE file_picker.current_dir = OS.get_system_dir(OS.SYSTEM_DIR_DOWNLOADS) file_picker.filters = ["*.json"] file_picker.current_file = "" file_picker.connect("file_selected", stage, "save_option_sets") file_picker.show_modal(true) file_picker.invalidate() func clear_option_sets_action(): dialog.setup("All option sets from the dropdown menus will be deleted.", "Delete all", "No") dialog.connect("accepted", stage, "clear_option_sets") popup.open_popup("Clear option sets?", dialog) func import_database_action(): dialog.setup("All entries from the database will be replaced.", "Continue", "No") dialog.connect("accepted", self, "import_database_action_accepted") popup.open_popup("Replace database?", dialog) func import_database_action_accepted(): file_picker.mode = FileDialog.MODE_OPEN_FILE file_picker.current_dir = OS.get_system_dir(OS.SYSTEM_DIR_DOWNLOADS) file_picker.filters = ["*.json", "*.csv"] file_picker.current_file = "" file_picker.connect("file_selected", database, "load_database") file_picker.show_modal(true) file_picker.invalidate() func export_database_action(): file_picker.mode = FileDialog.MODE_SAVE_FILE file_picker.current_dir = OS.get_system_dir(OS.SYSTEM_DIR_DOWNLOADS) file_picker.filters = ["*.csv"] file_picker.current_file = "" file_picker.connect("file_selected", database, "save_database") file_picker.show_modal(true) file_picker.invalidate() func clear_database_action(): dialog.setup("All entries from the database will be deleted.", "Delete all", "No") dialog.connect("accepted", database, "clear_database") popup.open_popup("Clear database?", dialog) func about_action(): dialog.setup("Surgery Log\nversion 0.1", "", "") popup.open_popup("About", dialog) # @DAM Hide this debug method before release. func test_fake_db_action(): dialog.setup("All entries from the database will be deleted and new fake entries inserted.", "Yes", "No") dialog.connect("accepted", database, "fake_database") popup.open_popup("Fake DB?", dialog)