Difference between revisions of "GUI Themes/Specs"

Jump to navigation Jump to search
72 bytes added ,  15:13, 25 October 2018
m
Text replacement - "<source lang=" to "<syntaxhighlight lang="
(→‎Syntax overview: Fix syntax highlighting)
m (Text replacement - "<source lang=" to "<syntaxhighlight lang=")
(3 intermediate revisions by the same user not shown)
Line 80: Line 80:
Here's a schematic overview of the layout of keys in a STX file:
Here's a schematic overview of the layout of keys in a STX file:


<source lang="xml">
<syntaxhighlight lang="xml">
<render_info>
<render_info>
     <palette>
     <palette>
Line 112: Line 112:
     ...
     ...
</layout_info>
</layout_info>
</source>
</syntaxhighlight>


The best place to start writing a full theme description is taking a look at the already written themes in the <tt>gui/themes/</tt> directory of the source code repository, while consulting the following documentation for each specific key:
The best place to start writing a full theme description is taking a look at the already written themes in the <tt>gui/themes/</tt> directory of the source code repository, while consulting the following documentation for each specific key:
Line 126: Line 126:
The resolution property must contain one or more resolution dimension limits, comma separated, for which the given key is supposed to be loaded. Resolutions without any modifiers will force the theme to be loaded in all resolutions. Here are a few examples:
The resolution property must contain one or more resolution dimension limits, comma separated, for which the given key is supposed to be loaded. Resolutions without any modifiers will force the theme to be loaded in all resolutions. Here are a few examples:


<syntax type="xml">
<syntaxhighlight lang="xml">
/* Key will be loaded in all resolutions */
/* Key will be loaded in all resolutions */
<render_info>
<render_info>
Line 135: Line 135:
/* Key will ONLY be loaded in resolutions with less than 400 height */
/* Key will ONLY be loaded in resolutions with less than 400 height */
<render_info resolution = 'y<400'>
<render_info resolution = 'y<400'>
</syntax>
</syntaxhighlight>


Note that the Theme Parser does not assert on repeated keys or values, it just replaces them accordingly. For instance, the following variable definition:
Note that the Theme Parser does not assert on repeated keys or values, it just replaces them accordingly. For instance, the following variable definition:


<syntax type="xml">
<syntaxhighlight lang="xml">
<def var = 'TestVar' value = '100'/>
<def var = 'TestVar' value = '100'/>
<def var = 'TestVar' value = '200' resolution = 'y>399'/>
<def var = 'TestVar' value = '200' resolution = 'y>399'/>
</syntax>
</syntaxhighlight>


won't fail to parse. What will happen when loading the theme using a resolution with 400 height or mire is that <tt>TestVal</tt> first will be assigned the <tt>100</tt> value, and then it will be overwritten with the <tt>200</tt> value. On the other hand, when loading the theme using a resolution ''with less'' than 400 height, the <tt>ThemeVal</tt> will be assigned the <tt>100</tt> value and the second key will be plain ignored.
won't fail to parse. What will happen when loading the theme using a resolution with 400 height or mire is that <tt>TestVal</tt> first will be assigned the <tt>100</tt> value, and then it will be overwritten with the <tt>200</tt> value. On the other hand, when loading the theme using a resolution ''with less'' than 400 height, the <tt>ThemeVal</tt> will be assigned the <tt>100</tt> value and the second key will be plain ignored.
Line 148: Line 148:
The &quot;proper&quot; way to do that multi-resolution assignment would obviously be:
The &quot;proper&quot; way to do that multi-resolution assignment would obviously be:


<syntax type="xml">
<syntaxhighlight lang="xml">
<def var = 'TestVar' value = '100' resolution = 'y<400'/>
<def var = 'TestVar' value = '100' resolution = 'y<400'/>
<def var = 'TestVar' value = '200' resolution = 'y>399'/>
<def var = 'TestVar' value = '200' resolution = 'y>399'/>
</syntax>
</syntaxhighlight>


This way keys are only parsed on the resolution they are used in, but the result will be '''exactly the same''': Most of the time it's just cleaner to avoid using <tt>y<400</tt> resolution tags, and instead write a layout that works on all resolutions and overwrite parts of it with the <tt>y>399<tt> tag.
This way keys are only parsed on the resolution they are used in, but the result will be '''exactly the same''': Most of the time it's just cleaner to avoid using <tt>y<400</tt> resolution tags, and instead write a layout that works on all resolutions and overwrite parts of it with the <tt>y>399<tt> tag.
TrustedUser
2,147

edits

Navigation menu