aboutsummaryrefslogtreecommitdiff
path: root/menu/menu.gd
blob: d6e1501f8c23c4dfeee49d4fb106b84da782a1f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
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" },
]
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", self, "import_option_sets")
	file_picker.show_modal(true)
	file_picker.invalidate()


func import_option_sets(file_path: String):
	stage.load_option_sets(file_path)
	stage.save_option_sets()


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", self, "clear_option_sets")
	popup.open_popup("Clear option sets?", dialog)


func clear_option_sets():
	stage.clear_option_sets()
	stage.save_option_sets()


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", self, "import_database")
	file_picker.show_modal(true)
	file_picker.invalidate()


func import_database(file_path: String):
	database.load_database(file_path)
	database.save_database()


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", self, "clear_database")
	popup.open_popup("Clear database?", dialog)


func clear_database():
	database.clear_database()
	database.save_database()


func about_action():
	dialog.setup("Surgery Log\nversion 0.1", "", "")
	popup.open_popup("About", dialog)