Deine eigenen Variablen: <variables>
Was in die Datei kommt: das Tag, die Namensregeln, der Geltungsbereich.
Diese Seite beschreibt, was in die Datei kommt. Um sie ohne eine Zeile XML anzulegen, siehe Deine maßgeschneiderten Variablen unter „Dynamische Daten“.
Es ist der nützlichste Mechanismus eines ernsthaften Themes — und doch der unbekannteste.
<variables>
<variable name="CouleurPrincipale" value="2E447C" />
<variable name="PoliceTitre" value="${root}/data/fonts/Exo2.otf" />
<variable name="Alpha50" value="80" />
</variables>
Dann, überall im Theme:
<box name="fond">
<color>${CouleurPrincipale}</color>
</box>
<text name="titre">
<fontPath>${PoliceTitre}</fontPath>
<color>${CouleurPrincipale}${Alpha50}</color>
</text>
Ändere den Wert an einer Stelle, das ganze Theme folgt. Das macht Farboptionen möglich: Eine Overlay-Datei definiert die Variable neu, und sonst nichts.
Die Regeln
nameundvaluesind beide Pflicht; fehlt eines, wird die Zeile ignoriert und im Protokoll gemeldet;- ein leerer
namewird abgelehnt; - eine Variable kann eine andere enthalten, auch eine Recalbox-Variable:
<variable name="CheminLogo" value="${root}/data/logos/${system.name}.svg" />
- der
<variables>-Block akzeptiert eine Bedingung, und jede<variable>ebenfalls:
<variables if="crt">
<variable name="TailleTitre" value="0.09" />
</variables>
- es kann mehrere
<variables>-Blöcke geben, in jeder Datei; - eine weiter unten neu definierte Variable überschreibt die vorige — wie Komponenten.
⚠️ Der Block steht ganz oben
<variables>gilt für alles, was NACH ihm gelesen wird.
Recalbox ersetzt jedes ${nom} beim Lesen der Dateien. Eine oben im Theme deklarierte Variable gilt also überall; in der Mitte deklariert, gilt sie nur für den Rest.
Daher die Regel, gültig für alle Themes: der Variablenblock zuerst, vor den Ansichten, vor allem anderen.
Eine später neu definierte Variable ersetzt die vorige für den Rest des Lesens — das erlaubt einer Optionswahl, ein ganzes Theme umzufärben, sofern sie vor den Ansichten geladen wird. Siehe Eine Option deklarieren.
Wo sie deklarieren
In theme.xml, vor den <include>-Tags, die sie benutzen: Die Engine liest die Variablen einer Datei, bevor sie ihre Einbindungen verarbeitet.
Üblich, vom offiziellen Theme übernommen, ist eine eigene Datei — variables.xml — als allererstes eingebunden:
<include>${root}/variables.xml</include>