58 lines
1.9 KiB
GDScript
58 lines
1.9 KiB
GDScript
@tool
|
|
extends Control
|
|
|
|
var property_name : String
|
|
signal value_changed
|
|
|
|
var options : Array = []
|
|
var disabled = false:
|
|
get:
|
|
return disabled
|
|
set(_disabled):
|
|
disabled = _disabled
|
|
$MenuButton.disabled = disabled
|
|
$MenuButton.focus_mode = FOCUS_NONE
|
|
|
|
func _ready():
|
|
$MenuButton.add_theme_stylebox_override("normal", get_theme_stylebox("normal", "LineEdit"))
|
|
$MenuButton.add_theme_stylebox_override("hover", get_theme_stylebox("normal", "LineEdit"))
|
|
|
|
$MenuButton.add_theme_stylebox_override("focus", get_theme_stylebox("focus", "LineEdit"))
|
|
$MenuButton.add_theme_stylebox_override("disabled", get_theme_stylebox("normal", "LineEdit"))
|
|
$MenuButton.add_theme_color_override("font_disabled_color", get_theme_color("font_color", "MenuButton"))
|
|
$MenuButton.about_to_popup.connect(insert_options)
|
|
$MenuButton.get_popup().index_pressed.connect(index_pressed)
|
|
set_left_text('')
|
|
set_right_text('')
|
|
|
|
func set_right_text(value:String):
|
|
$RightText.text = str(value)
|
|
$RightText.visible = !value.is_empty()
|
|
|
|
func set_left_text(value:String):
|
|
$LeftText.text = str(value)
|
|
$LeftText.visible = !value.is_empty()
|
|
|
|
func set_value(value):
|
|
for option in options:
|
|
if option['value'] == value:
|
|
$MenuButton.text = option['label']
|
|
$MenuButton.icon = option.get('icon', load("res://addons/dialogic/Editor/Images/Dropdown/default.svg"))
|
|
|
|
func get_value():
|
|
return $MenuButton.text
|
|
|
|
func insert_options():
|
|
$MenuButton.get_popup().clear()
|
|
|
|
var idx = 0
|
|
for option in options:
|
|
$MenuButton.get_popup().add_icon_item(option.get('icon',load("res://addons/dialogic/Editor/Images/Dropdown/default.svg")), option['label'])
|
|
$MenuButton.get_popup().set_item_metadata(idx, option['value'])
|
|
idx += 1
|
|
|
|
func index_pressed(idx):
|
|
$MenuButton.text = $MenuButton.get_popup().get_item_text(idx)
|
|
$MenuButton.icon = $MenuButton.get_popup().get_item_icon(idx)
|
|
|
|
emit_signal("value_changed", property_name, $MenuButton.get_popup().get_item_metadata(idx))
|