labfy-investigation/docs/tickets/open/TICKET-012.md
2026-07-14 08:46:45 +02:00

2.9 KiB

Ticket #012

Titre

Créer le composant InvestigationTreeView.


Objectif

Créer un composant graphique spécialisé chargé d'afficher un InvestigationTreeModel à l'aide des widgets modernes de GTK4.

Ce composant servira d'adaptateur entre le modèle métier et les widgets GTK.

À ce stade, il n'est pas encore intégré dans la Sidebar.


Architecture

InvestigationTreeModel
          │
          ▼
InvestigationTreeView
          │
          ▼
GtkTreeListModel
          │
          ▼
GtkListView

Le composant appartient à la couche graphique.

Le Core ne dépend jamais de GTK.


Responsabilités

Le module doit :

  • recevoir un InvestigationTreeModel ;
  • créer un GtkTreeListModel ;
  • créer un GtkListView ;
  • utiliser un GtkSignalListItemFactory ;
  • utiliser un GtkTreeExpander ;
  • afficher le nom des nœuds ;
  • permettre le développement et le repli des dossiers ;
  • fournir un widget GTK réutilisable.

Hors périmètre

Ce ticket ne doit pas :

  • intégrer le composant dans la Sidebar ;
  • permettre la sélection d'un nœud ;
  • afficher des icônes ;
  • ouvrir des fichiers ;
  • modifier l'arborescence ;
  • communiquer avec SQLite ;
  • rafraîchir automatiquement le modèle.

Principe de propriété

Le composant ne devient jamais propriétaire du InvestigationTreeModel.

Il reçoit uniquement une référence.

En revanche, il est propriétaire de tous les objets GTK qu'il crée.


Fichiers concernés

include/widgets/investigation_tree_view.h
src/widgets/investigation_tree_view.c

Aucun autre module ne doit être modifié.


Interface publique

typedef struct InvestigationTreeView InvestigationTreeView;
InvestigationTreeView *investigation_tree_view_new(void);
GtkWidget *investigation_tree_view_get_widget(
    const InvestigationTreeView *tree_view
);
void investigation_tree_view_set_model(
    InvestigationTreeView *tree_view,
    const InvestigationTreeModel *tree_model
);
void investigation_tree_view_free(
    InvestigationTreeView *tree_view
);

Dépendances GTK

Le composant doit utiliser exclusivement :

  • GtkTreeListModel
  • GtkListView
  • GtkTreeExpander
  • GtkSignalListItemFactory

Aucun widget GTK3.


Contraintes techniques

  • C17
  • GTK4 uniquement
  • aucune variable globale
  • aucune dépendance vers SQLite
  • aucune lecture directe du système de fichiers
  • documentation Doxygen
  • compilation sans warning
  • aucune fuite mémoire

Critères d'acceptation

  • Le projet compile.
  • Le composant peut être créé.
  • Le composant fournit un widget GTK.
  • Un modèle peut être associé.
  • Les dossiers peuvent être développés.
  • Les fichiers apparaissent.
  • Le composant ne possède pas le modèle.
  • Aucun Gtk-CRITICAL.
  • Aucun warning.

Commit attendu

feat(gui): create investigation tree view