Declarar una opción: <subset>
La sintaxis exacta, en dos tiempos.
Una opción se construye en dos tiempos: se declara, y luego se enumeran sus elecciones.
1. Declarar el grupo
<subset subset="colorTheme"
title="THEME : Colors" title.fr="THÈME : Couleurs"
help="Choose the color set" help.fr="Choisissez la palette" />
| Atributo | Función |
|---|---|
subset | el identificador del grupo — es él quien enlaza las elecciones entre sí |
title | el rótulo que el usuario lee en el menú |
help | la frase de explicación bajo el rótulo |
title y help aceptan un sufijo de idioma: title.fr, title.es… La versión sin sufijo sirve de repliegue.
2. Enumerar las elecciones
Cada elección es un <include> que lleva el mismo subset:
<include subset="colorTheme" name="Blue" name.fr="Bleu">${root}/options/couleurs/bleu.xml</include>
<include subset="colorTheme" name="Green" name.fr="Vert">${root}/options/couleurs/vert.xml</include>
<include subset="colorTheme" name="Red" name.fr="Rouge">${root}/options/couleurs/rouge.xml</include>
| Atributo | Función |
|---|---|
subset | a qué grupo pertenece esta elección |
name | el rótulo de la elección en la lista (traducible: name.fr) |
La elección « ninguno »
Un <include> vacío da la opción « ninguno » — útil para dejar el tema en su estado original:
<include subset="shader" name="None" name.fr="Aucun"></include>
Proponer una elección solo en ciertas pantallas
<include subset="systemView" if="(hd | fhd) and !tate"
name="Vertical left" name.fr="Vertical gauche">${root}/_views/vertical.xml</include>
<include subset="systemView" if="crt | jamma"
name="Horizontal">${root}/_views/horizontal.xml</include>
El usuario solo ve las elecciones pertinentes para su material. Así es como el filtro retro no aparece en una pantalla catódica, que no lo necesita.
El contenido de un archivo de elección
Es un archivo de tema ordinario, que solo redefine lo que cambia:
<?xml version="1.0" encoding="UTF-8"?>
<theme>
<variables>
<variable name="CouleurPrincipale" value="7C2E44" />
</variables>
</theme>
Tres líneas útiles, y todo el tema pasa al rojo — a condición de haber construido el tema sobre variables en lugar de sobre colores escritos en duro.
⚠️ Las opciones se cargan ANTES que las vistas. Una variable vale para lo que se lee después de ella: es por ahí por donde debe pasar la elección para que las vistas la aprovechen.
El orden a escribir en theme.xml:
<theme name="Mon Thème" …>
<include>${root}/variables.xml</include> <!-- 1. los valores por defecto -->
<include>${root}/options.xml</include> <!-- 2. la elección los redefine -->
<include>${root}/views/system.xml</include> <!-- 3. las vistas, que los emplean -->
</theme>
Lo que ocurre cuando la persona cambia de elección
Recalbox relee el tema entero — todos los archivos, desde theme.xml, con la nueva elección activa. Por eso aparece en ese momento un breve « Actualizando el tema… ».
Una opción que solo cambia colores redefine únicamente variables. Es la manera más corta de escribir un juego de colores — y la principal razón para usar
<variables>.