mirror of
https://gitlab.com/MaddoScientisto/cirnogodot.git
synced 2026-06-10 14:35:54 +00:00
76 lines
2.5 KiB
GDScript
76 lines
2.5 KiB
GDScript
@tool
|
|
extends Control
|
|
class_name PalettePluginSubPalette
|
|
|
|
@export var arrow_closed:Texture2D
|
|
@export var arrow_open:Texture2D
|
|
|
|
@onready var scene_drop_grid_container = %SceneDropGridContainer
|
|
@onready var title_minimize_button = %TitleMinimizeButton
|
|
@onready var sub_palette_container = %SubPaletteContainer
|
|
@onready var content_container = %ContentContainer
|
|
@onready var panel = %Panel
|
|
|
|
## multiply the title color by this much for the background panel
|
|
const PANEL_COLOR_AMT = 0.8
|
|
var directory:String
|
|
|
|
# only set to false by the top level palette
|
|
var expandable:bool = true:
|
|
set(value):
|
|
expandable = value
|
|
if not expandable:
|
|
title_minimize_button.icon = null
|
|
title_minimize_button.disabled = true
|
|
|
|
func set_title(title:String):
|
|
title_minimize_button.text = title.replace('-', ' ').replace('_', ' ')
|
|
|
|
func add_item(item:PalettePluginSceneDrop):
|
|
scene_drop_grid_container.add_child(item)
|
|
|
|
func instantiate_previews(value:bool):
|
|
for node in scene_drop_grid_container.get_children():
|
|
if node is PalettePluginSceneDrop:
|
|
node.instantiate_scene_preview = value
|
|
for node in sub_palette_container.get_children():
|
|
if node is PalettePluginSubPalette:
|
|
node.instantiate_previews(value)
|
|
|
|
# only used by top level palette
|
|
#func clear_items():
|
|
#for node in scene_drop_grid_container.get_children():
|
|
#node.queue_free()
|
|
#for node in sub_palette_container.get_children():
|
|
#node.queue_free()
|
|
|
|
# only used by top level palette
|
|
func set_color(color:Color):
|
|
var stylebox:StyleBoxFlat = StyleBoxFlat.new()
|
|
stylebox.bg_color = color
|
|
stylebox.set_content_margin_all(7)
|
|
title_minimize_button.add_theme_stylebox_override('normal', stylebox)
|
|
title_minimize_button.add_theme_stylebox_override('disabled', stylebox)
|
|
|
|
var panel_stylebox:StyleBoxFlat = panel.get_theme_stylebox('panel')
|
|
var new_stylebox = panel_stylebox.duplicate()
|
|
new_stylebox.bg_color = _get_multiplied_color(color, PANEL_COLOR_AMT)
|
|
panel.add_theme_stylebox_override('panel', new_stylebox)
|
|
|
|
func _get_multiplied_color(color:Color, amt:float) -> Color:
|
|
return Color(color.r * amt, color.g * amt, color.b * amt)
|
|
|
|
func add_subpalette(palette:PalettePluginSubPalette):
|
|
sub_palette_container.add_child(palette)
|
|
|
|
func _on_title_minimize_button_toggled(toggled_on):
|
|
if expandable:
|
|
if toggled_on:
|
|
title_minimize_button.icon = arrow_closed
|
|
content_container.hide()
|
|
else:
|
|
title_minimize_button.icon = arrow_open
|
|
content_container.show()
|
|
|
|
func _on_showin_file_system_button_pressed():
|
|
EditorInterface.get_file_system_dock().navigate_to_path(directory)
|