Faire un thème Recalbox

45 pages · 8 sections
FRENESDE Tout afficher Créer mon thème

Déclarer une option : <subset>

La syntaxe exacte, en deux temps.

Une option se construit en deux temps : on la déclare, puis on liste ses choix.

<subset subset="colorTheme" déclare le GROUPE + son titre <include … name="1 - Bleu"> <include … name="2 - Rouge"> chaque choix = un fichier chargé par-dessus Réglages ▸ Thème Couleurs du thème ◁ Bleu ▷ ce que voit l’utilisateur sur sa machine le préfixe « 1 - » sert à ORDONNER les choix : il ne s’affiche pas

1. Déclarer le groupe

<subset subset="colorTheme"
        title="THEME : Colors"      title.fr="THÈME : Couleurs"
        help="Choose the color set"  help.fr="Choisissez la palette" />
AttributRôle
subsetl’identifiant du groupe — c’est lui qui relie les choix entre eux
titlele libellé lu par l’utilisateur dans le menu
helpla phrase d’explication sous le libellé

title et help acceptent un suffixe de langue : title.fr, title.es… La version sans suffixe sert de repli.

2. Lister les choix

Chaque choix est un <include> qui porte le même 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>
AttributRôle
subsetà quel groupe ce choix appartient
namele libellé du choix dans la liste (traduisible : name.fr)

Le choix « aucun »

Un <include> vide donne l’option « aucun » — utile pour laisser le thème dans son état d’origine :

<include subset="shader" name="None" name.fr="Aucun"></include>

Ne proposer un choix que sur certains écrans

<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>

L’utilisateur ne voit que les choix pertinents pour son matériel. C’est ainsi que le filtre rétro n’apparaît pas sur un écran cathodique, qui n’en a pas besoin.

Le contenu d’un fichier de choix

C’est un fichier de thème ordinaire, qui ne redéfinit que ce qui change :

<?xml version="1.0" encoding="UTF-8"?>
<theme>
  <variables>
    <variable name="CouleurPrincipale" value="7C2E44" />
  </variables>
</theme>

Trois lignes utiles, et tout le thème passe au rouge — à condition d’avoir bâti le thème sur des variables plutôt que sur des couleurs écrites en dur.

⚠️ Les options se chargent AVANT les vues. Une variable vaut pour ce qui est lu après elle : c’est là que le choix doit passer pour que les vues en profitent.

L’ordre à écrire dans theme.xml :

<theme name="Mon Thème" …>
  <include>${root}/variables.xml</include>      <!-- 1. les valeurs par défaut -->
  <include>${root}/options.xml</include>        <!-- 2. le choix les redéfinit -->
  <include>${root}/views/system.xml</include>   <!-- 3. les vues, qui les emploient -->
</theme>

Ce qui se passe quand la personne change de choix

Recalbox relit le thème en entier — tous les fichiers, depuis theme.xml, avec le nouveau choix actif. C’est pour cela qu’un bref « Mise à jour du thème… » s’affiche à ce moment-là.

Une option qui ne change que des couleurs redéfinit uniquement des variables. C’est la façon la plus courte d’écrire un jeu de couleurs — et la principale raison de se servir de <variables>.