diff options
| author | dam <dam@gudinoff> | 2022-04-10 08:32:49 +0000 |
|---|---|---|
| committer | dam <dam@gudinoff> | 2022-04-10 08:32:49 +0000 |
| commit | 2d7da6bbc23fb917dfe931eaeb5566da0a102ac3 (patch) | |
| tree | ae4d7541267dd1a7a5633ff79ac7de1e9055437b /ui/option_set/option_set.gd | |
| parent | 75791aecbff0d8adc1011f45a69877cabff616e0 (diff) | |
| download | surgery-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.gd | 44 |
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() + + |
