You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
2.3 KiB
82 lines
2.3 KiB
7 months ago
|
@tool
|
||
|
extends Container
|
||
|
|
||
|
signal clicked
|
||
|
signal middle_clicked
|
||
|
signal double_clicked
|
||
|
signal focused
|
||
|
|
||
|
var base_size = 1
|
||
|
|
||
|
|
||
|
func _ready() -> void:
|
||
|
if get_parent() is SubViewport:
|
||
|
return
|
||
|
|
||
|
%Name.add_theme_font_override("font", get_theme_font("bold", "EditorFonts"))
|
||
|
custom_minimum_size = base_size*Vector2(200, 150) * DialogicUtil.get_editor_scale()
|
||
|
%CurrentIcon.texture = get_theme_icon("Favorites", "EditorIcons")
|
||
|
if %Image.texture == null:
|
||
|
%Image.texture = get_theme_icon("ImportFail", "EditorIcons")
|
||
|
%Image.stretch_mode = TextureRect.STRETCH_KEEP_CENTERED
|
||
|
|
||
|
|
||
|
func load_info(info:Dictionary) -> void:
|
||
|
%Name.text = info.name
|
||
|
if info.preview_image[0] == 'custom':
|
||
|
await ready
|
||
|
%Image.texture = get_theme_icon("CreateNewSceneFrom", "EditorIcons")
|
||
|
%Image.stretch_mode = TextureRect.STRETCH_KEEP_CENTERED
|
||
|
%Panel.self_modulate = get_theme_color("property_color_z", "Editor")
|
||
|
elif info.preview_image[0].ends_with('scn'):
|
||
|
DialogicUtil.get_dialogic_plugin().get_editor_interface().get_resource_previewer().queue_resource_preview(info.preview_image[0], self, 'set_scene_preview', null)
|
||
|
elif ResourceLoader.exists(info.preview_image[0]):
|
||
|
%Image.texture = load(info.preview_image[0])
|
||
|
|
||
|
if ResourceLoader.exists(info.get('icon', '')):
|
||
|
%Icon.get_parent().show()
|
||
|
%Icon.texture = load(info.get('icon'))
|
||
|
else:
|
||
|
%Icon.get_parent().hide()
|
||
|
|
||
|
tooltip_text = info.description
|
||
|
|
||
|
|
||
|
func set_scene_preview(path:String, preview:Texture2D, thumbnail:Texture2D, userdata:Variant) -> void:
|
||
|
if preview:
|
||
|
%Image.texture = preview
|
||
|
else:
|
||
|
%Image.texture = get_theme_icon("PackedScene", "EditorIcons")
|
||
|
|
||
|
|
||
|
|
||
|
func set_current(current:bool):
|
||
|
%CurrentIcon.visible = current
|
||
|
|
||
|
|
||
|
func _on_mouse_entered():
|
||
|
%HoverBG.show()
|
||
|
|
||
|
|
||
|
func _on_mouse_exited():
|
||
|
%HoverBG.hide()
|
||
|
|
||
|
|
||
|
func _on_gui_input(event):
|
||
|
if event.is_action_pressed('ui_accept') or event.is_action_pressed("ui_select") or (
|
||
|
event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT):
|
||
|
clicked.emit()
|
||
|
if not event is InputEventMouseButton or event.double_click:
|
||
|
double_clicked.emit()
|
||
|
elif event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_MIDDLE:
|
||
|
middle_clicked.emit()
|
||
|
|
||
|
|
||
|
func _on_focus_entered():
|
||
|
$FocusFG.show()
|
||
|
focused.emit()
|
||
|
|
||
|
|
||
|
func _on_focus_exited():
|
||
|
$FocusFG.hide()
|