aboutsummaryrefslogtreecommitdiff
path: root/ui/option_set/option_set.gd
diff options
context:
space:
mode:
authordam <dam@gudinoff>2022-04-10 08:32:49 +0000
committerdam <dam@gudinoff>2022-04-10 08:32:49 +0000
commit2d7da6bbc23fb917dfe931eaeb5566da0a102ac3 (patch)
treeae4d7541267dd1a7a5633ff79ac7de1e9055437b /ui/option_set/option_set.gd
parent75791aecbff0d8adc1011f45a69877cabff616e0 (diff)
downloadsurgery-log-2d7da6bbc23fb917dfe931eaeb5566da0a102ac3.tar.zst
surgery-log-2d7da6bbc23fb917dfe931eaeb5566da0a102ac3.zip
Code cleanup.
Diffstat (limited to 'ui/option_set/option_set.gd')
-rw-r--r--ui/option_set/option_set.gd44
1 files changed, 44 insertions, 0 deletions
diff --git a/ui/option_set/option_set.gd b/ui/option_set/option_set.gd
new file mode 100644
index 0000000..25ca0ff
--- /dev/null
+++ b/ui/option_set/option_set.gd
@@ -0,0 +1,44 @@
+extends Control
+class_name OptionSet
+
+export var placeholder: String
+
+var text: String setget set_text, get_text
+
+func set_text(var value: String):
+ input.text = value
+
+func get_text() -> String:
+ return input.text
+
+var selected_idx: int
+
+onready var input := get_node("input") as LineEdit
+onready var button := get_node("button") as Button
+onready var popup := get_node("/root/main/popup") as ModalPopup
+onready var options := get_node("/root/main/option_set_list") as OptionSetList
+
+
+func _ready():
+ assert(popup != null, "OptionSet failed to get 'popup' node.")
+ input.placeholder_text = placeholder
+ input.connect("focus_entered", input, "set", ["caret_position", input.max_length])
+ input.connect("focus_exited", input, "deselect")
+
+
+func show_options(options_array: Array):
+ options.clear_items()
+ options.add_items(options_array)
+ options.select(options_array.find(input.text))
+ options.connect("selection_changed", self, "popup_result")
+ popup.open_popup(input.placeholder_text, options)
+
+
+func popup_result(index: int, text: String):
+ if index != -1:
+ selected_idx = index
+ input.text = text
+ input.caret_position = input.max_length
+ popup.close_popup()
+
+