diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-05-11 07:04:39 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-05-11 14:43:24 +0200 |
commit | 7f9620ed8c76494f79e75e2303a2b0c13180e992 (patch) | |
tree | 754757e0ee2181e437a9f1ce50ffd1dc6f537294 /lib/gtk-experiment-widgets | |
parent | e41a22d50aaa100638177fe882589bb54434d1ad (diff) | |
download | experiment-player-7f9620ed8c76494f79e75e2303a2b0c13180e992.tar.gz |
fill experiment navigator with sample data
Diffstat (limited to 'lib/gtk-experiment-widgets')
-rw-r--r-- | lib/gtk-experiment-widgets/gtk-experiment-navigator.c | 82 |
1 files changed, 81 insertions, 1 deletions
diff --git a/lib/gtk-experiment-widgets/gtk-experiment-navigator.c b/lib/gtk-experiment-widgets/gtk-experiment-navigator.c index b37cb4f..d9cb05d 100644 --- a/lib/gtk-experiment-widgets/gtk-experiment-navigator.c +++ b/lib/gtk-experiment-widgets/gtk-experiment-navigator.c @@ -4,6 +4,9 @@ #include <assert.h> +#include <glib.h> +#include <glib/gprintf.h> + #include <gtk/gtk.h> #include <experiment-reader.h> @@ -12,6 +15,12 @@ static void gtk_experiment_navigator_class_init(GtkExperimentNavigatorClass *klass); static void gtk_experiment_navigator_init(GtkExperimentNavigator *klass); +static void time_cell_data_cb(GtkTreeViewColumn *col, + GtkCellRenderer *renderer, + GtkTreeModel *model, GtkTreeIter *iter, + gpointer user_data); + + static inline void select_time(GtkExperimentNavigator *navi, gint64 selected_time); enum { @@ -68,11 +77,82 @@ gtk_experiment_navigator_class_init(GtkExperimentNavigatorClass *klass) static void gtk_experiment_navigator_init(GtkExperimentNavigator *klass) { - GtkTreeView *view = GTK_TREE_VIEW(klass); + GtkTreeView *view = GTK_TREE_VIEW(klass); + GtkTreeViewColumn *col; + GtkCellRenderer *renderer; + + GtkTreeStore *store; + GtkTreeIter toplevel, child; + + /* + * Create tree store (and model) + */ + store = gtk_tree_store_new(NUM_COLS, G_TYPE_STRING, G_TYPE_UINT64); + + /* + * Create some sample(!) store rows and content + */ + gtk_tree_store_append(store, &toplevel, NULL); + gtk_tree_store_set(store, &toplevel, + COL_SECTION_NAME, "FOO", -1); + + gtk_tree_store_append(store, &child, &toplevel); + gtk_tree_store_set(store, &child, + COL_SECTION_NAME, "BAR", + COL_TIME, 5*60*1000 /* 5 minutes */, + -1); + + /* + * Create TreeView column corresponding to the TreeStore column COL_SECTION_NAME + */ + col = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(col, "Name"); + gtk_tree_view_append_column(view, col); + + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + gtk_tree_view_column_add_attribute(col, renderer, "text", COL_SECTION_NAME); + + /* + * Create TreeView column corresponding to the TreeStore column COL_TIME + */ + col = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(col, "Time"); + gtk_tree_view_append_column(view, col); + + renderer = gtk_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + /* Cell data function for custom formatting */ + gtk_tree_view_column_set_cell_data_func(col, renderer, time_cell_data_cb, + NULL, NULL); + + /* + * Set TreeView model to store's model + */ + gtk_tree_view_set_model(view, GTK_TREE_MODEL(store)); + /* destroy store/model automatically with view */ + g_object_unref(store); /* TODO */ } +static void +time_cell_data_cb(GtkTreeViewColumn *col __attribute__((unused)), + GtkCellRenderer *renderer, + GtkTreeModel *model, GtkTreeIter *iter, + gpointer user_data __attribute__((unused))) +{ + gint64 time_val; + gchar buf[20]; + + gtk_tree_model_get(model, iter, + COL_TIME, &time_val, -1); + + g_snprintf(buf, sizeof(buf), "%lldms", time_val); /* FIXME */ + + g_object_set(renderer, "text", buf, NULL); +} + static inline void select_time(GtkExperimentNavigator *navi, gint64 selected_time) { |