Variables dynamiques dans les éléments de thèmes.
2 posters
Page 1 of 1
Variables dynamiques dans les éléments de thèmes.
Bonjour à tous.
Ce post est mon premier dans ce forum, alors j'en profite pour encourager et féliciter toutes les équipes de Retrobat pour leur travail. Chapeau bas messieurs (et mesdames s'il y en a).
Désolé pour la longueur du message, mais je pense devoir bien expliquer mon blocage et son contexte pour être clair. Je tente depuis plusieurs mois de faire mon propre thème dérivé de "Epic Noir" de Chicuelo. J'aime son design, surtout la page systems, mais je le trouve pauvre en options de customisation. Du coup je l'enrichie. Traduction en plusieurs langues, ajout des logos des systèmes (configurable), sélection des logos et noms de systèmes US, EU ou JP, sélection de boutons de manettes (XBox, PS, Nintendo, stick arcade) ... J'ai ajouté beaucoup d'options. Trop peut-être, je n'ai pas assez de temps pour traiter tous les systèmes, d'où le fait que je ne vous le présente pas encore.
Le fait est que j'aimerai énormément afficher les logos des éditeurs de jeux plutôt que leurs noms. L'idée est de stocker ces logos dans un répertoire du thème. Si le logo d'un éditeur existe il sera affiché. Sinon, j'afficherai le nom comme ça a toujours été fait jusqu'ici. Dans mon idée, je pensais utiliser les Dynamic Variables dont j'ai trouvé un peu de doc dans le Github d'EmulationStation pour Batocera qui, si j'ai bien compris est aussi utilisé pour Retrobat. Et ça marche ! Enfin pas complètement. J'arrive à afficher les logos d'éditeurs avec un élément de type image et l'attribut "path" construit via une variable dynamique {game:publisher}. Top. Reste alors à ne plus afficher le nom de l'éditeur en mode texte. Je pensais m'appuyer sur la propriété "visible" de l'élément "text" qui l'affiche justement et la passer à faux quand l'image existe. Et là c'est le drame.
Une méthode "exists()" permet de tester l'existence d'un chemin vers un fichier. Elle fonctionne quand je teste l'existence d'un chemin contenu dans une variable dynamique comme "{game:rom}", qui contient le chemin de la rom du jeu. Mais dès que je veux construire un chemin à partir d'une chaine de charactère, la fonction ne passe plus. J'imagine qu'exists() ne fonctionne qu'avec des "path" et une "string" n'est pas un "path".
Vous me voyez maintenant venir j'imagine, ma question est : comment puis-je faire fonctionner mon idée ? Si j'ai bien compris le fonctionnement, en l'état ça m'a l'air difficile voire impossible. Mais ça le deviendrait soit en faisant fonctionner cette satanée fonction "exists()" avec des chaines de caractères, soit en créant une fonction de conversion d'une "string" en "path". Après tout, il y a bien des fonctions de conversion de "string" en "int" ou en "bool". Ou bien je fais complètement fausse route. Comble de l'ironie, dans le très bon thème carbon, des lignes en commentaires dans certains fichiers semblaient utiliser la méthode exactement de la manière dont je le voudrais. Mais elles ont été retirées, mises en commentaires donc et, dans mon cas, elles ne fonctionnent pas.
Qu'en pensez vous ? Que me conseillez vous ?
Merci par avance pour votre aide. Si j'arrive à intégrer cette fonction, je promet de mettre les bouchées doubles pour rendre ma version du thème publique rapidement.
Ce post est mon premier dans ce forum, alors j'en profite pour encourager et féliciter toutes les équipes de Retrobat pour leur travail. Chapeau bas messieurs (et mesdames s'il y en a).
Désolé pour la longueur du message, mais je pense devoir bien expliquer mon blocage et son contexte pour être clair. Je tente depuis plusieurs mois de faire mon propre thème dérivé de "Epic Noir" de Chicuelo. J'aime son design, surtout la page systems, mais je le trouve pauvre en options de customisation. Du coup je l'enrichie. Traduction en plusieurs langues, ajout des logos des systèmes (configurable), sélection des logos et noms de systèmes US, EU ou JP, sélection de boutons de manettes (XBox, PS, Nintendo, stick arcade) ... J'ai ajouté beaucoup d'options. Trop peut-être, je n'ai pas assez de temps pour traiter tous les systèmes, d'où le fait que je ne vous le présente pas encore.
Le fait est que j'aimerai énormément afficher les logos des éditeurs de jeux plutôt que leurs noms. L'idée est de stocker ces logos dans un répertoire du thème. Si le logo d'un éditeur existe il sera affiché. Sinon, j'afficherai le nom comme ça a toujours été fait jusqu'ici. Dans mon idée, je pensais utiliser les Dynamic Variables dont j'ai trouvé un peu de doc dans le Github d'EmulationStation pour Batocera qui, si j'ai bien compris est aussi utilisé pour Retrobat. Et ça marche ! Enfin pas complètement. J'arrive à afficher les logos d'éditeurs avec un élément de type image et l'attribut "path" construit via une variable dynamique {game:publisher}. Top. Reste alors à ne plus afficher le nom de l'éditeur en mode texte. Je pensais m'appuyer sur la propriété "visible" de l'élément "text" qui l'affiche justement et la passer à faux quand l'image existe. Et là c'est le drame.
Une méthode "exists()" permet de tester l'existence d'un chemin vers un fichier. Elle fonctionne quand je teste l'existence d'un chemin contenu dans une variable dynamique comme "{game:rom}", qui contient le chemin de la rom du jeu. Mais dès que je veux construire un chemin à partir d'une chaine de charactère, la fonction ne passe plus. J'imagine qu'exists() ne fonctionne qu'avec des "path" et une "string" n'est pas un "path".
Vous me voyez maintenant venir j'imagine, ma question est : comment puis-je faire fonctionner mon idée ? Si j'ai bien compris le fonctionnement, en l'état ça m'a l'air difficile voire impossible. Mais ça le deviendrait soit en faisant fonctionner cette satanée fonction "exists()" avec des chaines de caractères, soit en créant une fonction de conversion d'une "string" en "path". Après tout, il y a bien des fonctions de conversion de "string" en "int" ou en "bool". Ou bien je fais complètement fausse route. Comble de l'ironie, dans le très bon thème carbon, des lignes en commentaires dans certains fichiers semblaient utiliser la méthode exactement de la manière dont je le voudrais. Mais elles ont été retirées, mises en commentaires donc et, dans mon cas, elles ne fonctionnent pas.
Qu'en pensez vous ? Que me conseillez vous ?
Merci par avance pour votre aide. Si j'arrive à intégrer cette fonction, je promet de mettre les bouchées doubles pour rendre ma version du thème publique rapidement.
nono6493- Messages : 2
Date d'inscription : 2024-04-06
Re: Variables dynamiques dans les éléments de thèmes.
Hello et bienvenue parmi nous.
Personnellement, je serais bien incapable de t'aider. Le theming est dans une langue qui m'est totalement inconnue
Peut être que @lehcim ou @f.caruso pourrait t'aiguiller.
Si les lignes sont commentés dans le theme Carbon, c'est peut être parcequ'elles ne sont plus nécessaire, et que c'est le comportement par défaut, lié a une "feature" plus globale ? Tu as essayé de voir si le nommage des logos situés à un endroit spécifique et déclaré pouvait fonctionner ?
En plus du wiki Batocera, tu peux également t'appuyer sur les deux liens suivants :
https://github.com/batocera-linux/batocera-emulationstation/blob/master/THEMES.md
https://github.com/batocera-linux/batocera-emulationstation/blob/master/THEMES_BINDINGS.md
Dans tous les cas, je te souhaite bon courage, en espérant que d'autres puissent t'apporter des solutions.
Personnellement, je serais bien incapable de t'aider. Le theming est dans une langue qui m'est totalement inconnue
Peut être que @lehcim ou @f.caruso pourrait t'aiguiller.
Si les lignes sont commentés dans le theme Carbon, c'est peut être parcequ'elles ne sont plus nécessaire, et que c'est le comportement par défaut, lié a une "feature" plus globale ? Tu as essayé de voir si le nommage des logos situés à un endroit spécifique et déclaré pouvait fonctionner ?
En plus du wiki Batocera, tu peux également t'appuyer sur les deux liens suivants :
https://github.com/batocera-linux/batocera-emulationstation/blob/master/THEMES.md
https://github.com/batocera-linux/batocera-emulationstation/blob/master/THEMES_BINDINGS.md
Dans tous les cas, je te souhaite bon courage, en espérant que d'autres puissent t'apporter des solutions.
getupor- Admin
- Messages : 1422
Date d'inscription : 2020-10-04
Re: Variables dynamiques dans les éléments de thèmes.
getupor wrote:Dans tous les cas, je te souhaite bon courage, en espérant que d'autres puissent t'apporter des solutions.
Merci pour ton accueil et ta réponse.
Les liens que tu as posté sont ceux que j'ai utilisé, mais ils pourront servir à d'autres aussi comme ça.
Finalement, je pense m'orienter sur un espèce de statut quo. Je pense que via les options de thèmes, je devrais laisser le choix entre l'affichage du texte ou du logo des éditeurs lorsqu'il existe dans le thème. J'ajoute les plus connus mais si un n'existe pas, il y aura un blanc. Mais il sera possible d'en rajouter bien-sûr. J'imagine que comme ça, plus de monde pourra trouver son bonheur.
En attendant je continue mon travaille. J'ai encore des tonnes d'illustrations à faire pour les systèmes les moins répandus.
nono6493- Messages : 2
Date d'inscription : 2024-04-06
Re: Variables dynamiques dans les éléments de thèmes.
Dans tous les cas, le Discord reste le meilleur point d'échanges pour les thémeurs. N'hésites pas à nous y rejoindre
getupor- Admin
- Messages : 1422
Date d'inscription : 2020-10-04
Lorenzolamas likes this post
Similar topics
» Reformatage de thèmes Hyperspin en thèmes Retrobat
» How to translate elements within the theme?
» Confiuration manette USB Ok dans RetroBat, Ko dans ES
» Remplacer la liste de nom des jeux par les marquees dans le thème retrobat roleta dans le choix vu de la liste « vidéo »
» Thèmes à essayer
» How to translate elements within the theme?
» Confiuration manette USB Ok dans RetroBat, Ko dans ES
» Remplacer la liste de nom des jeux par les marquees dans le thème retrobat roleta dans le choix vu de la liste « vidéo »
» Thèmes à essayer
Page 1 of 1
Permissions in this forum:
You cannot reply to topics in this forum