@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()