1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
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.anchor_top = 1.0
reject.anchor_left = 0.0
reject.anchor_right = 0.5
reject.margin_right = -5.0
reject.rect_min_size.y = 62.0
reject.grow_vertical = Control.GROW_DIRECTION_BEGIN
reject.name = "reject"
reject.connect("pressed", self, "_signal_rejected")
add_child(reject)
accept = Button.new()
accept.anchor_top = 1.0
accept.anchor_left = 0.5
accept.anchor_right = 1.0
accept.margin_left = 5.0
accept.rect_min_size.y = 62.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
|