#include <gtk/gtk.h>
GtkTreeStore *pTreeStore;
/* =============================================================================
* Clic sur le TreeView ********************************************************
==============================================================================*/
//gboolean TreeView_Click()
gboolean TreeView_Click (GtkWidget *TV, GdkEventButton *event, gpointer userdata)
{
GtkTreeModel *pTreeModel;
GtkTreePath *path;
GtkTreeIter iter;
//gchar *str = NULL;
gint id;
//g_print("clic\n");
pTreeModel = gtk_tree_view_get_model (GTK_TREE_VIEW (TV));
if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(TV),(gint) event->x, (gint) event->y, &path, NULL, NULL, NULL))
{
if (gtk_tree_model_get_iter(pTreeModel, &iter, path))
{
//gtk_tree_model_get (pTreeModel, &iter, 2, &str, -1);
//g_print("str = %s\n",str);
//g_free (str);
gtk_tree_model_get (pTreeModel, &iter, 0, &id, -1);
g_print("id = %d\n",id);
}
}
return FALSE;
}
/* =============================================================================
* TreeView: Création **********************************************************
==============================================================================*/
GtkWidget* Creer_TreeView(GtkWidget *fen)//, GtkWidget *panneau)
{
GtkWidget *pTView = NULL;
GtkWidget *pScrollWin = NULL;
GtkCellRenderer *p_renderer = NULL;
GtkTreeViewColumn *p_column = NULL;
// Crée scrolled window pour treeview
pScrollWin = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (pScrollWin),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add (GTK_CONTAINER (fen), pScrollWin);
pTreeStore = gtk_tree_store_new (3, G_TYPE_INT, GDK_TYPE_PIXBUF, G_TYPE_STRING);
// Crée treeview
pTView = gtk_tree_view_new_with_model (GTK_TREE_MODEL (pTreeStore));
gtk_container_add (GTK_CONTAINER (pScrollWin), pTView);
// colonne d'index
p_renderer = gtk_cell_renderer_text_new ();
p_column = gtk_tree_view_column_new_with_attributes (NULL, p_renderer, "int", 0, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (pTView), p_column);
gtk_tree_view_column_set_visible(p_column, FALSE);
// colonne image
p_renderer = gtk_cell_renderer_pixbuf_new ();
p_column = gtk_tree_view_column_new_with_attributes (NULL, p_renderer, "pixbuf", 1, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (pTView), p_column);
//colonne texte
p_renderer = gtk_cell_renderer_text_new ();
p_column = gtk_tree_view_column_new_with_attributes (NULL, p_renderer, "text", 2, NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW (pTView), p_column);
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (pTView), FALSE);
//g_signal_connect (G_OBJECT (pTView), "row-activated", G_CALLBACK (TreeView_Click), NULL);
g_signal_connect(pTView, "button-press-event", G_CALLBACK(TreeView_Click), NULL);
return pTView;
}
/* =============================================================================
* TreeView: Ajouter Item au Treeview *****************************************
==============================================================================*/
GtkTreeIter Ajouter_TreeviewItem(GtkWidget *pTView, GtkTreeIter *parent, gint id, gchar* unNom, gchar *img)
{
GtkTreeIter fils;
GdkPixbuf *pImg;
pImg = gdk_pixbuf_new_from_file (img, NULL);
gtk_tree_store_append (pTreeStore, &fils, parent);
gtk_tree_store_set (pTreeStore, &fils, 0,id, 1,pImg, 2,unNom, -1);
return fils;
}
/* =============================================================================
* Point d'entrée **************************************************************
==============================================================================*/
int main (int argc, char **argv)
{
GtkWidget *fenetre;
GtkWidget *Tview;
GtkTreeIter iter;
gtk_init(&argc, &argv);
fenetre = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(fenetre), 200, 200);
g_signal_connect(fenetre, "delete_event", gtk_main_quit, NULL);
Tview = Creer_TreeView(fenetre);
iter = Ajouter_TreeviewItem(Tview, NULL ,0, "Dossier 1", "../onglets/img/comp.png");
Ajouter_TreeviewItem(Tview, &iter,1, "Fils 1-1" , "../onglets/img/icon.gif");
Ajouter_TreeviewItem(Tview, &iter,2, "Fils 1-2" , "../onglets/img/icon.gif");
iter = Ajouter_TreeviewItem(Tview, NULL ,3, "Dossier 2", "../onglets/img/comp.png");
Ajouter_TreeviewItem(Tview, &iter,4, "Fils 2-1" , "../onglets/img/icon.gif");
Ajouter_TreeviewItem(Tview, &iter,5, "Fils 2-2" , "../onglets/img/icon.gif");
gtk_tree_view_expand_all(GTK_TREE_VIEW (Tview));
gtk_widget_show_all(fenetre);
gtk_main();
return 0;
}