diff options
| author | dam <dam@gudinoff> | 2022-03-31 16:05:54 +0000 |
|---|---|---|
| committer | dam <dam@gudinoff> | 2022-03-31 16:05:54 +0000 |
| commit | 9b619b8c5f117e53b121c2d868b024c7c7d08f4c (patch) | |
| tree | 0dde86709240834ba3acb078b605af1b76a8cb18 /dialog | |
| parent | 6089eeb29382598d69c6b77be88d8ca4b1a3adf5 (diff) | |
| download | surgery-log-9b619b8c5f117e53b121c2d868b024c7c7d08f4c.tar.zst surgery-log-9b619b8c5f117e53b121c2d868b024c7c7d08f4c.zip | |
Fixed signals on popup and modal_dialog to make those usable.
Diffstat (limited to 'dialog')
| -rw-r--r-- | dialog/dialog.gd | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/dialog/dialog.gd b/dialog/dialog.gd new file mode 100644 index 0000000..bfdbab5 --- /dev/null +++ b/dialog/dialog.gd @@ -0,0 +1,77 @@ +extends Control +class_name Dialog + +signal answered # (accepted: bool) +signal accepted # () +signal rejected # () + +export var clear_signals_on_hide := true + +var message : Label +var accept : Button +var reject : Button + + +func _init(): + self.anchor_right = 1.0 + self.anchor_bottom = 1.0 + self.rect_clip_content = true + self.connect("hide", self, "_clear_signals") + + reject = Button.new() + reject.text = "reject" + reject.anchor_top = 1.0 + reject.anchor_left = 0.0 + reject.anchor_right = 0.5 + reject.grow_vertical = Control.GROW_DIRECTION_BEGIN + reject.name = "reject" + reject.connect("pressed", self, "_signal_rejected") + add_child(reject) + + accept = Button.new() + accept.text = "accept" + accept.anchor_top = 1.0 + accept.anchor_left = 0.5 + accept.anchor_right = 1.0 + accept.grow_vertical = Control.GROW_DIRECTION_BEGIN + accept.name = "accept" + accept.connect("pressed", self, "_signal_accepted") + add_child(accept) + + message = Label.new() + message.autowrap = true + message.align = Label.ALIGN_CENTER + message.anchor_right = 1.0 + message.anchor_bottom = 1.0 + add_child(message) + + +func _clear_signals(): + if clear_signals_on_hide == false: + return + + for signal_name in ["answered", "accepted", "rejected"]: + for it in get_signal_connection_list(signal_name): + disconnect(it.signal, it.target, it.method) + + +func _signal_rejected(): + emit_signal("rejected") + emit_signal("answered", false) + hide() + + +func _signal_accepted(): + emit_signal("accepted") + emit_signal("answered", true) + hide() + + +func setup(message: String, accept_label: String = "Accept", reject_label: String = "Reject"): + self.message.text = message + accept.visible = accept_label != "" + accept.text = accept_label + reject.visible = reject_label != "" + reject.text = reject_label + + |
