Créer le composant InvestigationTreeView. #13

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

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
## 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 ```text 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 ```text include/widgets/investigation_tree_view.h src/widgets/investigation_tree_view.c ``` Aucun autre module ne doit être modifié. --- ## Interface publique ```c typedef struct InvestigationTreeView InvestigationTreeView; ``` ```c InvestigationTreeView *investigation_tree_view_new(void); ``` ```c GtkWidget *investigation_tree_view_get_widget( const InvestigationTreeView *tree_view ); ``` ```c void investigation_tree_view_set_model( InvestigationTreeView *tree_view, const InvestigationTreeModel *tree_model ); ``` ```c 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 - [x] Le projet compile. - [x] Le composant peut être créé. - [x] Le composant fournit un widget GTK. - [x] Un modèle peut être associé. - [x] Les dossiers peuvent être développés. - [x] Les fichiers apparaissent. - [x] Le composant ne possède pas le modèle. - [x] Aucun Gtk-CRITICAL. - [x] Aucun warning. --- ## Commit attendu ```text feat(gui): create investigation tree view ```
fy59 closed this issue 2026-07-18 08:32:13 +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#13
No description provided.