blob: 62d10d0b1dd34b99e14e7fe94b6d003b8c5e466e (
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
|
extends Control
class_name OptionSet
var options: Array
var text: String setget set_text, get_text
func set_text(var value: String):
input.text = value
func get_text() -> String:
return input.text
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_list") as PopupList
func _ready():
assert(popup != null, "OptionSet failed to get 'popup' node.")
input.connect("focus_entered", input, "set", ["caret_position", input.max_length])
input.connect("focus_exited", input, "deselect")
func show_options(options_array: Array):
options = options_array
popup.connect("item_selected", self, "option_selected", [], CONNECT_ONESHOT)
popup.popup_options(options)
func option_selected(index: int):
if index >= 0 && index < options.size():
input.text = options[index]
input.caret_position = input.max_length
button.release_focus()
|