Tus propias variables: <variables>
Lo que se escribe en el archivo: la etiqueta, las reglas de nombre, el alcance.
Esta página describe lo que se escribe en el archivo. Para crearlas sin escribir una línea de XML, ver Tus variables a medida, en «Los datos dinámicos».
Es el mecanismo más útil de un tema serio, y sin embargo el menos conocido.
<variables>
<variable name="CouleurPrincipale" value="2E447C" />
<variable name="PoliceTitre" value="${root}/data/fonts/Exo2.otf" />
<variable name="Alpha50" value="80" />
</variables>
Después, en cualquier parte del tema:
<box name="fond">
<color>${CouleurPrincipale}</color>
</box>
<text name="titre">
<fontPath>${PoliceTitre}</fontPath>
<color>${CouleurPrincipale}${Alpha50}</color>
</text>
Cambia el valor en un solo sitio, y todo el tema le sigue. Es lo que hace posibles las opciones de color: un archivo de capa redefine la variable, y nada más.
Las reglas
nameyvalueson obligatorios los dos; sin uno de ellos, la línea se ignora y se señala en el registro;- un
namevacío se rechaza; - una variable puede contener otra, incluida una variable de Recalbox:
<variable name="CheminLogo" value="${root}/data/logos/${system.name}.svg" />
- el bloque
<variables>acepta una condición, y cada<variable>también:
<variables if="crt">
<variable name="TailleTitre" value="0.09" />
</variables>
- puede haber varios bloques
<variables>, en cualquier archivo; - una variable redefinida más adelante machaca la anterior — como los componentes.
⚠️ El bloque se declara arriba del todo
<variables>vale para todo lo que se lee DESPUÉS de él.
Recalbox sustituye cada ${nom} a medida que lee los archivos. Una variable declarada en lo alto del tema vale por tanto en todas partes; declarada en medio, solo vale para lo que sigue.
De ahí la regla, válida para todos los temas: el bloque de variables primero, antes de las vistas, antes de todo lo demás.
Una variable redefinida más adelante sustituye a la anterior para el resto de la lectura — eso es lo que permite a una elección de opción recolorear todo un tema, siempre que se cargue antes de las vistas. Ver Declarar una opción.
Dónde declararlas
En theme.xml, antes de los <include> que las usan: el motor lee las variables de un archivo antes de tratar sus inclusiones.
La costumbre, tomada del tema oficial, es darles su propio archivo — variables.xml — incluido el primero de todos:
<include>${root}/variables.xml</include>