| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 
 | #include <gtk/gtk.h>
#include <glib/gprintf.h>
 
 
static void cb_row (GtkTreeView *p_treeview,
                    GtkTreePath * p_path,
                    GtkTreeViewColumn * p_column,
                    gpointer p_data)
{
   gchar * p_nom;
   gchar * p_prenom;
   gint id = -1;
   GtkTreeIter iter;
   GtkTreeModel * p_model = (GtkTreeModel *) p_data;
 
 
   if (gtk_tree_model_get_iter (p_model, & iter, p_path))
   {
      gtk_tree_model_get (
         p_model, & iter,
         0, & p_nom,
         1, & p_prenom,
         2, & id,
         -1
      );
 
      g_printf ("%s %s : %d\n", p_nom, p_prenom, id);
   }
}
 
 
int main (int argc, char ** argv)
{
   GtkWidget * p_win = NULL;
   GtkWidget * p_vbox = NULL;
   GtkListStore * p_model = NULL;
   GtkTreeViewColumn * p_col = NULL;
   GtkWidget * p_treeview = NULL;
   GtkCellRenderer * p_renderer = NULL;
   GtkTreeIter iter;
   gint i = 0;
 
 
   gtk_init (& argc, & argv);
 
 
   p_win = gtk_window_new        (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_title          (GTK_WINDOW (p_win), "GtkTreeView...");
   gtk_window_set_position       (GTK_WINDOW (p_win), GTK_WIN_POS_CENTER);
   gtk_window_set_default_size   (GTK_WINDOW (p_win), 320, 200);
   g_signal_connect              (p_win, "destroy", gtk_main_quit, NULL);
   p_vbox = gtk_vbox_new         (FALSE, 0);
   gtk_container_add             (GTK_CONTAINER (p_win), p_vbox);
 
 
   p_model = gtk_list_store_new (
      3, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_INT
   );
   p_treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL (p_model));
   p_col = gtk_tree_view_column_new ();
   gtk_box_pack_start (GTK_BOX (p_vbox), p_treeview, TRUE, TRUE, 0);
 
   for (i = 0; i < 3; i++)
   {
      p_renderer = gtk_cell_renderer_text_new ();
 
      gtk_tree_view_column_pack_start (
         p_col,
         p_renderer,
         FALSE);
 
      gtk_tree_view_column_set_attributes (
         p_col,
         p_renderer,
         "text",
         i,
         NULL);
   }
 
   gtk_tree_view_append_column (GTK_TREE_VIEW (p_treeview), p_col);
 
 
   gtk_list_store_append (p_model, & iter);
   gtk_list_store_set (
      p_model, & iter,
      0, "Dupont", 1, "Marcel", 2, 154567,
      -1
   );
   gtk_list_store_append (p_model, & iter);
   gtk_list_store_set (
      p_model, & iter,
      0, "Duchnoc", 1, "Henri", 2, 487845,
      -1
   );
   gtk_list_store_append (p_model, & iter);
   gtk_list_store_set (
      p_model, & iter,
      0, "Machin", 1, "Truc", 2, 444445,
      -1
   );
 
   g_signal_connect (
      G_OBJECT (p_treeview), "row-activated",
      G_CALLBACK (cb_row), (gpointer) p_model
   );
 
 
   gtk_widget_show_all (p_win);
   gtk_main ();
 
 
   return 0;
} | 
Partager