#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; }