Types/StyleSpecification: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
mNo edit summary
(→‎parent: better info on how parent defaults and the exception work. thanks therenas)
 
(8 intermediate revisions by 3 users not shown)
Line 49: Line 49:


Name of a [[Types/StyleSpecification]]. This style specification inherits all property values from the parent style specification.<br>
Name of a [[Types/StyleSpecification]]. This style specification inherits all property values from the parent style specification.<br>
It is recommended to always set the parent style to at least the basic vanilla style. If no parent is set, some style properties become mandatory and behavior may be unexpected, such as an element not showing up because its size defaults to 0.
Styles without a parent property default to the root style for their type. The exception to this are the root styles themselves, they cannot have a parent set. Due to this, for root styles some style properties are mandatory and behavior may be unexpected, such as an element not showing up because its size defaults to 0.


=== horizontal_align ===
=== horizontal_align ===
Line 64: Line 64:


Either "top", "center" or "bottom".
Either "top", "center" or "bottom".
=== ignored_by_search ===
'''Type''': [[Types/bool|bool]]
=== never_hide_by_search ===
'''Type''': [[Types/bool|bool]]


=== horizontally_stretchable ===
=== horizontally_stretchable ===
'''Type''': [[Types/string|string]]
'''Type''': [[Types/StretchRule|StretchRule]]


'''Default''': "auto"
'''Default''': "auto"
Either "off", "on", "auto" or "stretch_and_expand".


=== vertically_stretchable ===
=== vertically_stretchable ===
'''Type''': [[Types/string|string]]
'''Type''': [[Types/StretchRule|StretchRule]]


'''Default''': "auto"
'''Default''': "auto"
Either "off", "on" or "auto".


=== horizontally_squashable ===
=== horizontally_squashable ===
'''Type''': [[Types/string|string]]
'''Type''': [[Types/StretchRule|StretchRule]]


'''Default''': "auto"
'''Default''': "auto"
Either "off", "on" or "auto".


=== vertically_squashable ===
=== vertically_squashable ===
'''Type''': [[Types/string|string]]
'''Type''': [[Types/StretchRule|StretchRule]]


'''Default''': "auto"
'''Default''': "auto"


Either "off", "on" or "auto".
=== natural_size ===
'''Type''': [[Types/uint32|uint32]] or [[Types/table|table]] of [[Types/uint32|uint32]]
 
If this is an array, the first member of the array is <code>natural_width</code> and the second is <code>natural_height</code>. Otherwise the size is both <code>natural_width</code> and <code>natural_height</code>.


=== size ===
=== size ===
Line 202: Line 205:
=== effect ===
=== effect ===
'''Type''': [[Types/string|string]]
'''Type''': [[Types/string|string]]
Name of a custom GUI effect. Custom GUI effects are hardcoded in the game's C++ code. List of available effects: "compilatron-hologram"


=== effect_opacity ===
=== effect_opacity ===
Line 207: Line 212:


'''Default''': 1.0
'''Default''': 1.0
=== tooltip ===
'''Type''': [[Types/LocalisedString|LocalisedString]]
== Example ==
Example of adding a custom style via [[Prototype/GuiStyle]], in this case a [[Types/FrameStyleSpecification]]:
<syntaxhighlight lang="lua">data.raw["gui-style"]["default"]["custom_style_for_a_frame"] =
{
  type = "frame_style",
  parent = "frame",
  use_header_filler = false,
  drag_by_title = false
}</syntaxhighlight>

Latest revision as of 16:14, 21 September 2022

A table, used as a value in Prototype/GuiStyle, named by the key that is used there. Prototype/GuiStyle loads one of the extensions of this prototype, depending on the specified type.

Extensions

Mandatory properties

type

Type: string

The type of one of the above listed extensions, this style specification is then loaded as that extension.

Optional properties

parent

Type: string

Name of a Types/StyleSpecification. This style specification inherits all property values from the parent style specification.
Styles without a parent property default to the root style for their type. The exception to this are the root styles themselves, they cannot have a parent set. Due to this, for root styles some style properties are mandatory and behavior may be unexpected, such as an element not showing up because its size defaults to 0.

horizontal_align

Type: string

Default: "left"

Either "left", "center" or "right".

vertical_align

Type: string

Default: "top"

Either "top", "center" or "bottom".

ignored_by_search

Type: bool

never_hide_by_search

Type: bool

horizontally_stretchable

Type: StretchRule

Default: "auto"

vertically_stretchable

Type: StretchRule

Default: "auto"

horizontally_squashable

Type: StretchRule

Default: "auto"

vertically_squashable

Type: StretchRule

Default: "auto"

natural_size

Type: uint32 or table of uint32

If this is an array, the first member of the array is natural_width and the second is natural_height. Otherwise the size is both natural_width and natural_height.

size

Type: uint32 or table of uint32

If this is an array, the first member of the array is width and the second is height. Otherwise the size is both width and height.

width

Type: uint32

Sets minimal_width, maximal_width and natural_width.

minimal_width

Type: uint32

Default: 0

Minimal width ensures, that the widget will never be smaller than than that size. It can't be squashed to be smaller.

maximal_width

Type: uint32

Default: 0

Maximal width ensures, that the widget will never be bigger than than that size. It can't be stretched to be bigger.

natural_width

Type: uint32

Default: 0

Natural width specifies the width of the element tries to have, but it can still be squashed/stretched to have a smaller or bigger size.

height

Type: uint32

Sets minimal_height, maximal_height and natural_height.

minimal_height

Type: uint32

Default: 0

Minimal height ensures, that the widget will never be smaller than than that size. It can't be squashed to be smaller.

maximal_height

Type: uint32

Default: 0

Maximal height ensures, that the widget will never be bigger than than that size. It can't be stretched to be bigger.

natural_height

Type: uint32

Default: 0

Natural height specifies the height of the element tries to have, but it can still be squashed/stretched to have a smaller or bigger size.

padding

Type: int16

Sets top_padding, right_padding, bottom_padding and left_padding.

top_padding

Type: int16

Default: 0

right_padding

Type: int16

Default: 0

bottom_padding

Type: int16

Default: 0

left_padding

Type: int16

Default: 0

margin

Type: int16

Sets top_margin, right_margin, bottom_margin and left_margin.

top_margin

Type: int16

Default: 0

right_margin

Type: int16

Default: 0

bottom_margin

Type: int16

Default: 0

left_margin

Type: int16

Default: 0

effect

Type: string

Name of a custom GUI effect. Custom GUI effects are hardcoded in the game's C++ code. List of available effects: "compilatron-hologram"

effect_opacity

Type: float

Default: 1.0

tooltip

Type: LocalisedString

Example

Example of adding a custom style via Prototype/GuiStyle, in this case a Types/FrameStyleSpecification:

data.raw["gui-style"]["default"]["custom_style_for_a_frame"] =
{
  type = "frame_style",
  parent = "frame",
  use_header_filler = false,
  drag_by_title = false
}