79 lines
1.8 KiB
GDScript
79 lines
1.8 KiB
GDScript
@tool
|
|
extends Control
|
|
|
|
@export var icons_renderers: Array[IconsFontsRender]
|
|
|
|
@export var tooltip := "click on icon to copy its name to clipboard"
|
|
|
|
@export
|
|
@onready var icons_renderers_tabs: TabContainer
|
|
|
|
@export
|
|
@onready var notify_label: Label
|
|
|
|
@export
|
|
@onready var search_line_edit: LineEdit
|
|
|
|
@export
|
|
@onready var size_slider: HSlider
|
|
|
|
@export
|
|
@onready var size_label: Label
|
|
|
|
@export
|
|
@onready var scroll_container: ScrollContainer
|
|
|
|
@export
|
|
@onready var fonts_dropdown: OptionButton
|
|
|
|
var icons_renderer: IconsFontsRender
|
|
|
|
func _ready():
|
|
notify_label.hide()
|
|
search_line_edit.text_changed.connect(update_table)
|
|
size_slider.value_changed.connect(update_icons_size)
|
|
fonts_dropdown.item_selected.connect(on_font_changed)
|
|
size_slider.value = IconsFonts.preview_size
|
|
|
|
for renderer: IconsFontsRender in icons_renderers:
|
|
renderer.tooltip_text = tooltip
|
|
|
|
func setup():
|
|
for renderer: IconsFontsRender in icons_renderers:
|
|
if !renderer.is_node_ready(): await ready
|
|
renderer.setup()
|
|
renderer.meta_clicked.connect(_on_meta)
|
|
icons_renderer = icons_renderers[0]
|
|
|
|
func update_icons_size(value: int):
|
|
size_label.text = str(value)
|
|
if icons_renderer:
|
|
icons_renderer.set_icons_size(value)
|
|
update_table(search_line_edit.text)
|
|
IconsFonts.preview_size = value
|
|
|
|
func on_font_changed(font_id: int):
|
|
icons_renderers_tabs.current_tab = font_id
|
|
icons_renderer = icons_renderers[font_id]
|
|
|
|
func update_table(filter := ""):
|
|
if not icons_renderer: return
|
|
icons_renderer.update_table(filter)
|
|
|
|
func _on_meta(link: String):
|
|
DisplayServer.clipboard_set(link)
|
|
notify_label.text = "Copied to Clipboard: " + link
|
|
notify_label.show()
|
|
|
|
var t := get_tree().create_tween()
|
|
t.tween_property(
|
|
notify_label, "modulate",
|
|
Color.GREEN, 1
|
|
)
|
|
t.chain().tween_property(
|
|
notify_label, "modulate",
|
|
Color.TRANSPARENT, 1
|
|
)
|
|
await t.finished
|
|
notify_label.hide()
|