aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordam <dam@gudinoff>2021-12-06 18:42:53 +0000
committerdam <dam@gudinoff>2021-12-06 18:42:53 +0000
commit2c1085cf56e8fa1baf3c764752828e7f04391d7e (patch)
treebf7cc9c2c4ce340ddeccfeaeceb74a1d1f2be916
parente5072b4342aecc7b19ed3b0df156f3ecfcf0598f (diff)
downloadsurgery-log-2c1085cf56e8fa1baf3c764752828e7f04391d7e.tar.zst
surgery-log-2c1085cf56e8fa1baf3c764752828e7f04391d7e.zip
Add file dialogs for import/export filters. Height adjusted to virtual keyboard.
-rw-r--r--export_presets.cfg6
-rw-r--r--fonts/font_regular.tres1
-rw-r--r--licenses/licenses.gd23
-rw-r--r--main.gd45
-rw-r--r--main.tscn179
-rw-r--r--menu/font_b612.txt (renamed from licenses/font_b612.txt)0
-rw-r--r--menu/godot.txt (renamed from licenses/godot.txt)0
-rw-r--r--menu/menu.gd112
-rw-r--r--project.godot4
-rw-r--r--readme.md8
10 files changed, 270 insertions, 108 deletions
diff --git a/export_presets.cfg b/export_presets.cfg
index da53431..ae6c4cf 100644
--- a/export_presets.cfg
+++ b/export_presets.cfg
@@ -27,7 +27,7 @@ keystore/debug_password="debug.password"
keystore/release=""
keystore/release_user=""
keystore/release_password=""
-one_click_deploy/clear_previous_install=true
+one_click_deploy/clear_previous_install=false
version/code=1
version/name="1.0"
package/unique_name="com.gudinoff.$genname"
@@ -137,7 +137,7 @@ permissions/process_outgoing_calls=false
permissions/read_calendar=false
permissions/read_call_log=false
permissions/read_contacts=false
-permissions/read_external_storage=false
+permissions/read_external_storage=true
permissions/read_frame_buffer=false
permissions/read_history_bookmarks=false
permissions/read_input_state=false
@@ -188,7 +188,7 @@ permissions/write_apn_settings=false
permissions/write_calendar=false
permissions/write_call_log=false
permissions/write_contacts=false
-permissions/write_external_storage=false
+permissions/write_external_storage=true
permissions/write_gservices=false
permissions/write_history_bookmarks=false
permissions/write_profile=false
diff --git a/fonts/font_regular.tres b/fonts/font_regular.tres
index 714269f..095114d 100644
--- a/fonts/font_regular.tres
+++ b/fonts/font_regular.tres
@@ -3,5 +3,6 @@
[ext_resource path="res://fonts/B612Mono-Regular.ttf" type="DynamicFontData" id=1]
[resource]
+size = 34
use_filter = true
font_data = ExtResource( 1 )
diff --git a/licenses/licenses.gd b/licenses/licenses.gd
deleted file mode 100644
index 87a8d47..0000000
--- a/licenses/licenses.gd
+++ /dev/null
@@ -1,23 +0,0 @@
-extends Node
-
-const font_b612: String = "res://licenses/font_b612.txt"
-const godot: String = "res://licenses/godot.txt"
-
-# @DAM For now, it just keeping track of licenses and storing a sample code of how to read the files.
-
-func _ready():
-# load_file(file)
- pass
-
-func load_file(file: String):
- var f = File.new()
- f.open(file, File.READ)
- var index = 1
- while not f.eof_reached(): # iterate through all lines until the end of file is reached
- var line = f.get_line()
- line += " "
- print(line + str(index))
-
- index += 1
- f.close()
- return
diff --git a/main.gd b/main.gd
index f6c1f88..803c2d4 100644
--- a/main.gd
+++ b/main.gd
@@ -1,38 +1,37 @@
extends Control
-
-# Declare member variables here. Examples:
-# var a = 2
-# var b = "text"
-var _timeout: float
-
-# Called when the node enters the scene tree for the first time.
-func _ready():
- $output.text = "Hello!"
- $button.connect("pressed", self, "_pressed")
+var timeout: float
+onready var controls_sensible_to_keyboard: Array = [
+ self,
+ get_node("/root/main/about"),
+ get_node("/root/main/delete_filters"),
+ get_node("/root/main/import_filters"),
+ get_node("/root/main/export_filters"),
+]
func _process(delta: float):
- $output.text = "%s" % Engine.get_frames_per_second()
- $timer.text = "%s" % _timeout
- if _timeout > 0.0:
- _timeout -= delta
+
+ var keyboard_height: int = OS.get_virtual_keyboard_height()
+ for it in controls_sensible_to_keyboard:
+ it.margin_bottom = -keyboard_height
+
+ # @DAM Debug information.
+# $debug.text = "%s" % Engine.get_frames_per_second()
+# $debug.text = "%s" % timeout
+ if timeout > 0.0:
+ timeout -= delta
else:
Engine.target_fps = 10.0
-func _pressed():
- $log.text += "PRESSED\n"
-
-# Called every frame. 'delta' is the elapsed time since the previous frame.
-#func _process(delta):
-# pass
-
func _input(event):
Engine.target_fps = 0
- _timeout = 5.0
+ timeout = 3.5
func _unhandled_input(event):
Engine.target_fps = 0
- _timeout = 5.0
+ timeout = 3.5
+
+
diff --git a/main.tscn b/main.tscn
index adec227..83ee8d3 100644
--- a/main.tscn
+++ b/main.tscn
@@ -1,13 +1,15 @@
-[gd_scene load_steps=4 format=2]
+[gd_scene load_steps=5 format=2]
[ext_resource path="res://main.gd" type="Script" id=1]
[ext_resource path="res://date_picker/date_picker.tscn" type="PackedScene" id=2]
[ext_resource path="res://theme_white.tres" type="Theme" id=3]
+[ext_resource path="res://menu/menu.gd" type="Script" id=4]
[node name="main" type="Control"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = ExtResource( 3 )
+script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
@@ -24,7 +26,7 @@ __meta__ = {
anchor_right = 1.0
anchor_bottom = 1.0
margin_left = 4.0
-margin_top = 30.0
+margin_top = 60.0
margin_right = -4.0
margin_bottom = -4.0
scroll_horizontal_enabled = false
@@ -33,24 +35,23 @@ __meta__ = {
}
[node name="VBoxContainer" type="VBoxContainer" parent="body/record"]
-margin_right = 712.0
-margin_bottom = 1246.0
+margin_right = 1072.0
+margin_bottom = 1856.0
rect_clip_content = true
size_flags_horizontal = 3
size_flags_vertical = 3
-script = ExtResource( 1 )
[node name="process_number" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_right = 712.0
-margin_bottom = 30.0
+margin_right = 1072.0
+margin_bottom = 52.0
placeholder_text = "Nº Processo"
caret_blink = true
caret_blink_speed = 0.5
[node name="surgery_number" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_top = 34.0
-margin_right = 712.0
-margin_bottom = 64.0
+margin_top = 56.0
+margin_right = 1072.0
+margin_bottom = 108.0
placeholder_text = "Nº Cirurgia"
caret_blink = true
caret_blink_speed = 0.5
@@ -58,111 +59,111 @@ caret_blink_speed = 0.5
[node name="date_picker" parent="body/record/VBoxContainer" instance=ExtResource( 2 )]
anchor_right = 0.0
anchor_bottom = 0.0
-margin_top = 68.0
-margin_right = 712.0
-margin_bottom = 268.0
+margin_top = 112.0
+margin_right = 1072.0
+margin_bottom = 312.0
rect_min_size = Vector2( 400, 200 )
[node name="place" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_top = 272.0
-margin_right = 712.0
-margin_bottom = 302.0
+margin_top = 316.0
+margin_right = 1072.0
+margin_bottom = 368.0
placeholder_text = "Local"
caret_blink = true
caret_blink_speed = 0.5
[node name="anesthesia" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_top = 306.0
-margin_right = 712.0
-margin_bottom = 336.0
+margin_top = 372.0
+margin_right = 1072.0
+margin_bottom = 424.0
placeholder_text = "Anesthesics"
caret_blink = true
caret_blink_speed = 0.5
[node name="first_aider" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_top = 340.0
-margin_right = 712.0
-margin_bottom = 370.0
+margin_top = 428.0
+margin_right = 1072.0
+margin_bottom = 480.0
placeholder_text = "1º Ajudante"
caret_blink = true
caret_blink_speed = 0.5
[node name="type" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_top = 374.0
-margin_right = 712.0
-margin_bottom = 404.0
+margin_top = 484.0
+margin_right = 1072.0
+margin_bottom = 536.0
placeholder_text = "Tipo"
caret_blink = true
caret_blink_speed = 0.5
[node name="sub_type" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_top = 408.0
-margin_right = 712.0
-margin_bottom = 438.0
+margin_top = 540.0
+margin_right = 1072.0
+margin_bottom = 592.0
placeholder_text = "Subtipo"
caret_blink = true
caret_blink_speed = 0.5
[node name="sub_sub_type" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_top = 442.0
-margin_right = 712.0
-margin_bottom = 472.0
+margin_top = 596.0
+margin_right = 1072.0
+margin_bottom = 648.0
placeholder_text = "Sub-Subtipo"
caret_blink = true
caret_blink_speed = 0.5
[node name="pathology" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_top = 476.0
-margin_right = 712.0
-margin_bottom = 506.0
+margin_top = 652.0
+margin_right = 1072.0
+margin_bottom = 704.0
placeholder_text = "Patologia"
caret_blink = true
caret_blink_speed = 0.5
[node name="intervention" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_top = 510.0
-margin_right = 712.0
-margin_bottom = 540.0
+margin_top = 708.0
+margin_right = 1072.0
+margin_bottom = 760.0
placeholder_text = "Intervenção"
caret_blink = true
caret_blink_speed = 0.5
[node name="urgency" type="CheckBox" parent="body/record/VBoxContainer"]
-margin_top = 544.0
-margin_right = 712.0
-margin_bottom = 572.0
+margin_top = 764.0
+margin_right = 1072.0
+margin_bottom = 814.0
text = "Urgência"
[node name="notes" type="LineEdit" parent="body/record/VBoxContainer"]
-margin_top = 576.0
-margin_right = 712.0
-margin_bottom = 606.0
+margin_top = 818.0
+margin_right = 1072.0
+margin_bottom = 870.0
placeholder_text = "Notas"
caret_blink = true
caret_blink_speed = 0.5
[node name="output" type="RichTextLabel" parent="body/record/VBoxContainer"]
-margin_top = 610.0
-margin_right = 712.0
-margin_bottom = 660.0
+margin_top = 874.0
+margin_right = 1072.0
+margin_bottom = 924.0
rect_min_size = Vector2( 0, 50 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="timer" type="RichTextLabel" parent="body/record/VBoxContainer"]
-margin_top = 664.0
-margin_right = 712.0
-margin_bottom = 714.0
+margin_top = 928.0
+margin_right = 1072.0
+margin_bottom = 978.0
rect_min_size = Vector2( 0, 50 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="button" type="Button" parent="body/record/VBoxContainer"]
-margin_top = 718.0
-margin_right = 712.0
-margin_bottom = 768.0
+margin_top = 982.0
+margin_right = 1072.0
+margin_bottom = 1032.0
grow_horizontal = 2
grow_vertical = 2
rect_min_size = Vector2( 0, 50 )
@@ -172,9 +173,9 @@ __meta__ = {
}
[node name="log" type="RichTextLabel" parent="body/record/VBoxContainer"]
-margin_top = 772.0
-margin_right = 712.0
-margin_bottom = 822.0
+margin_top = 1036.0
+margin_right = 1072.0
+margin_bottom = 1086.0
rect_min_size = Vector2( 0, 50 )
__meta__ = {
"_edit_use_anchors_": false
@@ -198,8 +199,72 @@ anchor_left = 1.0
anchor_right = 1.0
margin_left = -32.0
margin_bottom = 26.0
-text = "#"
-items = [ "Importar filtros", null, 0, false, false, 0, 0, null, "", false, "Exportar filtros", null, 0, false, false, 1, 0, null, "", false, "Apagar filtros", null, 0, false, false, 2, 0, null, "", false, "Sobre", null, 0, false, false, 3, 0, null, "", false ]
+text = "≡"
+script = ExtResource( 4 )
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="about" type="AcceptDialog" parent="."]
+anchor_right = 1.0
+anchor_bottom = 1.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+window_title = ""
+dialog_autowrap = true
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="delete_filters" type="ConfirmationDialog" parent="."]
+anchor_right = 1.0
+anchor_bottom = 1.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+window_title = ""
+dialog_text = "Are you sure you want to delete all filters?"
+dialog_autowrap = true
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="import_filters" type="FileDialog" parent="."]
+anchor_right = 1.0
+anchor_bottom = 1.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+window_title = ""
+mode = 0
+access = 2
+filters = PoolStringArray( "*.csv" )
+show_hidden_files = true
+current_dir = ""
+current_path = ""
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="export_filters" type="FileDialog" parent="."]
+anchor_right = 1.0
+anchor_bottom = 1.0
+size_flags_horizontal = 3
+size_flags_vertical = 3
+window_title = ""
+access = 2
+filters = PoolStringArray( "*.csv" )
+show_hidden_files = true
+current_dir = ""
+current_path = ""
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="debug" type="Label" parent="."]
+anchor_left = 1.0
+anchor_right = 1.0
+margin_left = -571.0
+margin_top = 220.0
+margin_bottom = 829.0
__meta__ = {
"_edit_use_anchors_": false
}
diff --git a/licenses/font_b612.txt b/menu/font_b612.txt
index 2826948..2826948 100644
--- a/licenses/font_b612.txt
+++ b/menu/font_b612.txt
diff --git a/licenses/godot.txt b/menu/godot.txt
index bee83fb..bee83fb 100644
--- a/licenses/godot.txt
+++ b/menu/godot.txt
diff --git a/menu/menu.gd b/menu/menu.gd
new file mode 100644
index 0000000..55c74fa
--- /dev/null
+++ b/menu/menu.gd
@@ -0,0 +1,112 @@
+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" },
+]
+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 load_file(file: String):
+# var f = File.new()
+# f.open(file, File.READ)
+# var index = 1
+# while not f.eof_reached(): # iterate through all lines until the end of file is reached
+# var line = f.get_line()
+# line += " "
+# print(line + str(index))
+#
+# index += 1
+# f.close()
+# return
+
+
diff --git a/project.godot b/project.godot
index 4c68d91..6657a50 100644
--- a/project.godot
+++ b/project.godot
@@ -36,8 +36,8 @@ config/icon="res://icon.png"
[display]
-window/size/width=720
-window/size/height=1280
+window/size/width=1080
+window/size/height=1920
window/size/test_width=576
window/size/test_height=1024
window/energy_saving/keep_screen_on=false
diff --git a/readme.md b/readme.md
index deaf374..8dae6e0 100644
--- a/readme.md
+++ b/readme.md
@@ -7,5 +7,13 @@ Surgery Log
- [ ] Share DB:
- share db via html email with db inserted in encoded downliadable field;
- Use this to send email: https://docs.godotengine.org/en/stable/classes/class_os.html#class-os-method-shell-open
+- [ ] File dialogs should be dismissed when back button is pressed (instead of closing the app);
+- [ ] Translations:
+ - https://docs.godotengine.org/en/stable/getting_started/workflow/assets/importing_translations.html
+ - https://docs.godotengine.org/en/stable/tutorials/i18n/internationalizing_games.html#introduction
+- [ ] Set tabs titles dynamically: https://docs.godotengine.org/en/stable/classes/class_tabcontainer.html?highlight=tabcontainer#class-tabcontainer-method-set-tab-title
+- [ ] Create two themes:
+ - [ ] theme_light
+ - [ ] theme_dark