Intégrer InvestigationTreeView dans la Sidebar. #14

Closed
opened 2026-07-18 08:32:58 +02:00 by fy59 · 0 comments
Owner

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 InvestigationTreeModel au composant ;
  • libérer la structure InvestigationTreeView lors 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 :

  1. créer le composant ;
  2. récupérer son widget racine ;
  3. l'ajouter sous le titre ;
  4. 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 test reste 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

  1. Lancer l'application.
  2. Ouvrir le dossier Template.
  3. Vérifier l'affichage des dossiers racine.
  4. Développer 00_BaseDeDonnees.
  5. Vérifier la présence de Enquete.sqlite.
  6. Développer plusieurs niveaux.
  7. Fermer l'application.
  8. Rouvrir avec une autre enquête.
  9. Vérifier que l'ancien arbre a disparu.
  10. Lancer make test.

Commit attendu

feat(gui): integrate investigation tree into sidebar
## 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 ```text 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 `InvestigationTreeModel` au composant ; - libérer la structure `InvestigationTreeView` lors 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 : ```text InvestigationTreeView ``` Elle doit donc appeler : ```c investigation_tree_view_free(...) ``` lors de sa destruction. En revanche, ni `Sidebar` ni `InvestigationTreeView` ne possèdent : ```text InvestigationTreeModel ``` Le modèle reste la propriété de `Application`. --- ## Fichiers concernés ```text src/widgets/sidebar.c ``` Éventuellement : ```text 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 : ```c InvestigationTreeView *tree_view; ``` Le constructeur doit : 1. créer le composant ; 2. récupérer son widget racine ; 3. l'ajouter sous le titre ; 4. lui permettre d'occuper l'espace disponible. La fonction : ```c sidebar_set_tree_model(...) ``` doit transmettre le modèle à : ```c investigation_tree_view_set_model(...) ``` Le titre de la `Sidebar` peut continuer à afficher le nom du nœud racine. --- ## Interface graphique attendue ```text 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 - [x] Le projet compile sans warning. - [x] `make test` reste entièrement valide. - [x] La vue est intégrée dans la `Sidebar`. - [x] Le titre affiche le nom de l'enquête. - [x] Tous les dossiers racine apparaissent. - [x] Les branches peuvent être développées et repliées. - [x] Les fichiers apparaissent dans les branches. - [x] L'ouverture successive de deux enquêtes reconstruit correctement l'affichage. - [x] La fermeture ne produit aucun warning critique. - [x] Le Core n'est pas modifié. --- ## Tests manuels 1. Lancer l'application. 2. Ouvrir le dossier `Template`. 3. Vérifier l'affichage des dossiers racine. 4. Développer `00_BaseDeDonnees`. 5. Vérifier la présence de `Enquete.sqlite`. 6. Développer plusieurs niveaux. 7. Fermer l'application. 8. Rouvrir avec une autre enquête. 9. Vérifier que l'ancien arbre a disparu. 10. Lancer `make test`. --- ## Commit attendu ```text feat(gui): integrate investigation tree into sidebar ```
fy59 closed this issue 2026-07-18 08:33:54 +02:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: fy59/labfy-investigation#14
No description provided.