#include static void edited(GtkCellRendererText *renderer, gchar *arg1, gchar *arg2, gpointer data) { /* g_print("edited: %s %s\n", arg1, arg2);*/ } static void cursor_changed(GtkTreeView *treeView, gpointer data) { /* g_print("cursor changed\n");*/ } static void move_cursor(GtkTreeView *treeView, GtkMovementStep arg1, gint arg2, gpointer data) { GtkTreePath* path; GtkTreeViewColumn* column; gtk_tree_view_get_cursor(treeView, &path, &column); gtk_tree_view_set_cursor(treeView, path, column, TRUE); } static gboolean key_press_event(GtkWidget *widget, GdkEventKey *event, gpointer data) { g_print("key press\n"); return FALSE; } static void destroy(GtkWidget* widget, gpointer data) { gtk_main_quit(); } int main(int argc, char** argv) { GtkWidget* window; GtkWidget* treeView; GtkListStore* model; GtkTreeIter iter; GtkCellRenderer *renderer1, *renderer2; GtkTreeViewColumn *column1, *column2; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(window), 300, 300); g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(destroy), NULL); /* create the model */ model = gtk_list_store_new(3, G_TYPE_STRING, G_TYPE_INT, G_TYPE_BOOLEAN); gtk_list_store_append(model, &iter); gtk_list_store_set(model, &iter, 0, "Foo 1", 1, 23, 2, TRUE, -1); gtk_list_store_append(model, &iter); gtk_list_store_set(model, &iter, 0, "Foo 2", 1, 24, 2, TRUE, -1); gtk_list_store_append(model, &iter); gtk_list_store_set(model, &iter, 0, "Foo 3", 1, 25, 2, TRUE, -1); /* now the treeview */ treeView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model)); g_signal_connect_after(G_OBJECT(treeView), "move-cursor", G_CALLBACK(move_cursor), NULL); g_signal_connect(G_OBJECT(treeView), "cursor-changed", G_CALLBACK(cursor_changed), NULL); g_signal_connect(G_OBJECT(treeView), "key-press-event", G_CALLBACK(key_press_event), NULL); renderer1 = gtk_cell_renderer_text_new(); g_signal_connect_after(G_OBJECT(renderer1), "edited", G_CALLBACK(edited), NULL); column1 = gtk_tree_view_column_new_with_attributes("Column 1", renderer1, "text", 0, "editable", 2, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(treeView), column1); renderer2 = gtk_cell_renderer_text_new(); column2 = gtk_tree_view_column_new_with_attributes("Column 2", renderer2, "text", 1, "editable", 2, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(treeView), column2); gtk_widget_show(GTK_WIDGET(treeView)); gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(treeView)); gtk_widget_show(window); gtk_main(); return 0; }