/****************************************************************************** * @file investigation_tree_view.h * @brief Interface publique de la vue arborescente d'une enquête. ******************************************************************************/ #ifndef LABFY_INVESTIGATION_INVESTIGATION_TREE_VIEW_H #define LABFY_INVESTIGATION_INVESTIGATION_TREE_VIEW_H #include "core/investigation_tree_model.h" #include /** * @brief Représentation opaque de la vue arborescente d'une enquête. * * La structure réelle est définie dans investigation_tree_view.c. * Les autres modules manipulent uniquement un pointeur vers * InvestigationTreeView. */ typedef struct InvestigationTreeView InvestigationTreeView; /** * @brief Crée une nouvelle vue arborescente vide. * * Aucun modèle métier n'est associé au composant lors de sa création. * * @return Une nouvelle vue, ou NULL si sa création échoue. */ InvestigationTreeView *investigation_tree_view_new(void); /** * @brief Retourne le widget GTK racine de la vue arborescente. * * Le widget retourné appartient au module InvestigationTreeView. * Le code appelant ne doit ni le détruire ni en libérer la référence. * * @param tree_view Vue arborescente à consulter. * * @return Le widget racine, ou NULL si tree_view vaut NULL. */ GtkWidget *investigation_tree_view_get_widget( const InvestigationTreeView *tree_view ); /** * @brief Associe un modèle métier à la vue arborescente. * * La vue ne devient pas propriétaire du modèle. Le modèle doit rester valide * pendant toute la durée de son affichage. * * Passer NULL retire le modèle actuel et vide la vue. * * @param tree_view Vue arborescente à mettre à jour. * @param tree_model Modèle métier en lecture seule, ou NULL. */ void investigation_tree_view_set_model( InvestigationTreeView *tree_view, const InvestigationTreeModel *tree_model ); /** * @brief Libère la structure d'encapsulation de la vue. * * Cette fonction accepte NULL. * * Les objets GTK intégrés à l'arbre de widgets restent gérés par GTK. * * @param tree_view Vue arborescente à libérer. */ void investigation_tree_view_free( InvestigationTreeView *tree_view ); #endif