aboutsummaryrefslogtreecommitdiff
path: root/option_set/option_set.gd
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()