aboutsummaryrefslogtreecommitdiff
path: root/ui/modal_popup
diff options
context:
space:
mode:
Diffstat (limited to 'ui/modal_popup')
-rw-r--r--ui/modal_popup/modal_popup.gd76
-rw-r--r--ui/modal_popup/modal_popup.tscn40
2 files changed, 116 insertions, 0 deletions
diff --git a/ui/modal_popup/modal_popup.gd b/ui/modal_popup/modal_popup.gd
new file mode 100644
index 0000000..95fc2c3
--- /dev/null
+++ b/ui/modal_popup/modal_popup.gd
@@ -0,0 +1,76 @@
+extends Control
+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_button := get_node("dismiss") as Button
+
+
+func _init():
+ self.anchor_right = 1.0
+ self.anchor_bottom = 1.0
+ self.rect_clip_content = true
+ self.connect("hide", self, "_clear_signals")
+
+
+func _ready():
+ dismiss_button.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):
+ if visible == true:
+ return
+
+ 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)
+
+ control.anchor_left = background.anchor_left
+ control.anchor_top = background.anchor_top
+ control.anchor_right = background.anchor_right
+ control.anchor_bottom = background.anchor_bottom
+ control.margin_left = 20
+ control.margin_top = 20
+ control.margin_right = -20
+ control.margin_bottom = -20
+
+ self.show()
+ control.show()
+
+
+func close_popup():
+ if visible == false:
+ return
+
+ control.disconnect("hide", self, "close_popup")
+ control.hide()
+ self.hide()
+ remove_child(control)
+ control_parent.add_child(control)
+ control_parent = null
+
diff --git a/ui/modal_popup/modal_popup.tscn b/ui/modal_popup/modal_popup.tscn
new file mode 100644
index 0000000..3814bef
--- /dev/null
+++ b/ui/modal_popup/modal_popup.tscn
@@ -0,0 +1,40 @@
+[gd_scene load_steps=3 format=2]
+
+[ext_resource path="res://ui/modal_popup/modal_popup.gd" type="Script" id=1]
+[ext_resource path="res://fonts/font_icons.tres" type="DynamicFont" id=2]
+
+[node name="popup" type="ColorRect"]
+visible = false
+anchor_right = 1.0
+anchor_bottom = 1.0
+color = Color( 0, 0, 0, 0.870588 )
+script = ExtResource( 1 )
+
+[node name="background" type="Panel" parent="."]
+anchor_left = 0.05
+anchor_top = 0.1
+anchor_right = 0.95
+anchor_bottom = 0.975
+
+[node name="title" type="Label" parent="."]
+anchor_left = 0.124
+anchor_top = 0.025
+anchor_right = 0.95
+anchor_bottom = 0.1
+margin_left = 0.0799866
+margin_right = -80.0
+margin_bottom = -20.0
+align = 1
+valign = 1
+autowrap = true
+
+[node name="dismiss" type="Button" parent="."]
+anchor_left = 0.05
+anchor_top = 0.025
+anchor_right = 0.124
+anchor_bottom = 0.1
+margin_right = 0.0799866
+margin_bottom = -20.0
+custom_fonts/font = ExtResource( 2 )
+text = ""
+flat = true