aboutsummaryrefslogtreecommitdiff
path: root/menu/menu.gd
blob: 36beee876175cebb0d8725ed6cb8acef88479dd8 (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
extends MenuButton

const menu_items: Array = [
	{ label = "IMPORT FILTERS",		action = "_menu_import_filters_action" },
	{ label = "EXPORT FILTERS",		action = "_menu_export_filters_action" },
	{ label = "CLEAR FILTERS",		action = "_menu_clear_filters_action" },
	{ label = "ABOUT",				action = "_menu_about_action" },
	{ label = "FAKE_DB",			action = "_menu_fake_db_action" },
]
const license_font_b612: String		= "res://licenses/font_b612.txt"
const license_godot: String			= "res://licenses/godot.txt"

onready var popup: PopupMenu = get_popup()
onready var debug: Label = get_node("/root/main/debug") as Label

func _ready():
	
	for idx in range(menu_items.size()):
		popup.add_item(menu_items[idx].label, idx)
	popup.connect("id_pressed", self, "id_pressed")
	
#	load_file(file)



func id_pressed(id: int):
	debug.text += "'%d':'%s'" % [id, menu_items[id].action]
	self.call_deferred(menu_items[id].action)
	debug.text += "!\n"


var csv_file: Array
var has_permissions := false
func _menu_import_filters_action():
	
#	printerr("pressed: %s" % get_stack()[0]);
	debug.text += "> import: "
	
	if OS.get_name() == "Android":
		while not has_permissions:
			var permissions := Array(OS.get_granted_permissions())
			if not permissions.has("android.permission.READ_EXTERNAL_STORAGE") \
				or not permissions.has("android.permission.WRITE_EXTERNAL_STORAGE"):
				OS.request_permissions()
	#			await get_tree().create_timer(1).timeout
				yield(get_tree().create_timer(1), "timeout") # - for Godot 3 branch
			else:
				has_permissions = true

	
	
	var file_dialog := get_node("/root/main/import_filters") as FileDialog
	file_dialog.current_dir = OS.get_system_dir(OS.SYSTEM_DIR_DOWNLOADS)
	file_dialog.connect("file_selected", self, "file_selected", [], CONNECT_ONESHOT)
	file_dialog.show_modal(true)
	file_dialog.invalidate()
#	printerr("download: '%s'" % OS.get_system_dir(OS.SYSTEM_DIR_DOWNLOADS))

func file_selected(path: String):
	debug.text += "'%s'\n" % path
	
	var file = File.new()
	file.open(path, File.READ)
	while file.eof_reached() == false:
		var line = file.get_line()
		csv_file.append(line)
		printerr("%s" % line)
	file.close()

func _menu_export_filters_action():
	debug.text += "> export: \n"
#	printerr("pressed: %s" % get_stack()[0]);
	var file_dialog := get_node("/root/main/export_filters") as FileDialog
	file_dialog.current_dir = OS.get_system_dir(OS.SYSTEM_DIR_DOWNLOADS)
	file_dialog.connect("file_selected", self, "file_selected_export", [], CONNECT_ONESHOT)
	file_dialog.show_modal(true)
	file_dialog.invalidate()

func file_selected_export(path: String):
	debug.text += "'%s'\n" % path
	var file = File.new()
	file.open(path, File.WRITE)
	for ln in csv_file:
		file.store_line(ln)
	file.close()


func _menu_clear_filters_action():
	debug.text += "> clear\n"
#	printerr("pressed: %s" % get_stack()[0]);
	(get_node("/root/main/delete_filters") as ConfirmationDialog).show_modal(true)


func _menu_about_action():
#	printerr("pressed: %s" % get_stack()[0]);
	debug.text += "> about\n"
	(get_node("/root/main/about") as AcceptDialog).show_modal()


func _menu_fake_db_action():
	get_node("/root/main/database").fake_database()