blob: bb37736ef879a48c0c05afba0a5869dbe38910fa (
plain)
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
|
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("options") as Button # @DAM Maybe rename this. Also requires renaming on stage.
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()
|