mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-05 12:45:54 +00:00
53 lines
1.7 KiB
GDScript
53 lines
1.7 KiB
GDScript
@tool
|
|
extends HBoxContainer
|
|
class_name PalettePluginFavoriteButton
|
|
@onready var button:Button = %Button
|
|
@onready var delete_button = %DeleteButton
|
|
@onready var color_picker_button = %ColorPickerButton
|
|
const PALETTE_NAME_MAX_LEN = 17
|
|
|
|
var directory:String:
|
|
set(value):
|
|
directory = value
|
|
button.text = _create_button_label(directory)
|
|
|
|
signal favorite_selected(dir)
|
|
signal favorite_color_changed(dir, color)
|
|
signal favorite_removed(dir)
|
|
|
|
func _create_button_label(directory) -> String:
|
|
var dir_name:String = directory.split('/')[-1]
|
|
# remove -,_ so that the names look neater
|
|
var btn_name:String = dir_name.replace('-', ' ').replace('_', ' ')
|
|
button.tooltip_text = "Open palette for " + btn_name
|
|
|
|
# If button names are too long, the behavior of the controls will wrap in
|
|
# a weird way when the panel width is resized in the editor.
|
|
# There's probably a better way to deal with this, but this works for now.
|
|
if len(btn_name) > PALETTE_NAME_MAX_LEN:
|
|
btn_name = btn_name.left(PALETTE_NAME_MAX_LEN)
|
|
return btn_name
|
|
|
|
|
|
func _on_favorite_button_pressed():
|
|
favorite_selected.emit(directory)
|
|
|
|
func _on_delete_button_pressed():
|
|
favorite_removed.emit(directory)
|
|
queue_free()
|
|
|
|
func set_settings_visibility(is_visible:bool):
|
|
delete_button.visible = is_visible
|
|
color_picker_button.visible = is_visible
|
|
|
|
func _on_color_picker_button_color_changed(color):
|
|
set_color(color)
|
|
favorite_color_changed.emit(directory, color)
|
|
#delete_button.add_theme_stylebox_override('normal', stylebox)
|
|
|
|
func set_color(color:Color):
|
|
var stylebox:StyleBoxFlat = StyleBoxFlat.new()
|
|
stylebox.bg_color = color
|
|
stylebox.set_content_margin_all(7)
|
|
button.add_theme_stylebox_override('normal', stylebox)
|
|
button.add_theme_stylebox_override('hover', stylebox)
|