@tool extends HBoxContainer enum Type { Line, Text, Calendar, Time } @export var title : String: set(value): title = value set_title(title) @export var type := Type.Line: set(value): type = value set_type(type) @onready var _label = $FieldLabelControl/FieldLabel @onready var _line = $Line @onready var _calendar = $Calendar @onready var _time = $Time @onready var _text = $Text var _type func _ready(): set_title(title) set_type(type) func set_title(new_title): if _label == null: await ready _label.text = new_title func get_value(): match _type: Type.Line: return _line.text Type.Text: return _text.text Type.Calendar: return "" Type.Time: return { "hours": _time.get_hours(), "minutes": _time.get_minutes() } func set_value(value): _line.text = value func set_type(type): if _line == null: await ready _line.visible = false _text.visible = false _calendar.visible = false _time.visible = false _type = type match type: Type.Line: _line.visible = true Type.Text: _text.visible = true Type.Calendar: _calendar.visible = true Type.Time: _time.visible = true func clean(): match _type: Type.Line: _line.text = "" Type.Text: _text.text = "" Type.Calendar: pass Type.Time: _time.clean()