Les jeux cherchés dans plusieurs dossiers has been fixed.
See more details at : https://github.com/pdulvp/pdcartes-barquette/issues/14
- CardSet::searchFolders() remplace le dossier unique : celui du programme,
puis les dossiers de données du système, puis le dossier voisin de
l'exécutable ; un programme installé peut ainsi livrer des jeux avec lui
- CardSet::installFolder() passe de GenericConfigLocation à
AppConfigLocation : chaque programme a ses jeux, le dossier partagé
~/.config/cartes n'est plus lu
- CardDecks::refresh() écarte un identifiant déjà pris : à nom de fichier
égal, le jeu de l'utilisateur masque le jeu livré
Les jeux cherchés dans plusieurs dossiers
<sub>2026-10-28-2035-les-jeux-cherches-dans-plusieurs-dossiers.md — 2026-10-28 20:35</sub>
La cartothèque cherchait les jeux .cartes dans un dossier unique,
~/.config/cartes, partagé par tous les programmes qui lisent ce format.
Un programme installé ne pouvait donc pas emporter de jeux avec lui : son
paquet écrit sous /usr, jamais dans le dossier personnel de quelqu'un.
Le besoin vient du rami (card-sol), dont le paquet Debian livre désormais
des jeux ; il a son propre plan. La cartothèque étant partagée, la
modification vaut pour l'atelier également.
Décisions
- Le dossier d'écriture devient celui du programme.
CardSet::installFolder() part de AppConfigLocation et non plus de
GenericConfigLocation : ~/.config/pdcartes-barquette/pdcartes-barquette/cartes
pour l'atelier, ~/.config/pdulvp/pdcartes-rami/cartes pour le rami. Le
dossier partagé ~/.config/cartes n'est plus lu ; un jeu installé par
l'atelier n'apparaît donc plus de lui-même dans le rami.
- CardSet::searchFolders() dit tous les dossiers lus : celui
ci-dessus, puis le nom de l'application suivi de cartes sous chaque
dossier de données du système, puis le dossier voisin de l'exécutable, dont
se sert une archive qu'on décompresse où l'on veut. Les doublons sont
écartés, un même dossier pouvant être désigné deux fois.
- CardDecks::refresh() les parcourt dans cet ordre, et ignore un jeu
dont l'identifiant est déjà pris : un jeu personnel masque un jeu livré de
même nom de fichier, et non l'inverse.
- CardDecks::folder() reste le dossier de l'utilisateur, seul dossier
où les programmes écrivent — l'atelier y installe ses jeux, et le rami y
ouvre son bouton « Dossier ».
Étapes
- [x] lib/CardSet.{h,cpp} : installFolder() et searchFolders().
- [x] lib/CardDeck.{h,cpp} : refresh() parcourt la liste, les
identifiants déjà pris écartés ; commentaires du dossier partagé repris.
- [x] Les deux programmes bâtis en série.
Vérifié
pdcartes-barquette compile et se lie sans avertissement. Du côté du rami, un
jeu déposé dans le dossier système est listé avec son dos, et un jeu de même
nom dans le dossier de l'utilisateur prend sa place sans doublon.
<sub>Filed by prel from the completed plans at commit time.</sub>