aboutsummaryrefslogtreecommitdiff
path: root/logic/database.gd
diff options
context:
space:
mode:
authordam <dam@gudinoff>2022-01-06 15:42:44 +0000
committerdam <dam@gudinoff>2022-01-06 15:42:44 +0000
commit431f042390ad36297a5ec986772c77da23b7fb67 (patch)
treece37ed802cf816aa0811bcd90c2b278645d7da33 /logic/database.gd
parent0eeacf3d142b40427ea5ca5b2806fe714c00f9b4 (diff)
downloadsurgery-log-431f042390ad36297a5ec986772c77da23b7fb67.tar.zst
surgery-log-431f042390ad36297a5ec986772c77da23b7fb67.zip
Remove date field and reduce usage of dictionary instances.
Diffstat (limited to 'logic/database.gd')
-rw-r--r--logic/database.gd17
1 files changed, 10 insertions, 7 deletions
diff --git a/logic/database.gd b/logic/database.gd
index 551b9bf..044681f 100644
--- a/logic/database.gd
+++ b/logic/database.gd
@@ -77,6 +77,10 @@ func clear_selection():
unselect_all()
+func scroll_to_selected():
+ v_scroll_bar.value = float(selected_idx)/float(db.size()) * v_scroll_bar.max_value - (v_scroll_bar.page * 0.5)
+
+
func delete_action():
if selected_idx < 0:
return
@@ -104,12 +108,11 @@ func add_action():
stage.set_stage(staged)
-func scroll_down():
- v_scroll_bar.value = v_scroll_bar.max_value
-
-
func save_stage(entry: Dictionary):
- entry = DatabaseEntry.instance_entry(entry) # @DAM Maybe we could not be creating endless dictionaries?
+ if DatabaseEntry.is_valid_entry(entry) == false:
+ printerr("INVALID ENTRY RECEIVED")
+ return # @DAM Deal with this.
+
var next_selected_idx: int
if staged_idx >= 0:
db[staged_idx] = entry
@@ -117,13 +120,12 @@ func save_stage(entry: Dictionary):
else:
db.append(entry)
add_item(get_entry_view(entry))
- call_deferred("scroll_down")
next_selected_idx = db.size() - 1
select(next_selected_idx)
emit_signal("item_selected", next_selected_idx) # Calling "select" does not trigger the "item_selected" signal.
set_item_text(selected_idx, get_entry_view(db[selected_idx]))
- v_scroll_bar.value = float(selected_idx)/float(db.size()) * v_scroll_bar.max_value - (v_scroll_bar.page * 0.5)
+ call_deferred("scroll_to_selected")
store_database()
@@ -171,6 +173,7 @@ func store_database(file_path: String = DATABASE_FILE_PATH):
file.store_csv_line(header)
var entry := PoolStringArray()
for it in db:
+ # @DAM This approach depends on the order the dictionary fields are created.
file.store_csv_line(it.values())
file.close()