You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
@tool
|
|
|
|
|
extends PanelContainer
|
|
|
|
|
|
|
|
|
|
var resource_picker: EditorResourcePicker
|
|
|
|
|
|
|
|
|
|
signal save_request
|
|
|
|
|
|
|
|
|
|
func _ready() -> void:
|
|
|
|
|
if get_tree().edited_scene_root and get_tree().edited_scene_root.is_ancestor_of(self):
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
resource_picker = EditorResourcePicker.new()
|
|
|
|
|
%IconContainer.add_child(resource_picker)
|
|
|
|
|
resource_picker.base_type = "Texture2D"
|
|
|
|
|
resource_picker.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
|
|
|
|
resource_picker.resource_changed.connect(func(a): save_request.emit())
|
|
|
|
|
|
|
|
|
|
func get_data() -> Dictionary:
|
|
|
|
|
var data := {element = %LineEdit.text}
|
|
|
|
|
if resource_picker.edited_resource:
|
|
|
|
|
data.icon = resource_picker.edited_resource.resource_path
|
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
func get_data2() -> Dictionary:
|
|
|
|
|
var data := get_data()
|
|
|
|
|
if "icon" in data:
|
|
|
|
|
data.icon = load(data.icon)
|
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
func set_data(data: Dictionary):
|
|
|
|
|
%LineEdit.text = data.element
|
|
|
|
|
if "icon" in data:
|
|
|
|
|
resource_picker.edited_resource = load(data.icon)
|
|
|
|
|
|
|
|
|
|
func delete() -> void:
|
|
|
|
|
queue_free()
|
|
|
|
|
save_request.emit()
|