Advertisement
Guest User

GtkTreeView problem

a guest
May 26th, 2014
382
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.29 KB | None | 0 0
  1. #include <gtk/gtk.h>
  2.  
  3. static GtkWidget *tree_view;
  4. static GtkWidget *btn_add_item;
  5. static int row_count = 0;
  6.  
  7. static void btn_add_item_clicked(GtkWidget *button, gpointer data) {
  8.     GtkListStore *model;
  9.     GtkTreeIter iter;
  10.     char text[50];
  11.  
  12.     model = (GtkListStore*) gtk_tree_view_get_model(GTK_TREE_VIEW(tree_view));
  13.     gtk_list_store_append(model,
  14.             &iter);
  15.  
  16.     sprintf(text,
  17.             "%d",
  18.             row_count + 1);
  19.     gtk_list_store_set(model,
  20.             &iter,
  21.             0, g_strdup(text),
  22.             -1);
  23. }
  24.  
  25. static GtkWidget *create_tree_view() {
  26.     GtkWidget *grid;
  27.     GtkWidget *scrolled_window;
  28.     GtkListStore *list_store;
  29.     GtkTreeViewColumn *label_col;
  30.     GtkTreeViewColumn *content_col;
  31.     GtkCellRenderer *content_renderer;
  32.  
  33.     list_store = gtk_list_store_new(2,
  34.             G_TYPE_STRING,
  35.             G_TYPE_INT);
  36.  
  37.     tree_view = gtk_tree_view_new();
  38.     label_col = gtk_tree_view_column_new_with_attributes("Layer",
  39.             gtk_cell_renderer_text_new(),
  40.             NULL);
  41.     content_renderer = gtk_cell_renderer_text_new();
  42.     g_object_set(content_renderer,
  43.             "editable", TRUE,
  44.             NULL);
  45.  
  46.     content_col = gtk_tree_view_column_new_with_attributes("Content",
  47.             content_renderer,
  48.             NULL);
  49.  
  50.     gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view),
  51.             label_col);
  52.     gtk_tree_view_append_column(GTK_TREE_VIEW(tree_view),
  53.             content_col);
  54.  
  55.     gtk_tree_view_set_model(GTK_TREE_VIEW(tree_view),
  56.             GTK_TREE_MODEL(list_store));
  57.    
  58.     scrolled_window = gtk_scrolled_window_new(NULL,
  59.             NULL);
  60.     gtk_container_add(GTK_CONTAINER(scrolled_window),
  61.             tree_view);
  62.  
  63.     btn_add_item = gtk_button_new_with_label("Add");
  64.     g_signal_connect(btn_add_item,
  65.             "clicked",
  66.             G_CALLBACK(btn_add_item_clicked),
  67.             NULL);
  68.  
  69.     grid = gtk_box_new(GTK_ORIENTATION_VERTICAL,
  70.             5);
  71.     gtk_box_pack_start(GTK_BOX(grid),
  72.             scrolled_window,
  73.             TRUE,
  74.             TRUE,
  75.             5);
  76.     gtk_box_pack_start(GTK_BOX(grid),
  77.             btn_add_item,
  78.             FALSE,
  79.             FALSE,
  80.             5);
  81.  
  82.     return grid;
  83. }
  84.  
  85. int main(int argc, char **argv) {
  86.     GtkWidget *window;
  87.     GtkWidget *content_area;
  88.  
  89.     gtk_init(&argc, &argv);
  90.     window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  91.     g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
  92.    
  93.     gtk_container_add(GTK_CONTAINER(window),
  94.             create_tree_view());
  95.     gtk_window_resize(GTK_WINDOW(window),
  96.             800,
  97.             600);
  98.  
  99.     gtk_widget_show_all(window);
  100.     gtk_main();
  101.  
  102.     return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement