1 2 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