#include #define NUM_COLUMNS 1 #define COLUMN_DESCRIPTION 0 static void tree_selection_changed_cb (GtkTreeSelection *selection, gpointer data) { printf("selection\n"); } static GtkTreeModel *create_model(void) { gint i = 0; GtkListStore *store; GtkTreeIter iter; store = gtk_list_store_new (NUM_COLUMNS,G_TYPE_STRING); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COLUMN_DESCRIPTION, "test 1", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COLUMN_DESCRIPTION, "test 2", -1); gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, COLUMN_DESCRIPTION, "test 3", -1); return GTK_TREE_MODEL (store); } static void add_columns (GtkTreeView *treeview) { GtkCellRenderer *renderer; GtkTreeViewColumn *column; GtkTreeModel *model = gtk_tree_view_get_model (treeview); renderer = gtk_cell_renderer_text_new (); column = gtk_tree_view_column_new_with_attributes ("Description", renderer, "text", COLUMN_DESCRIPTION, NULL); gtk_tree_view_column_set_sort_column_id (column, COLUMN_DESCRIPTION); gtk_tree_view_append_column (treeview, column); } int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget *vbox; GtkWidget *label; GtkWidget *sw; GtkTreeModel *model; GtkWidget *treeview; GtkTreeSelection *select; gtk_init(&argc,&argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), "test"); g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_widget_destroyed), &window); gtk_container_set_border_width (GTK_CONTAINER (window), 8); vbox = gtk_vbox_new (FALSE, 8); gtk_container_add (GTK_CONTAINER (window), vbox); sw = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_ETCHED_IN); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0); model = create_model (); treeview = gtk_tree_view_new_with_model (model); g_object_unref (G_OBJECT (model)); gtk_container_add (GTK_CONTAINER (sw), treeview); add_columns (GTK_TREE_VIEW (treeview)); select = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); g_signal_connect (G_OBJECT (select), "changed", G_CALLBACK (tree_selection_changed_cb), NULL); gtk_widget_show_all (window); gtk_main(); }