Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <gtk/gtk.h>
- #if GTK_MAJOR_VERSION == 2
- static void on_up(GtkWidget *btn, gpointer user_data)
- {
- GtkTreeSelection *sel = GTK_TREE_SELECTION(user_data);
- GtkTreeModel *model;
- GtkTreeIter current;
- GtkTreePath *path;
- gtk_tree_selection_get_selected(sel, &model, ¤t);
- path = gtk_tree_model_get_path(model, ¤t);
- gtk_tree_path_prev(path);
- gtk_tree_selection_select_path(sel, path);
- gtk_tree_path_free(path);
- }
- static void on_down(GtkWidget *btn, gpointer user_data)
- {
- GtkTreeSelection *sel = GTK_TREE_SELECTION(user_data);
- GtkTreeModel *model;
- GtkTreeIter current;
- GtkTreePath *path;
- gtk_tree_selection_get_selected(sel, &model, ¤t);
- path = gtk_tree_model_get_path(model, ¤t);
- gtk_tree_path_next(path);
- gtk_tree_selection_select_path(sel, path);
- gtk_tree_path_free(path);
- }
- #elif GTK_MAJOR_VERSION == 3
- static void on_up(GtkWidget *btn, gpointer user_data)
- {
- GtkTreeSelection *sel = GTK_TREE_SELECTION(user_data);
- GtkTreeModel *model;
- GtkTreeIter current;
- gtk_tree_selection_get_selected(sel, &model, ¤t);
- if (gtk_tree_model_iter_previous(model, ¤t))
- gtk_tree_selection_select_iter(sel, ¤t);
- }
- static void on_down(GtkWidget *btn, gpointer user_data)
- {
- GtkTreeSelection *sel = GTK_TREE_SELECTION(user_data);
- GtkTreeModel *model;
- GtkTreeIter current;
- gtk_tree_selection_get_selected(sel, &model, ¤t);
- if (gtk_tree_model_iter_next(model, ¤t))
- gtk_tree_selection_select_iter(sel, ¤t);
- }
- #endif
- int main(int argc, char **argv)
- {
- gtk_init(&argc, &argv);
- GtkListStore *store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_BOOLEAN);
- GtkTreeIter iter;
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter, 0, "One item", 1, FALSE, -1);
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter, 0, "Two items", 1, TRUE, -1);
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter, 0, "Last item", 1, FALSE, -1);
- GtkWidget *view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
- g_object_unref(G_OBJECT(store));
- GtkCellRenderer *render = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes
- (GTK_TREE_VIEW(view), -1, "String", render, "text", 0, NULL);
- gtk_tree_view_insert_column_with_attributes
- (GTK_TREE_VIEW(view), -1, "Bool", render, "text", 1, NULL);
- #if GTK_MAJOR_VERSION == 2
- GtkWidget *vbox = gtk_vbox_new(FALSE, 4);
- GtkWidget *hbox = gtk_hbox_new(FALSE, 4);
- #else
- GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);
- GtkWidget *hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 4);
- #endif
- GtkWidget *btn_up = gtk_button_new_with_label("Up");
- GtkWidget *btn_down = gtk_button_new_with_label("Down");
- gtk_box_pack_start(GTK_BOX(vbox), btn_up, FALSE, FALSE, 4);
- gtk_box_pack_start(GTK_BOX(vbox), btn_down, FALSE, FALSE, 4);
- GtkTreeSelection *selection =
- gtk_tree_view_get_selection(GTK_TREE_VIEW(view));
- g_signal_connect
- (G_OBJECT(btn_up), "clicked", G_CALLBACK(on_up), selection);
- g_signal_connect
- (G_OBJECT(btn_down), "clicked", G_CALLBACK(on_down), selection);
- gtk_box_pack_start(GTK_BOX(hbox), view, TRUE, TRUE, 4);
- gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 4);
- GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_container_add(GTK_CONTAINER(window), hbox);
- gtk_widget_show_all(window);
- g_signal_connect(window, "delete-event", gtk_main_quit, NULL);
- gtk_main();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement