From 4ce822ee70df1e501dfe0f8fd54b9dd1f1e41a21 Mon Sep 17 00:00:00 2001 From: grayTerminal-sh Date: Tue, 14 Jul 2026 17:35:35 +0200 Subject: [PATCH] feat(gui): display selected node path --- docs/tickets/closed/TICKET-018.md | 196 ++++++++++++++++++++++++++++++ labfy-investigation | Bin 98032 -> 98424 bytes src/widgets/workspace.c | 29 +++++ 3 files changed, 225 insertions(+) create mode 100644 docs/tickets/closed/TICKET-018.md diff --git a/docs/tickets/closed/TICKET-018.md b/docs/tickets/closed/TICKET-018.md new file mode 100644 index 0000000..a02d2ae --- /dev/null +++ b/docs/tickets/closed/TICKET-018.md @@ -0,0 +1,196 @@ +# Ticket #018 + +## Titre + +Afficher le chemin complet du nœud sélectionné dans le Workspace. + +--- + +## Objectif + +Afficher le chemin complet du fichier ou du dossier actuellement sélectionné. + +Le `Workspace` doit utiliser exclusivement le getter : + +```c +investigation_node_get_path() +``` + +Aucune reconstruction du chemin ne doit être réalisée dans la couche graphique. + +--- + +## Architecture + +```text +InvestigationNode + │ + ▼ +Application + │ + ▼ +MainWindow + │ + ▼ +Workspace +``` + +Le Core reste propriétaire des informations. + +Le `Workspace` les affiche uniquement. + +--- + +## Responsabilités + +### InvestigationNode + +Aucune modification. + +### Application + +Aucune modification. + +### MainWindow + +Aucune modification. + +### Workspace + +Le module doit : + +- afficher le chemin complet du nœud sélectionné ; +- masquer cette information lorsqu'aucun nœud n'est sélectionné. + +--- + +## Fichiers concernés + +```text +src/widgets/workspace.c +``` + +Aucune modification du Core. + +--- + +## Interface publique + +Aucune modification. + +L'API du `Workspace` reste inchangée. + +--- + +## Affichage attendu + +### Dossier + +```text +00_BaseDeDonnees + +Chemin : +/home/fy59/Documents/Enquetes/Test/00_BaseDeDonnees + +Type : +Dossier + +Parent : +Template + +Enfants : +2 +``` + +### Fichier + +```text +Enquete.sqlite + +Chemin : +/home/fy59/Documents/Enquetes/Test/00_BaseDeDonnees/Enquete.sqlite + +Type : +Fichier + +Parent : +00_BaseDeDonnees +``` + +--- + +## Comportement attendu + +Le chemin affiché doit toujours être identique à : + +```c +investigation_node_get_path(node) +``` + +Le `Workspace` ne doit jamais construire lui-même : + +```text +parent + "/" + nom +``` + +--- + +## Hors périmètre + +Ce ticket ne doit pas : + +- ouvrir le fichier ; +- vérifier que le chemin existe encore ; +- afficher la taille ; +- afficher les permissions ; +- afficher la date de modification ; +- ouvrir le gestionnaire de fichiers. + +--- + +## Contraintes techniques + +- GTK4 uniquement ; +- aucun état global ; +- aucune allocation mémoire supplémentaire pour le chemin ; +- utiliser directement le pointeur retourné par + `investigation_node_get_path()`; +- documentation Doxygen ; +- compilation sans warning. + +--- + +## Critères d'acceptation + +- [ ] Le projet compile sans warning. +- [ ] `make test` reste valide. +- [ ] Le chemin du dossier est affiché. +- [ ] Le chemin du fichier est affiché. +- [ ] La page d'accueil reste inchangée. +- [ ] Aucun chemin n'est reconstruit dans la GUI. +- [ ] Aucun `Gtk-CRITICAL`. + +--- + +## Tests + +1. Lancer l'application. +2. Sélectionner un dossier. +3. Vérifier le chemin affiché. +4. Sélectionner un fichier. +5. Vérifier le chemin affiché. +6. Comparer avec : + +```c +investigation_node_get_path(node) +``` + +7. Vérifier que `make test` reste valide. + +--- + +## Commit attendu + +```text +feat(gui): display selected node path +``` diff --git a/labfy-investigation b/labfy-investigation index 5c29528ee908d7d1f72653fd07d5a1c03229956c..d827f497b380efc3429ff12d111b28a49692cda6 100755 GIT binary patch delta 13195 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 diff --git a/src/widgets/workspace.c b/src/widgets/workspace.c index 9abb60a..40f7513 100644 --- a/src/widgets/workspace.c +++ b/src/widgets/workspace.c @@ -26,6 +26,7 @@ struct Workspace GtkWidget *node_page; GtkWidget *node_name_label; + GtkWidget *node_path_label; GtkWidget *node_type_label; GtkWidget *node_parent_label; GtkWidget *node_children_label; @@ -181,6 +182,7 @@ Workspace *workspace_new(void) ); workspace->node_name_label = gtk_label_new(NULL); + workspace->node_path_label = gtk_label_new(NULL); workspace->node_type_label = gtk_label_new(NULL); workspace->node_parent_label = gtk_label_new(NULL); workspace->node_children_label = gtk_label_new(NULL); @@ -190,6 +192,26 @@ Workspace *workspace_new(void) workspace->node_name_label ); + gtk_box_append( + GTK_BOX(workspace->node_page), + workspace->node_path_label + ); + + gtk_label_set_wrap( + GTK_LABEL(workspace->node_path_label), + TRUE + ); + + gtk_label_set_selectable( + GTK_LABEL(workspace->node_path_label), + TRUE + ); + + gtk_widget_set_halign( + workspace->node_path_label, + GTK_ALIGN_CENTER + ); + gtk_box_append( GTK_BOX(workspace->node_page), workspace->node_type_label @@ -236,6 +258,7 @@ void workspace_set_selected_node( const char *node_name = NULL; const InvestigationNode *parent_node = NULL; const char *parent_name = NULL; + const char *node_path = NULL; InvestigationNodeType node_type; size_t children_count = 0; @@ -255,6 +278,7 @@ void workspace_set_selected_node( } node_name = investigation_node_get_name(node); + node_path = investigation_node_get_path(node); node_type = investigation_node_get_type(node); parent_node = investigation_node_get_parent(node); @@ -263,6 +287,11 @@ void workspace_set_selected_node( node_name != NULL ? node_name : "(sans nom)" ); + gtk_label_set_text( + GTK_LABEL(workspace->node_path_label), + node_path != NULL ? node_path : "(chemin indisponible)" + ); + if (node_type == INVESTIGATION_NODE_DIRECTORY) { type_text = "Type : dossier";