3.9 KiB
Ticket #013
Titre
Intégrer InvestigationTreeView dans la Sidebar.
Objectif
Afficher dans la barre latérale l'arborescence complète de l'enquête ouverte.
Le composant InvestigationTreeView existe déjà. Ce ticket consiste uniquement à l'intégrer dans Sidebar et à lui transmettre le modèle métier reçu.
Architecture
Application
│
▼
MainWindow
│
▼
Sidebar
│
▼
InvestigationTreeView
│
▼
GtkTreeListModel
La Sidebar héberge la vue.
Elle ne parcourt jamais directement le système de fichiers.
Responsabilités
Sidebar
Le module Sidebar doit :
- créer un
InvestigationTreeView; - intégrer son widget racine sous le titre ;
- transmettre le
InvestigationTreeModelau composant ; - libérer la structure
InvestigationTreeViewlors de sa propre destruction.
InvestigationTreeView
Le composant conserve ses responsabilités actuelles :
- adapter le modèle métier à GTK4 ;
- afficher les nœuds ;
- gérer l'ouverture et le repli des dossiers.
Principe de propriété
Sidebar est propriétaire de :
InvestigationTreeView
Elle doit donc appeler :
investigation_tree_view_free(...)
lors de sa destruction.
En revanche, ni Sidebar ni InvestigationTreeView ne possèdent :
InvestigationTreeModel
Le modèle reste la propriété de Application.
Fichiers concernés
src/widgets/sidebar.c
Éventuellement :
include/widgets/sidebar.h
uniquement si l'API publique doit être précisée.
Aucun changement du Core n'est nécessaire.
Modifications attendues
La structure privée Sidebar doit contenir :
InvestigationTreeView *tree_view;
Le constructeur doit :
- créer le composant ;
- récupérer son widget racine ;
- l'ajouter sous le titre ;
- lui permettre d'occuper l'espace disponible.
La fonction :
sidebar_set_tree_model(...)
doit transmettre le modèle à :
investigation_tree_view_set_model(...)
Le titre de la Sidebar peut continuer à afficher le nom du nœud racine.
Interface graphique attendue
Template
▸ 00_BaseDeDonnees
▸ 01_Preuves_Originales
▸ 02_Preuves_traitees
▸ 03_Chronologie
▸ 04_Entites
...
Les dossiers peuvent être développés et repliés.
Les fichiers apparaissent dans les branches développées.
Hors périmètre
Ce ticket ne doit pas :
- permettre la sélection d'un nœud ;
- afficher des icônes ;
- ouvrir un fichier ;
- ajouter un menu contextuel ;
- rafraîchir automatiquement l'arbre ;
- modifier le système de fichiers ;
- communiquer avec SQLite.
Contraintes techniques
- GTK4 uniquement ;
- aucun
GtkTreeView; - aucune lecture directe du disque dans
Sidebar; - aucun transfert de propriété du modèle métier ;
- aucun état global ;
- documentation cohérente ;
- compilation sans warning ;
- aucun
Gtk-CRITICAL.
Critères d'acceptation
- Le projet compile sans warning.
make testreste entièrement valide.- La vue est intégrée dans la
Sidebar. - Le titre affiche le nom de l'enquête.
- Tous les dossiers racine apparaissent.
- Les branches peuvent être développées et repliées.
- Les fichiers apparaissent dans les branches.
- L'ouverture successive de deux enquêtes reconstruit correctement l'affichage.
- La fermeture ne produit aucun warning critique.
- Le Core n'est pas modifié.
Tests manuels
- Lancer l'application.
- Ouvrir le dossier
Template. - Vérifier l'affichage des dossiers racine.
- Développer
00_BaseDeDonnees. - Vérifier la présence de
Enquete.sqlite. - Développer plusieurs niveaux.
- Fermer l'application.
- Rouvrir avec une autre enquête.
- Vérifier que l'ancien arbre a disparu.
- Lancer
make test.
Commit attendu
feat(gui): integrate investigation tree into sidebar