3.9 KiB
Ticket #019
Titre
Afficher une icône selon le type de nœud dans l'arborescence.
Objectif
Améliorer la lisibilité de InvestigationTreeView en affichant une icône
devant chaque dossier ou fichier.
Les icônes doivent être déterminées uniquement dans la couche graphique.
Architecture
InvestigationNode
│
▼
InvestigationTreeView
│
▼
GtkImage + GtkLabel
Le Core fournit :
- le nom ;
- le chemin ;
- le type.
La vue choisit l'icône à afficher.
Responsabilités
InvestigationTreeView
Le module doit :
- afficher une icône devant chaque nœud ;
- utiliser une icône de dossier pour les répertoires ;
- utiliser une icône générique pour les fichiers inconnus ;
- choisir certaines icônes spécialisées selon l'extension ;
- conserver le nom du nœud à côté de l'icône ;
- rester compatible avec
GtkTreeExpander.
Fichiers concernés
src/widgets/investigation_tree_view.c
Éventuellement :
include/widgets/investigation_tree_view.h
uniquement si la documentation doit être précisée.
Aucune modification du Core.
Extensions reconnues
Première version minimale :
.sqlite .db
.jpg .jpeg .png .webp
.pdf
.txt .md .log
.csv
.zip .tar .gz .xz
.mp4 .mkv .avi .mov
Les extensions inconnues utilisent une icône de fichier générique.
La comparaison doit être insensible à la casse.
Icônes GTK attendues
Utiliser les noms d'icônes du thème système, par exemple :
folder-symbolic
text-x-generic-symbolic
application-pdf-symbolic
image-x-generic-symbolic
video-x-generic-symbolic
package-x-generic-symbolic
x-office-spreadsheet-symbolic
folder-database-symbolic
Si une icône spécialisée n'est pas disponible dans le thème, GTK doit retomber proprement sur une icône générique.
Structure visuelle d'une ligne
GtkTreeExpander
└── GtkBox horizontal
├── GtkImage
└── GtkLabel
Le label continue d'afficher le nom du nœud.
Fonctions privées suggérées
static const char *investigation_tree_view_get_icon_name(
const InvestigationNode *node
);
Cette fonction doit :
- retourner
folder-symbolicpour un dossier ; - inspecter l'extension pour un fichier ;
- retourner une icône générique si aucune extension ne correspond.
Hors périmètre
Ce ticket ne doit pas :
- charger des miniatures ;
- analyser le contenu réel des fichiers ;
- lire les types MIME ;
- modifier le Core ;
- ouvrir les fichiers ;
- colorer les lignes ;
- ajouter des badges ;
- ajouter un menu contextuel.
Contraintes techniques
- GTK4 uniquement ;
- utiliser
GtkImage; - utiliser les icônes du thème système ;
- aucun fichier d'icône embarqué ;
- aucun état global ;
- aucune lecture directe du système de fichiers ;
- compilation sans warning ;
- aucun
Gtk-CRITICAL.
Critères d'acceptation
- Le projet compile sans warning.
make testreste valide.- Les dossiers affichent une icône de dossier.
- Les fichiers génériques affichent une icône de fichier.
- Les PDF ont une icône dédiée.
- Les images ont une icône dédiée.
- Les vidéos ont une icône dédiée.
- Les archives ont une icône dédiée.
- Les bases SQLite ont une icône dédiée.
- Le nom du nœud reste visible.
- Le développement et le repli fonctionnent toujours.
- La sélection fonctionne toujours.
- Aucun code Core n'est modifié.
- Aucun
Gtk-CRITICAL.
Tests manuels
- Ouvrir une enquête contenant plusieurs types de fichiers.
- Vérifier l'icône des dossiers.
- Vérifier une image.
- Vérifier un PDF.
- Vérifier une base SQLite.
- Vérifier une archive.
- Vérifier un fichier inconnu.
- Développer et replier plusieurs branches.
- Sélectionner plusieurs nœuds.
- Lancer
make test.
Commit attendu
feat(gui): add icons to investigation tree