83 lines
2.3 KiB
C
83 lines
2.3 KiB
C
/******************************************************************************
|
|
* @file sidebar.h
|
|
* @brief Interface publique du panneau de navigation latéral.
|
|
******************************************************************************/
|
|
|
|
#ifndef LABFY_INVESTIGATION_SIDEBAR_H
|
|
#define LABFY_INVESTIGATION_SIDEBAR_H
|
|
|
|
#include "core/investigation_tree_model.h"
|
|
#include "widgets/investigation_tree_view.h"
|
|
|
|
#include <gtk/gtk.h>
|
|
|
|
/**
|
|
* @brief Représentation opaque du panneau latéral.
|
|
*
|
|
* La structure réelle est définie dans sidebar.c.
|
|
* Les autres modules manipulent uniquement un pointeur vers Sidebar.
|
|
*/
|
|
typedef struct Sidebar Sidebar;
|
|
|
|
/**
|
|
* @brief Crée un nouveau panneau de navigation latéral.
|
|
*
|
|
* @return Un nouveau panneau latéral, ou NULL en cas d'échec.
|
|
*/
|
|
Sidebar *sidebar_new(void);
|
|
|
|
/**
|
|
* @brief Retourne le widget GTK racine du panneau latéral.
|
|
*
|
|
* Le widget retourné appartient au module Sidebar et ne doit pas être libéré
|
|
* directement par le code appelant.
|
|
*
|
|
* @param sidebar Panneau latéral à consulter.
|
|
*
|
|
* @return Le widget GTK racine, ou NULL si sidebar est NULL.
|
|
*/
|
|
GtkWidget *sidebar_get_widget(
|
|
const Sidebar *sidebar
|
|
);
|
|
|
|
/**
|
|
* @brief Associe un modèle d'arborescence à la barre latérale.
|
|
*
|
|
* La barre latérale ne devient pas propriétaire du modèle.
|
|
* Le modèle doit rester valide pendant toute la durée de son utilisation.
|
|
*
|
|
* Pour ce ticket, seul le nom du nœud racine est affiché dans le titre.
|
|
*
|
|
* @param sidebar Barre latérale à mettre à jour.
|
|
* @param tree_model Modèle d'arborescence en lecture seule.
|
|
*/
|
|
void sidebar_set_tree_model(
|
|
Sidebar *sidebar,
|
|
const InvestigationTreeModel *tree_model
|
|
);
|
|
|
|
/**
|
|
* @brief Définit le callback appelé lors de la sélection d'un nœud.
|
|
*
|
|
* La Sidebar transmet simplement ce callback à InvestigationTreeView.
|
|
*
|
|
* @param sidebar Barre latérale à configurer.
|
|
* @param callback Fonction appelée lors d'un changement de sélection.
|
|
* @param user_data Données privées transmises au callback.
|
|
*/
|
|
void sidebar_set_selection_callback(
|
|
Sidebar *sidebar,
|
|
InvestigationTreeViewSelectionCallback callback,
|
|
gpointer user_data
|
|
);
|
|
|
|
/**
|
|
* @brief Libère la structure d'encapsulation du panneau latéral.
|
|
*
|
|
* Cette fonction accepte NULL.
|
|
*
|
|
* @param sidebar Panneau latéral à libérer.
|
|
*/
|
|
void sidebar_free(Sidebar *sidebar);
|
|
|
|
#endif
|