aboutsummaryrefslogtreecommitdiff
path: root/option_set/option_set.gd
blob: 040566a09a67bac23dcf0bc0ad973661fe8a7a94 (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
45
46
47
48
49
50
51
52
53
54
55
extends Control
class_name OptionSet

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.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()
	var main = get_node("/root/main")
	main.remove_child(options)
	options.add_items(options_array)
	if options_array[selected_idx] == input.text:
		options.select(selected_idx)
	else:
		options.unselect()
	options.connect("item_selected", self, "option_selected", [], CONNECT_ONESHOT)
	popup.popup_control(options)
#	popup.connect("item_selected", self, "option_selected", [], CONNECT_ONESHOT)
#	popup.clear_items()
#	popup_opt.visible = true
#	get_node("/root/main/popup/blur")
#	popup.add_items(options)


func option_selected(index: int, text: String):
	selected_idx = index
	input.text = text
	input.caret_position = input.max_length
	button.release_focus()
	options.visible = false
	var main = get_node("/root/main")
	main.add_child(options)