Theme

Inherits: Resource < RefCounted < Object

Theme resource for styling/skinning Controls and Windows.

Description

A theme resource is used for styling/skinning Control and Window nodes. While individual controls can be styled using their local theme overrides (see Control.add_theme_color_override), theme resources allow you to store and apply the same settings between all controls sharing the same type (e.g. style all Buttons the same). One theme resource can be used for the entire project, but you can also set a separate theme resource to a branch of control nodes. A theme resources assigned to a control node applies to the control itself, as well as all of its direct and indirect children (as long as a chain of controls is uninterrupted).

Use ProjectSettings.gui/theme/custom to set up a project-scope theme that will be available to every control in your project.

Use Control.theme of any control node to set up a theme that will be available to that control and all of its direct and indirect children.

Tutorials

Properties

float

default_base_scale

0.0

Font

default_font

int

default_font_size

-1

Methods

void

add_type ( StringName theme_type )

void

clear ( )

void

clear_color ( StringName name, StringName theme_type )

void

clear_constant ( StringName name, StringName theme_type )

void

clear_font ( StringName name, StringName theme_type )

void

clear_font_size ( StringName name, StringName theme_type )

void

clear_icon ( StringName name, StringName theme_type )

void

clear_stylebox ( StringName name, StringName theme_type )

void

clear_theme_item ( DataType data_type, StringName name, StringName theme_type )

void

clear_type_variation ( StringName theme_type )

Color

get_color ( StringName name, StringName theme_type ) const

PackedStringArray

get_color_list ( String theme_type ) const

PackedStringArray

get_color_type_list ( ) const

int

get_constant ( StringName name, StringName theme_type ) const

PackedStringArray

get_constant_list ( String theme_type ) const

PackedStringArray

get_constant_type_list ( ) const

Font

get_font ( StringName name, StringName theme_type ) const

PackedStringArray

get_font_list ( String theme_type ) const

int

get_font_size ( StringName name, StringName theme_type ) const

PackedStringArray

get_font_size_list ( String theme_type ) const

PackedStringArray

get_font_size_type_list ( ) const

PackedStringArray

get_font_type_list ( ) const

Texture2D

get_icon ( StringName name, StringName theme_type ) const

PackedStringArray

get_icon_list ( String theme_type ) const

PackedStringArray

get_icon_type_list ( ) const

StyleBox

get_stylebox ( StringName name, StringName theme_type ) const

PackedStringArray

get_stylebox_list ( String theme_type ) const

PackedStringArray

get_stylebox_type_list ( ) const

Variant

get_theme_item ( DataType data_type, StringName name, StringName theme_type ) const

PackedStringArray

get_theme_item_list ( DataType data_type, String theme_type ) const

PackedStringArray

get_theme_item_type_list ( DataType data_type ) const

PackedStringArray

get_type_list ( ) const

StringName

get_type_variation_base ( StringName theme_type ) const

PackedStringArray

get_type_variation_list ( StringName base_type ) const

bool

has_color ( StringName name, StringName theme_type ) const

bool

has_constant ( StringName name, StringName theme_type ) const

bool

has_default_base_scale ( ) const

bool

has_default_font ( ) const

bool

has_default_font_size ( ) const

bool

has_font ( StringName name, StringName theme_type ) const

bool

has_font_size ( StringName name, StringName theme_type ) const

bool

has_icon ( StringName name, StringName theme_type ) const

bool

has_stylebox ( StringName name, StringName theme_type ) const

bool

has_theme_item ( DataType data_type, StringName name, StringName theme_type ) const

bool

is_type_variation ( StringName theme_type, StringName base_type ) const

void

merge_with ( Theme other )

void

remove_type ( StringName theme_type )

void

rename_color ( StringName old_name, StringName name, StringName theme_type )

void

rename_constant ( StringName old_name, StringName name, StringName theme_type )

void

rename_font ( StringName old_name, StringName name, StringName theme_type )

void

rename_font_size ( StringName old_name, StringName name, StringName theme_type )

void

rename_icon ( StringName old_name, StringName name, StringName theme_type )

void

rename_stylebox ( StringName old_name, StringName name, StringName theme_type )

void

rename_theme_item ( DataType data_type, StringName old_name, StringName name, StringName theme_type )

void

set_color ( StringName name, StringName theme_type, Color color )

void

set_constant ( StringName name, StringName theme_type, int constant )

void

set_font ( StringName name, StringName theme_type, Font font )

void

set_font_size ( StringName name, StringName theme_type, int font_size )

void

set_icon ( StringName name, StringName theme_type, Texture2D texture )

void

set_stylebox ( StringName name, StringName theme_type, StyleBox texture )

void

set_theme_item ( DataType data_type, StringName name, StringName theme_type, Variant value )

void

set_type_variation ( StringName theme_type, StringName base_type )

Enumerations

enum DataType:

  • DATA_TYPE_COLOR = 0 --- Theme's Color item type.

  • DATA_TYPE_CONSTANT = 1 --- Theme's constant item type.

  • DATA_TYPE_FONT = 2 --- Theme's Font item type.

  • DATA_TYPE_FONT_SIZE = 3 --- Theme's font size item type.

  • DATA_TYPE_ICON = 4 --- Theme's icon Texture2D item type.

  • DATA_TYPE_STYLEBOX = 5 --- Theme's StyleBox item type.

  • DATA_TYPE_MAX = 6 --- Maximum value for the DataType enum.

Property Descriptions

  • float default_base_scale

Default

0.0

Setter

set_default_base_scale(value)

Getter

get_default_base_scale()

The default base scale factor of this theme resource. Used by some controls to scale their visual properties based on the global scale factor. If this value is set to 0.0, the global scale factor is used (see ThemeDB.fallback_base_scale).

Use has_default_base_scale to check if this value is valid.


Setter

set_default_font(value)

Getter

get_default_font()

The default font of this theme resource. Used as the default value when trying to fetch a font resource that doesn't exist in this theme or is in invalid state. If the default font is also missing or invalid, the engine fallback value is used (see ThemeDB.fallback_font).

Use has_default_font to check if this value is valid.


  • int default_font_size

Default

-1

Setter

set_default_font_size(value)

Getter

get_default_font_size()

The default font size of this theme resource. Used as the default value when trying to fetch a font size value that doesn't exist in this theme or is in invalid state. If the default font size is also missing or invalid, the engine fallback value is used (see ThemeDB.fallback_font_size).

Values below 0 are invalid and can be used to unset the property. Use has_default_font_size to check if this value is valid.

Method Descriptions

Adds an empty theme type for every valid data type.

Note: Empty types are not saved with the theme. This method only exists to perform in-memory changes to the resource. Use available set_* methods to add theme items.


  • void clear ( )

Removes all the theme properties defined on the theme resource.


Removes the Color property defined by name and theme_type, if it exists.

Fails if it doesn't exist. Use has_color to check for existence.


Removes the constant property defined by name and theme_type, if it exists.

Fails if it doesn't exist. Use has_constant to check for existence.


Removes the Font property defined by name and theme_type, if it exists.

Fails if it doesn't exist. Use has_font to check for existence.


Removes the font size property defined by name and theme_type, if it exists.

Fails if it doesn't exist. Use has_font_size to check for existence.


Removes the icon property defined by name and theme_type, if it exists.

Fails if it doesn't exist. Use has_icon to check for existence.


Removes the StyleBox property defined by name and theme_type, if it exists.

Fails if it doesn't exist. Use has_stylebox to check for existence.


Removes the theme property of data_type defined by name and theme_type, if it exists.

Fails if it doesn't exist. Use has_theme_item to check for existence.

Note: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.


  • void clear_type_variation ( StringName theme_type )

Unmarks theme_type as being a variation of another theme type. See set_type_variation.


Returns the Color property defined by name and theme_type, if it exists.

Returns the default color value if the property doesn't exist. Use has_color to check for existence.


Returns a list of names for Color properties defined with theme_type. Use get_color_type_list to get a list of possible theme type names.


Returns a list of all unique theme type names for Color properties. Use get_type_list to get a list of all unique theme types.


Returns the constant property defined by name and theme_type, if it exists.

Returns 0 if the property doesn't exist. Use has_constant to check for existence.


Returns a list of names for constant properties defined with theme_type. Use get_constant_type_list to get a list of possible theme type names.


Returns a list of all unique theme type names for constant properties. Use get_type_list to get a list of all unique theme types.


Returns the Font property defined by name and theme_type, if it exists.

Returns the default theme font if the property doesn't exist and the default theme font is set up (see default_font). Use has_font to check for existence of the property and has_default_font to check for existence of the default theme font.

Returns the engine fallback font value, if neither exist (see ThemeDB.fallback_font).


Returns a list of names for Font properties defined with theme_type. Use get_font_type_list to get a list of possible theme type names.


Returns the font size property defined by name and theme_type, if it exists.

Returns the default theme font size if the property doesn't exist and the default theme font size is set up (see default_font_size). Use has_font_size to check for existence of the property and has_default_font_size to check for existence of the default theme font.

Returns the engine fallback font size value, if neither exist (see ThemeDB.fallback_font_size).


Returns a list of names for font size properties defined with theme_type. Use get_font_size_type_list to get a list of possible theme type names.


Returns a list of all unique theme type names for font size properties. Use get_type_list to get a list of all unique theme types.


Returns a list of all unique theme type names for Font properties. Use get_type_list to get a list of all unique theme types.


Returns the icon property defined by name and theme_type, if it exists.

Returns the engine fallback icon value if the property doesn't exist (see ThemeDB.fallback_icon). Use has_icon to check for existence.


Returns a list of names for icon properties defined with theme_type. Use get_icon_type_list to get a list of possible theme type names.


Returns a list of all unique theme type names for icon properties. Use get_type_list to get a list of all unique theme types.


Returns the StyleBox property defined by name and theme_type, if it exists.

Returns the engine fallback stylebox value if the property doesn't exist (see ThemeDB.fallback_stylebox). Use has_stylebox to check for existence.


Returns a list of names for StyleBox properties defined with theme_type. Use get_stylebox_type_list to get a list of possible theme type names.


Returns a list of all unique theme type names for StyleBox properties. Use get_type_list to get a list of all unique theme types.


Returns the theme property of data_type defined by name and theme_type, if it exists.

Returns the engine fallback icon value if the property doesn't exist (see ThemeDB). Use has_theme_item to check for existence.

Note: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.


Returns a list of names for properties of data_type defined with theme_type. Use get_theme_item_type_list to get a list of possible theme type names.

Note: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.


Returns a list of all unique theme type names for data_type properties. Use get_type_list to get a list of all unique theme types.

Note: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.


Returns a list of all unique theme type names. Use the appropriate get_*_type_list method to get a list of unique theme types for a single data type.


Returns the name of the base theme type if theme_type is a valid variation type. Returns an empty string otherwise.


Returns a list of all type variations for the given base_type.


Returns true if the Color property defined by name and theme_type exists.

Returns false if it doesn't exist. Use set_color to define it.


Returns true if the constant property defined by name and theme_type exists.

Returns false if it doesn't exist. Use set_constant to define it.


  • bool has_default_base_scale ( ) const

Returns true if default_base_scale has a valid value.

Returns false if it doesn't. The value must be greater than 0.0 to be considered valid.


  • bool has_default_font ( ) const

Returns true if default_font has a valid value.

Returns false if it doesn't.


  • bool has_default_font_size ( ) const

Returns true if default_font_size has a valid value.

Returns false if it doesn't. The value must be greater than 0 to be considered valid.


Returns true if the Font property defined by name and theme_type exists, or if the default theme font is set up (see has_default_font).

Returns false if neither exist. Use set_font to define the property.


Returns true if the font size property defined by name and theme_type exists, or if the default theme font size is set up (see has_default_font_size).

Returns false if neither exist. Use set_font_size to define the property.


Returns true if the icon property defined by name and theme_type exists.

Returns false if it doesn't exist. Use set_icon to define it.


Returns true if the StyleBox property defined by name and theme_type exists.

Returns false if it doesn't exist. Use set_stylebox to define it.


Returns true if the theme property of data_type defined by name and theme_type exists.

Returns false if it doesn't exist. Use set_theme_item to define it.

Note: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.


Returns true if theme_type is marked as a variation of base_type.


  • void merge_with ( Theme other )

Adds missing and overrides existing definitions with values from the other theme resource.

Note: This modifies the current theme. If you want to merge two themes together without modifying either one, create a new empty theme and merge the other two into it one after another.


Removes the theme type, gracefully discarding defined theme items. If the type is a variation, this information is also erased. If the type is a base for type variations, those variations lose their base.


Renames the Color property defined by old_name and theme_type to name, if it exists.

Fails if it doesn't exist, or if a similar property with the new name already exists. Use has_color to check for existence, and clear_color to remove the existing property.


Renames the constant property defined by old_name and theme_type to name, if it exists.

Fails if it doesn't exist, or if a similar property with the new name already exists. Use has_constant to check for existence, and clear_constant to remove the existing property.


Renames the Font property defined by old_name and theme_type to name, if it exists.

Fails if it doesn't exist, or if a similar property with the new name already exists. Use has_font to check for existence, and clear_font to remove the existing property.


Renames the font size property defined by old_name and theme_type to name, if it exists.

Fails if it doesn't exist, or if a similar property with the new name already exists. Use has_font_size to check for existence, and clear_font_size to remove the existing property.


Renames the icon property defined by old_name and theme_type to name, if it exists.

Fails if it doesn't exist, or if a similar property with the new name already exists. Use has_icon to check for existence, and clear_icon to remove the existing property.


Renames the StyleBox property defined by old_name and theme_type to name, if it exists.

Fails if it doesn't exist, or if a similar property with the new name already exists. Use has_stylebox to check for existence, and clear_stylebox to remove the existing property.


Renames the theme property of data_type defined by old_name and theme_type to name, if it exists.

Fails if it doesn't exist, or if a similar property with the new name already exists. Use has_theme_item to check for existence, and clear_theme_item to remove the existing property.

Note: This method is analogous to calling the corresponding data type specific method, but can be used for more generalized logic.


Creates or changes the value of the Color property defined by name and theme_type. Use clear_color to remove the property.


Creates or changes the value of the constant property defined by name and theme_type. Use clear_constant to remove the property.


Creates or changes the value of the Font property defined by name and theme_type. Use clear_font to remove the property.


Creates or changes the value of the font size property defined by name and theme_type. Use clear_font_size to remove the property.


Creates or changes the value of the icon property defined by name and theme_type. Use clear_icon to remove the property.


  • void set_stylebox (