aboutsummaryrefslogtreecommitdiff
path: root/logic
diff options
context:
space:
mode:
authordam <dam@gudinoff>2022-03-31 16:05:54 +0000
committerdam <dam@gudinoff>2022-03-31 16:05:54 +0000
commit9b619b8c5f117e53b121c2d868b024c7c7d08f4c (patch)
tree0dde86709240834ba3acb078b605af1b76a8cb18 /logic
parent6089eeb29382598d69c6b77be88d8ca4b1a3adf5 (diff)
downloadsurgery-log-9b619b8c5f117e53b121c2d868b024c7c7d08f4c.tar.zst
surgery-log-9b619b8c5f117e53b121c2d868b024c7c7d08f4c.zip
Fixed signals on popup and modal_dialog to make those usable.
Diffstat (limited to 'logic')
-rw-r--r--logic/database.gd10
-rw-r--r--logic/popup.gd36
-rw-r--r--logic/stage.gd11
3 files changed, 37 insertions, 20 deletions
diff --git a/logic/database.gd b/logic/database.gd
index 5694dcc..b952356 100644
--- a/logic/database.gd
+++ b/logic/database.gd
@@ -8,12 +8,12 @@ var db: Array
var selected_idx: int
var staged_idx: int
-onready var confirm_action := get_node("/root/main/confirm_action") as ConfirmationDialog
onready var stage := get_node("/root/main/stage") as Stage
onready var delete_button := get_node("actions/delete") as Button
onready var edit_button := get_node("actions/edit") as Button
onready var add_button := get_node("actions/add") as Button
-
+onready var popup := get_node("/root/main/popup") as ModalPopup
+onready var dialog := get_node("/root/main/dialog") as Dialog
func _init():
selected_idx = -1
@@ -75,9 +75,9 @@ func delete_action():
if selected_idx < 0:
return
- confirm_action.dialog_text = "Do you want to delete entry with process ID '%s' from the database?" % db[selected_idx].process_id
- confirm_action.connect("confirmed", self, "delete_action_confirmed", [], CONNECT_ONESHOT)
- confirm_action.show_modal(true)
+ dialog.setup("Do you want to delete entry with process ID '%s' from the database?" % db[selected_idx].process_id, "Yes, delete", "No")
+ dialog.connect("accepted", self, "delete_action_confirmed")
+ popup.open_popup("Delete entry?", dialog)
func delete_action_confirmed():
diff --git a/logic/popup.gd b/logic/popup.gd
index 2ff91fe..31897c7 100644
--- a/logic/popup.gd
+++ b/logic/popup.gd
@@ -3,20 +3,39 @@ class_name ModalPopup
signal dismissed # ()
+export var clear_signals_on_hide := true
+
var control : Control
var control_parent : Node
onready var title := get_node("title") as Label
onready var background := get_node("background") as Panel
+onready var dismiss := get_node("dismiss") as Button
func _init():
- anchor_right = 1.0
- anchor_bottom = 1.0
+ self.anchor_right = 1.0
+ self.anchor_bottom = 1.0
+ self.rect_clip_content = true
+ self.connect("hide", self, "_clear_signals")
func _ready():
- get_node("dismiss").connect("pressed", self, "dismiss")
+ dismiss.connect("pressed", self, "_dismiss")
+
+
+func _clear_signals():
+ if clear_signals_on_hide == false:
+ return
+
+ for signal_name in ["dismissed"]:
+ for it in get_signal_connection_list(signal_name):
+ disconnect(it.signal, it.target, it.method)
+
+
+func _dismiss():
+ emit_signal("dismissed")
+ close_popup()
func open_popup(title: String, item: Control):
@@ -26,6 +45,7 @@ func open_popup(title: String, item: Control):
self.title.text = title
control = item
+ control.connect("hide", self, "close_popup")
control_parent = control.get_parent()
control_parent.remove_child(control)
self.add_child(control)
@@ -38,23 +58,19 @@ func open_popup(title: String, item: Control):
control.margin_top = 20
control.margin_right = -20
control.margin_bottom = -20
- add_child(control)
self.show()
control.show()
-func dismiss():
- emit_signal("dismissed")
-
-
func close_popup():
if visible == false:
return
- self.hide()
+
+ control.disconnect("hide", self, "close_popup")
control.hide()
+ self.hide()
remove_child(control)
control_parent.add_child(control)
control_parent = null
-
diff --git a/logic/stage.gd b/logic/stage.gd
index bf311b9..fde67d3 100644
--- a/logic/stage.gd
+++ b/logic/stage.gd
@@ -23,7 +23,7 @@ const OPTION_SETS_TREE_STRUCTURE := {
var staged_entry_hash: int
var option_sets: Dictionary
-onready var confirm_action := get_node("/root/main/confirm_action") as ConfirmationDialog
+
onready var process_id := get_node("controls/process_id") as LineEdit
onready var surgery_id := get_node("controls/surgery_id") as LineEdit
onready var date := get_node("controls/date_picker") as DatePicker
@@ -40,7 +40,8 @@ onready var notes := get_node("controls/notes") as LineEdit
onready var save_button := get_node("controls/save") as Button
onready var discard_button := get_node("controls/discard") as Button
onready var scrollbar := get_v_scrollbar()
-
+onready var popup := get_node("/root/main/popup") as ModalPopup
+onready var dialog := get_node("/root/main/dialog") as Dialog
func _init():
exclude_controls = ["date_picker", "save", "discard"]
@@ -110,9 +111,9 @@ func save_action():
func discard_action():
if get_stage().hash() != staged_entry_hash:
- confirm_action.dialog_text = "Do you want to discard the changes made?"
- confirm_action.connect("confirmed", self, "discard_action_confirmed", [], CONNECT_ONESHOT)
- confirm_action.show_modal(true)
+ dialog.setup("Do you want to discard the changes made?", "Yes, discard", "No")
+ dialog.connect("accepted", self, "discard_action_confirmed")
+ popup.open_popup("Discard changes?", dialog)
else:
discard_action_confirmed()