built more assets and started playing with foliage painting
This commit is contained in:
213
addons/dreadpon.spatial_gardener/controls/theme_adapter.gd
Normal file
213
addons/dreadpon.spatial_gardener/controls/theme_adapter.gd
Normal file
@@ -0,0 +1,213 @@
|
||||
@tool
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# An function library to search through themes, adapt them and assign to controls
|
||||
#-------------------------------------------------------------------------------
|
||||
|
||||
|
||||
static var editor_theme: Theme = null
|
||||
|
||||
|
||||
|
||||
|
||||
func _init():
|
||||
set_meta("class", "ThemeAdapter")
|
||||
|
||||
|
||||
# Create all custom node types for this plugin
|
||||
static func adapt_theme(theme:Theme) -> Theme:
|
||||
editor_theme = Theme.new()
|
||||
editor_theme.merge_with(theme)
|
||||
|
||||
var base_color = editor_theme.get_color('base_color', 'Editor')
|
||||
var dark_color_1 = editor_theme.get_color('dark_color_1', 'Editor')
|
||||
var dark_color_2 = editor_theme.get_color('dark_color_2', 'Editor')
|
||||
var dark_color_3 = editor_theme.get_color('dark_color_3', 'Editor')
|
||||
var property_font_color = editor_theme.get_color('property_color', 'Editor')
|
||||
|
||||
var constant_background_margin := editor_theme.get_stylebox("Background", "EditorStyles").content_margin_top
|
||||
var stylebox_content := editor_theme.get_stylebox("Content", "EditorStyles")
|
||||
var stylebox_background := editor_theme.get_stylebox("Background", "EditorStyles")
|
||||
var LineEdit_stylebox_normal := editor_theme.get_stylebox("normal", "LineEdit")
|
||||
var PanelContainer_stylebox_panel = editor_theme.get_stylebox('panel', 'PanelContainer')
|
||||
var Panel_stylebox_panel = editor_theme.get_stylebox('panel', 'Panel')
|
||||
var Window_stylebox_panel = editor_theme.get_stylebox('panel', 'Window')
|
||||
var Button_stylebox_focus := editor_theme.get_stylebox('focus', 'Button')
|
||||
var EditorInspectorCategory_stylebox_bg := editor_theme.get_stylebox('bg', 'EditorInspectorCategory')
|
||||
|
||||
var EditorFonts_bold = editor_theme.get_font('bold', 'EditorFonts')
|
||||
var EditorFonts_bold_size = editor_theme.get_font_size('bold_size', 'EditorFonts')
|
||||
var Tree_font_color = editor_theme.get_color('font_color', 'Tree')
|
||||
var Tree_v_separation = editor_theme.get_constant('v_separation', 'Tree')
|
||||
var Tree_panel = editor_theme.get_stylebox('panel', 'Tree')
|
||||
var Editor_font_color = editor_theme.get_color('font_color', 'Editor')
|
||||
var Editor_accent_color = editor_theme.get_color('accent_color', 'Editor')
|
||||
var Editor_dark_color_1 = editor_theme.get_color("dark_color_1", 'Editor')
|
||||
|
||||
# NoMargin -> MarginContainer
|
||||
editor_theme.set_constant("offset_top", "NoMargin", 0)
|
||||
editor_theme.set_constant("offset_left", "NoMargin", 0)
|
||||
editor_theme.set_constant("offset_bottom", "NoMargin", 0)
|
||||
editor_theme.set_constant("offset_right", "NoMargin", 0)
|
||||
editor_theme.set_type_variation("NoMargin", "MarginContainer")
|
||||
|
||||
# ExternalMargin -> MarginContainer
|
||||
editor_theme.set_constant("offset_top", "ExternalMargin", constant_background_margin)
|
||||
editor_theme.set_constant("offset_left", "ExternalMargin", constant_background_margin)
|
||||
editor_theme.set_constant("offset_bottom", "ExternalMargin", constant_background_margin)
|
||||
editor_theme.set_constant("offset_right", "ExternalMargin", constant_background_margin)
|
||||
editor_theme.set_type_variation("ExternalMargin", "MarginContainer")
|
||||
|
||||
# IF_LineEdit -> LineEdit
|
||||
var IF_LineEdit_stylebox := LineEdit_stylebox_normal.duplicate(true)
|
||||
IF_LineEdit_stylebox.bg_color = dark_color_2
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "normal", "IF_LineEdit", IF_LineEdit_stylebox)
|
||||
editor_theme.set_type_variation("IF_LineEdit", "LineEdit")
|
||||
|
||||
# MultiRangeValuePanel -> PanelContainer
|
||||
var MultiRangeValuePanel_stylebox_panel := PanelContainer_stylebox_panel.duplicate(true)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "panel", "MultiRangeValuePanel", MultiRangeValuePanel_stylebox_panel)
|
||||
editor_theme.set_type_variation("MultiRangeValuePanel", "PanelContainer")
|
||||
|
||||
# MultiRangeValue -> LineEdit
|
||||
var MultiRangeValue_stylebox := IF_LineEdit_stylebox.duplicate(true)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "normal", "MultiRangeValue", MultiRangeValue_stylebox)
|
||||
editor_theme.set_type_variation("MultiRangeValue", "LineEdit")
|
||||
|
||||
# MultiRangePropLabel -> Label
|
||||
var MultiRangePropLabel_stylebox_panel := PanelContainer_stylebox_panel.duplicate(true)
|
||||
# var MultiRangePropLabel_stylebox_panel := LineEdit_stylebox_normal.duplicate(true)
|
||||
MultiRangePropLabel_stylebox_panel.bg_color = dark_color_3
|
||||
MultiRangePropLabel_stylebox_panel.draw_center = true
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "normal", "MultiRangePropLabel", MultiRangePropLabel_stylebox_panel)
|
||||
editor_theme.set_type_variation("MultiRangePropLabel", "Label")
|
||||
|
||||
# MultiRangeDashLabel -> Label
|
||||
var MultiRangeDashLabel_stylebox_panel := MultiRangePropLabel_stylebox_panel.duplicate(true)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "normal", "MultiRangeDashLabel", MultiRangeDashLabel_stylebox_panel)
|
||||
editor_theme.set_type_variation("MultiRangeDashLabel", "Label")
|
||||
|
||||
# PlantTitleLineEdit -> LineEdit
|
||||
var PlantTitleLineEdit_stylebox := StyleBoxFlat.new()
|
||||
PlantTitleLineEdit_stylebox.bg_color = dark_color_3
|
||||
PlantTitleLineEdit_stylebox.content_margin_left = 1
|
||||
PlantTitleLineEdit_stylebox.content_margin_right = 1
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "normal", "PlantTitleLineEdit", PlantTitleLineEdit_stylebox)
|
||||
editor_theme.set_type_variation("PlantTitleLineEdit", "LineEdit")
|
||||
|
||||
# InspectorPanelContainer -> PanelContainer
|
||||
var InspectorPanelContainer_stylebox := Tree_panel.duplicate(true)
|
||||
InspectorPanelContainer_stylebox.draw_center = true
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "panel", "InspectorPanelContainer", InspectorPanelContainer_stylebox)
|
||||
editor_theme.set_type_variation("InspectorPanelContainer", "PanelContainer")
|
||||
|
||||
# InspectorWindowDialog -> Window
|
||||
var InspectorWindowDialog_stylebox := Window_stylebox_panel.duplicate(true)
|
||||
InspectorWindowDialog_stylebox.draw_center = true
|
||||
InspectorWindowDialog_stylebox.bg_color = dark_color_1
|
||||
InspectorWindowDialog_stylebox.border_color = dark_color_3
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "panel", "InspectorWindowDialog", InspectorWindowDialog_stylebox)
|
||||
editor_theme.set_type_variation("InspectorWindowDialog", "Window")
|
||||
|
||||
# InspectorInnerPanelContainer -> PanelContainer
|
||||
var InspectorInnerPanelContainer_stylebox := PanelContainer_stylebox_panel.duplicate(true)
|
||||
InspectorInnerPanelContainer_stylebox.draw_center = false
|
||||
InspectorInnerPanelContainer_stylebox.set_border_width_all(1)
|
||||
InspectorInnerPanelContainer_stylebox.border_color = dark_color_3
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "panel", "InspectorInnerPanelContainer", InspectorInnerPanelContainer_stylebox)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_FONT, "panel", "InspectorInnerPanelContainer", InspectorInnerPanelContainer_stylebox)
|
||||
editor_theme.set_type_variation("InspectorInnerPanelContainer", "PanelContainer")
|
||||
|
||||
# PropertyCategory -> Label
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "normal", "PropertyCategory", EditorInspectorCategory_stylebox_bg)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_FONT, "font", "PropertyCategory", EditorFonts_bold)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_FONT_SIZE, "font_size", "PropertyCategory", EditorFonts_bold_size)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_COLOR, "font_color", "PropertyCategory", Tree_font_color)
|
||||
editor_theme.set_type_variation("PropertyCategory", "PanelContainer")
|
||||
|
||||
# PropertySection -> Button
|
||||
var PropertySection_stylebox_bg_color = EditorInspectorCategory_stylebox_bg.bg_color
|
||||
PropertySection_stylebox_bg_color.a *= 0.4
|
||||
var PropertySection_stylebox_normal := StyleBoxFlat.new()
|
||||
PropertySection_stylebox_normal.bg_color = PropertySection_stylebox_bg_color
|
||||
PropertySection_stylebox_normal.set_content_margin_all(Tree_v_separation * 0.5)
|
||||
var PropertySection_stylebox_hover := PropertySection_stylebox_normal.duplicate(true)
|
||||
PropertySection_stylebox_hover.bg_color =PropertySection_stylebox_bg_color.lightened(0.2)
|
||||
var PropertySection_stylebox_pressed := PropertySection_stylebox_normal.duplicate(true)
|
||||
PropertySection_stylebox_pressed.bg_color = PropertySection_stylebox_bg_color.lightened(-0.05)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "normal", "PropertySection", PropertySection_stylebox_normal)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "hover", "PropertySection", PropertySection_stylebox_hover)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "pressed", "PropertySection", PropertySection_stylebox_pressed)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "focus", "PropertySection", StyleBoxEmpty.new())
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_FONT, "font", "PropertySection", EditorFonts_bold)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_FONT_SIZE, "font_size", "PropertySection", EditorFonts_bold_size)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_COLOR, "font_color", "PropertySection", Editor_font_color)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_COLOR, "font_pressed_color", "PropertySection", Editor_font_color)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_COLOR, "icon_color", "PropertySection", Editor_font_color)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_COLOR, "icon_pressed_color", "PropertySection", Editor_font_color)
|
||||
editor_theme.set_type_variation("PropertySection", "Button")
|
||||
|
||||
# PropertySubsection -> PanelContainer
|
||||
var PropertySubsection_stylebox := PanelContainer_stylebox_panel.duplicate(true)
|
||||
PropertySubsection_stylebox.draw_center = true
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "panel", "PropertySubsection", PropertySubsection_stylebox)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "normal", "PropertySubsection", PropertySubsection_stylebox)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "hover", "PropertySubsection", PropertySubsection_stylebox)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "pressed", "PropertySubsection", PropertySubsection_stylebox)
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "focus", "PropertySubsection", PropertySubsection_stylebox)
|
||||
editor_theme.set_type_variation("PropertySubsection", "PanelContainer")
|
||||
|
||||
# ActionThumbnail_SelectionPanel -> Panel
|
||||
var ActionThumbnail_SelectionPanel_stylebox := Button_stylebox_focus.duplicate(true)
|
||||
ActionThumbnail_SelectionPanel_stylebox.bg_color = Color8(255, 255, 255, 51)
|
||||
ActionThumbnail_SelectionPanel_stylebox.border_color = Color8(255, 255, 255, 255)
|
||||
ActionThumbnail_SelectionPanel_stylebox.draw_center = true
|
||||
editor_theme.set_theme_item(Theme.DATA_TYPE_STYLEBOX, "panel", "ActionThumbnail_SelectionPanel", ActionThumbnail_SelectionPanel_stylebox)
|
||||
editor_theme.set_type_variation("ActionThumbnail_SelectionPanel", "PanelContainer")
|
||||
|
||||
# InspectorButton -> Button
|
||||
# InspectorCheckBox -> CheckBox
|
||||
# InspectorOptionButton -> OptionButton
|
||||
# InspectorMenuButton -> MenuButton
|
||||
for theme_type in ["Button", "CheckBox", "OptionButton", "MenuButton"]:
|
||||
for data_type in range(0, editor_theme.DATA_TYPE_MAX):
|
||||
for theme_item in editor_theme.get_theme_item_list(data_type, theme_type):
|
||||
var item = editor_theme.get_theme_item(data_type, theme_item, theme_type)
|
||||
if is_instance_of(item, Resource):
|
||||
item = item.duplicate(true)
|
||||
if data_type == editor_theme.DATA_TYPE_STYLEBOX:
|
||||
match theme_item:
|
||||
"normal", "pressed", "focus":
|
||||
item.bg_color = dark_color_2
|
||||
item.draw_center = true
|
||||
"hover":
|
||||
item.bg_color = dark_color_2 * 1.2
|
||||
item.draw_center = true
|
||||
"disabled":
|
||||
item.bg_color = dark_color_2 * 1.5
|
||||
item.draw_center = true
|
||||
editor_theme.set_theme_item(data_type, theme_item, "Inspector" + theme_type, item)
|
||||
editor_theme.set_type_variation("Inspector" + theme_type, theme_type)
|
||||
|
||||
return editor_theme
|
||||
|
||||
|
||||
# Get styleboxes associated with nested objects
|
||||
static func lookup_sub_inspector_styleboxes(search_node:Node, sub_index:int):
|
||||
var styleboxes := {}
|
||||
|
||||
var sub_inspector_bg = "sub_inspector_bg%d" % [sub_index]
|
||||
var sub_inspector_property_bg = "sub_inspector_property_bg%d" % [sub_index]
|
||||
var sub_inspector_property_bg_selected = "sub_inspector_property_bg_selected%d" % [sub_index]
|
||||
|
||||
var stylebox_names := editor_theme.get_stylebox_list("Editor")
|
||||
for stylebox_name in stylebox_names:
|
||||
if stylebox_name == sub_inspector_bg:
|
||||
styleboxes.sub_inspector_bg = editor_theme.get_stylebox(sub_inspector_bg, "Editor")
|
||||
elif stylebox_name == sub_inspector_property_bg:
|
||||
styleboxes.sub_inspector_property_bg = editor_theme.get_stylebox(sub_inspector_property_bg, "Editor")
|
||||
elif stylebox_name == sub_inspector_property_bg_selected:
|
||||
styleboxes.sub_inspector_property_bg_selected = editor_theme.get_stylebox(sub_inspector_property_bg_selected, "Editor")
|
||||
return styleboxes
|
||||
|
||||
Reference in New Issue
Block a user