]> Untitled Git - wolf-seeking-sheep.git/blob - addons/dialogic/Editor/Common/BrowserItem.gd
Squashed commit of the following:
[wolf-seeking-sheep.git] / addons / dialogic / Editor / Common / BrowserItem.gd
1 @tool
2 extends Container
3
4 signal clicked
5 signal middle_clicked
6 signal double_clicked
7 signal focused
8
9 var base_size := 1
10
11
12 func _ready() -> void:
13         if get_parent() is SubViewport:
14                 return
15
16         %Name.add_theme_font_override("font", get_theme_font("bold", "EditorFonts"))
17         custom_minimum_size = base_size * Vector2(200, 150) * DialogicUtil.get_editor_scale()
18         %CurrentIcon.texture = get_theme_icon("Favorites", "EditorIcons")
19         if %Image.texture == null:
20                 %Image.texture = get_theme_icon("ImportFail", "EditorIcons")
21                 %Image.stretch_mode = TextureRect.STRETCH_KEEP_CENTERED
22
23
24 func load_info(info:Dictionary) -> void:
25         %Name.text = info.name
26         if not info.has("preview_image"):
27                 pass
28         elif info.preview_image[0] == 'custom':
29                 await ready
30                 %Image.texture = get_theme_icon("CreateNewSceneFrom", "EditorIcons")
31                 %Image.stretch_mode = TextureRect.STRETCH_KEEP_CENTERED
32                 %Panel.self_modulate = get_theme_color("property_color_z", "Editor")
33         elif info.preview_image[0].ends_with('scn'):
34                 DialogicUtil.get_dialogic_plugin().get_editor_interface().get_resource_previewer().queue_resource_preview(info.preview_image[0], self, 'set_scene_preview', null)
35         elif ResourceLoader.exists(info.preview_image[0]):
36                 %Image.texture = load(info.preview_image[0])
37         elif info.preview_image[0].is_valid_html_color():
38                 %Image.texture = null
39                 %Panel.self_modulate = Color(info.preview_image[0])
40
41         if ResourceLoader.exists(info.get('icon', '')):
42                 %Icon.get_parent().show()
43                 %Icon.texture = load(info.get('icon'))
44         else:
45                 %Icon.get_parent().hide()
46
47         tooltip_text = info.description
48
49
50 func set_scene_preview(path:String, preview:Texture2D, thumbnail:Texture2D, userdata:Variant) -> void:
51         if preview:
52                 %Image.texture = preview
53         else:
54                 %Image.texture = get_theme_icon("PackedScene", "EditorIcons")
55
56
57
58 func set_current(current:bool):
59         %CurrentIcon.visible = current
60
61
62 func _on_mouse_entered() -> void:
63         %HoverBG.show()
64
65
66 func _on_mouse_exited() -> void:
67         %HoverBG.hide()
68
69
70 func _on_gui_input(event):
71         if event.is_action_pressed('ui_accept') or event.is_action_pressed("ui_select") or (
72                                 event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT):
73                 clicked.emit()
74                 if not event is InputEventMouseButton or event.double_click:
75                         double_clicked.emit()
76         elif event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_MIDDLE:
77                 middle_clicked.emit()
78
79
80 func _on_focus_entered() -> void:
81         $FocusFG.show()
82         focused.emit()
83
84
85 func _on_focus_exited() -> void:
86         $FocusFG.hide()