diff options
Diffstat (limited to 'logic/database.gd')
| -rw-r--r-- | logic/database.gd | 17 |
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() |
