|
JustAnotherDnDGame 0.1.0
Jeu de rôle tactique au d20, vue de dessus, en C++/Qt
|
Grille de vignettes d'un dossier d'assets, avec recherche, sélection et gestion des fichiers (importer/renommer/dupliquer/supprimer). More...
#include <AssetThumbnailView.h>
Public Types | |
| using | ReferenceChecker = std::function<std::vector<std::string>(const std::string&)> |
| Fonction fournie par la section : renvoie les références lisibles à un fichier (jeu de skins, futur niveau…), vide si aucune. | |
Signals | |
| void | assetSelected (const QString &fileName) |
| Émis quand la sélection change dans la grille (feuille, pas l'entrée « (aucun) »… incluse). | |
| void | assetActivated (const QString &fileName) |
| Émis sur double-clic/activation : confirme le choix (fermeture d'un dialogue englobant). | |
| void | assetsChanged () |
| Émis après un import/renommage/duplication/suppression réussi : la section doit rafraîchir ce qui dépend du contenu du dossier (ex. | |
Public Member Functions | |
| AssetThumbnailView (QWidget *parent=nullptr) | |
| ~AssetThumbnailView () override | |
| void | setDirectory (std::filesystem::path directory) |
| Désigne le dossier balayé et recharge la grille. | |
| void | setAssetFamily (AssetFamily family) noexcept |
| Famille de l'asset (EX-REN-007), utilisée pour valider les imports. | |
| void | setReferenceChecker (ReferenceChecker checker) |
| Fournit le vérificateur de références de la section (voir la doc de classe). | |
| void | setNoneOptionVisible (bool visible) |
| Affiche ou masque l'entrée « (aucun) » en tête de grille (sélection représentant l'absence d'assignation). | |
| void | refresh () |
| Recharge la grille depuis le dossier courant (après un import/renommage/suppression, ou un rechargement à chaud externe). | |
| void | clearCache () |
| Vide le cache de vignettes décodées, sans recharger la grille (rechargement à chaud, LOT-43 TACHE-03) — le prochain refresh() redécode donc chaque fichier depuis le disque. | |
| void | selectAsset (const std::string &fileName) |
| Sélectionne un fichier par son nom (aucun effet s'il n'est pas listé). | |
| std::string | selectedAsset () const |
| void | retranslateUi (const Localization &loc) |
| Applique la langue active (champ de recherche, boutons, entrée « (aucun) »). | |
Protected Member Functions | |
| bool | event (QEvent *event) override |
| Régénère les vignettes lors d'un changement d'écran (QEvent::ScreenChangeInternal) : l'échelle d'affichage a pu changer (LOT-56 TACHE-05). | |
Private Member Functions | |
| void | rebuildItems () |
| QPixmap | thumbnailFor (const std::string &fileName) |
| void | onFilterChanged (const QString &text) |
| void | onCurrentItemChanged (QListWidgetItem *current, QListWidgetItem *previous) |
| void | onItemActivated (QListWidgetItem *item) |
| void | onImport () |
| void | onRename () |
| void | onDuplicate () |
| void | onDelete () |
| QString | referencesWarning (const std::string &fileName) const |
Références de fileName, décrites en un seul message ; chaîne vide si aucune ou si aucun vérificateur n'est configuré. | |
Private Attributes | |
| std::unique_ptr< Ui::AssetThumbnailView > | _ui |
| std::filesystem::path | _directory |
| AssetFamily | _family = AssetFamily::TileSkin |
| ReferenceChecker | _referenceChecker |
| std::string | _filterText |
| bool | _noneOptionVisible = true |
| std::unordered_map< std::string, QPixmap > | _thumbnails |
| Chemin absolu -> vignette décodée. | |
| const Localization * | _loc = nullptr |
Grille de vignettes d'un dossier d'assets, avec recherche, sélection et gestion des fichiers (importer/renommer/dupliquer/supprimer).
Réutilisable tel quel par toutes les sections du panneau « Textures » (Skins pour l'instant, puis Fond, Objets, Animations, Décors) : le widget ignore délibérément la sémantique d'une section (à quoi sert l'asset une fois choisi) — il liste un dossier et émet une sélection ou une notification de changement. La sémantique (quel type de tuile, quel niveau…) reste dans la section appelante.
Pour la même raison, la détection des références avant renommage/suppression n'est pas codée en dur ici : la section fournit un ReferenceChecker (setReferenceChecker), seule partie qui sait CE QUI peut référencer un asset (un jeu de skins aujourd'hui, un niveau à partir de LOT-44).
Décodage CPU uniquement (hmi::decodeImageFile → QPixmap), indépendant du device Direct3D 11 : ce widget doit rester utilisable même quand aucun viewport n'est actif. Les vignettes sont mises à l'échelle en plus proche voisin (pixel art, EX-ARCH-022) et mises en cache par chemin de fichier ; clearCache vide ce cache pour le rechargement à chaud (LOT-43 TACHE-03).
| using hmi::AssetThumbnailView::ReferenceChecker = std::function<std::vector<std::string>(const std::string&)> |
Fonction fournie par la section : renvoie les références lisibles à un fichier (jeu de skins, futur niveau…), vide si aucune.
Le widget ne sait rien de plus sur leur origine.
|
explicit |
|
overridedefault |
|
signal |
Émis sur double-clic/activation : confirme le choix (fermeture d'un dialogue englobant).
|
signal |
Émis après un import/renommage/duplication/suppression réussi : la section doit rafraîchir ce qui dépend du contenu du dossier (ex.
une assignation qui visait le fichier supprimé).
|
signal |
Émis quand la sélection change dans la grille (feuille, pas l'entrée « (aucun) »… incluse).
| void hmi::AssetThumbnailView::clearCache | ( | ) |
Vide le cache de vignettes décodées, sans recharger la grille (rechargement à chaud, LOT-43 TACHE-03) — le prochain refresh() redécode donc chaque fichier depuis le disque.
|
overrideprotected |
Régénère les vignettes lors d'un changement d'écran (QEvent::ScreenChangeInternal) : l'échelle d'affichage a pu changer (LOT-56 TACHE-05).
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
nodiscardprivate |
Références de fileName, décrites en un seul message ; chaîne vide si aucune ou si aucun vérificateur n'est configuré.
| void hmi::AssetThumbnailView::refresh | ( | ) |
Recharge la grille depuis le dossier courant (après un import/renommage/suppression, ou un rechargement à chaud externe).
| void hmi::AssetThumbnailView::retranslateUi | ( | const Localization & | loc | ) |
Applique la langue active (champ de recherche, boutons, entrée « (aucun) »).
| void hmi::AssetThumbnailView::selectAsset | ( | const std::string & | fileName | ) |
Sélectionne un fichier par son nom (aucun effet s'il n'est pas listé).
Chaîne vide pour sélectionner l'entrée « (aucun) », si affichée.
|
nodiscard |
|
inlinenoexcept |
Famille de l'asset (EX-REN-007), utilisée pour valider les imports.
À définir avant tout import ; sans effet sur le balayage ou l'affichage.
| void hmi::AssetThumbnailView::setDirectory | ( | std::filesystem::path | directory | ) |
Désigne le dossier balayé et recharge la grille.
| void hmi::AssetThumbnailView::setNoneOptionVisible | ( | bool | visible | ) |
Affiche ou masque l'entrée « (aucun) » en tête de grille (sélection représentant l'absence d'assignation).
Activée par défaut.
|
inline |
Fournit le vérificateur de références de la section (voir la doc de classe).
|
nodiscardprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Chemin absolu -> vignette décodée.
Décodage paresseux : rempli au premier refresh() (donc à la première ouverture réelle de la vue), jamais à la construction du widget — une section non consultée ne décode donc jamais ses assets.
|
private |