From 02ac6dc595efb8845e77b2dd7a4c8d63fb2aa6f1 Mon Sep 17 00:00:00 2001 From: Markus Koch Date: Tue, 31 Jan 2017 21:31:31 +0100 Subject: [PATCH] Configured entryListView --- glade/mainWindow.glade | 35 +++++++++++++--------- src/mainwindow.c | 68 ++++++++++++++++++++++++++++++++++++++++++ src/mainwindow.h | 2 ++ 3 files changed, 91 insertions(+), 14 deletions(-) diff --git a/glade/mainWindow.glade b/glade/mainWindow.glade index 1307fe2..a6ac40b 100644 --- a/glade/mainWindow.glade +++ b/glade/mainWindow.glade @@ -4,15 +4,13 @@ - - - - + + + + + + - - - - Test text for debugging. @@ -122,23 +120,32 @@ vertical True - + True True - entryListStore - - + in + True + + + 300 + True + True + entryListStore + + + + - False + True True 640 - 480 + 320 True True False diff --git a/src/mainwindow.c b/src/mainwindow.c index e84ca84..876409b 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -1,5 +1,69 @@ #include "mainwindow.h" +enum { + COL_TITLE = 0, + COL_DATE, + COL_TAGS, + COL_COUNT +}; + +static void mainWindow_test_treeView(struct mainWindow *mainWindow) +{ + GtkCellRenderer *renderer; + GtkTreeIter iter; + GtkTreeSortable *sortable; + GtkTreeViewColumn *col; + + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(mainWindow->entryListView, -1, "Title", renderer, + "text", COL_TITLE, NULL); + col = gtk_tree_view_get_column(mainWindow->entryListView, COL_TITLE); + gtk_tree_view_column_set_resizable(col, 1); + gtk_tree_view_column_set_sort_column_id(col, COL_TITLE); + + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(mainWindow->entryListView, -1, "Date", renderer, + "text", COL_DATE, NULL); + col = gtk_tree_view_get_column(mainWindow->entryListView, COL_DATE); + gtk_tree_view_column_set_resizable(col, 1); + gtk_tree_view_column_set_sort_column_id(col, COL_DATE); + + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_insert_column_with_attributes(mainWindow->entryListView, -1, "Tags", renderer, + "text", COL_TAGS, NULL); + col = gtk_tree_view_get_column(mainWindow->entryListView, COL_TAGS); + gtk_tree_view_column_set_resizable(col, 1); + gtk_tree_view_column_set_sort_column_id(col, COL_TAGS); + + /*gtk_tree_sortable_set_sort_func(sortable, COL_DATE, mainWindow_sort_date_compare_func, + GINT_TO_POINTER(COL_DATE), NULL);*/ + + /* + * Code just for debugging - some test values + */ + gtk_list_store_append(mainWindow->entryListStore, &iter); + gtk_list_store_set (mainWindow->entryListStore, &iter, + COL_TITLE, "ZA Test entry longer title", + COL_DATE, "2016-05-12", + COL_TAGS, "X", + -1); + gtk_list_store_append(mainWindow->entryListStore, &iter); + gtk_list_store_set (mainWindow->entryListStore, &iter, + COL_TITLE, "baz", + COL_DATE, "2016-11-22", + COL_TAGS, "A", + -1); + gtk_list_store_append(mainWindow->entryListStore, &iter); + gtk_list_store_set (mainWindow->entryListStore, &iter, + COL_TITLE, "Foo", + COL_DATE, "1998-12-03", + COL_TAGS, "F", + -1); + + sortable = GTK_TREE_SORTABLE(mainWindow->entryListStore); + gtk_tree_sortable_set_sort_column_id(sortable, COL_DATE, GTK_SORT_DESCENDING); +} + struct mainWindow *mainWindow_new() { GtkBuilder *builder; @@ -14,10 +78,14 @@ struct mainWindow *mainWindow_new() mainWindow->dateStart = GTK_WIDGET(gtk_builder_get_object(builder, "dateStart")); mainWindow->dateEnd = GTK_WIDGET(gtk_builder_get_object(builder, "dateEnd")); mainWindow->entryText = GTK_WIDGET(gtk_builder_get_object(builder, "entryText")); + mainWindow->entryListView = GTK_TREE_VIEW(gtk_builder_get_object(builder, "entryListView")); + mainWindow->entryListStore = GTK_LIST_STORE(gtk_builder_get_object(builder, "entryListStore")); gtk_builder_connect_signals(builder, NULL); g_object_unref(G_OBJECT(builder)); + mainWindow_test_treeView(mainWindow); + return mainWindow; } diff --git a/src/mainwindow.h b/src/mainwindow.h index d655c55..b7787cb 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -11,6 +11,8 @@ struct mainWindow { GtkWidget *dateStart; GtkWidget *dateEnd; GtkWidget *entryText; + GtkTreeView *entryListView; + GtkListStore *entryListStore; }; struct mainWindow *mainWindow_new();