diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-05-11 04:20:49 +0200 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-05-11 04:42:36 +0200 |
commit | d0860cb211302c0c214b3b67296f22f78ea06085 (patch) | |
tree | b2e9654db325942660ee6cb1c7cafcbf52e54458 /lib/gtk-experiment-widgets/gtk-experiment-navigator.c | |
parent | c8826d1e01297aa71f966d9d290a4ebaf7eaaecf (diff) | |
download | experiment-player-d0860cb211302c0c214b3b67296f22f78ea06085.tar.gz |
stubs for experiment navigator widget (to be implemented by Jens L.)
* will be part of a larger library of experiment-player-related widgets (libgtk-experiment-widgets)
* an experiment-transcript widget will be part of that library later on
* Glade catalog for entire library; installed into experiment-player datadir
* preliminary stub for libexperiment-reader, a gobject-based library that abstracts from reading the "Folker"-based transcript files
Diffstat (limited to 'lib/gtk-experiment-widgets/gtk-experiment-navigator.c')
-rw-r--r-- | lib/gtk-experiment-widgets/gtk-experiment-navigator.c | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/lib/gtk-experiment-widgets/gtk-experiment-navigator.c b/lib/gtk-experiment-widgets/gtk-experiment-navigator.c new file mode 100644 index 0000000..b37cb4f --- /dev/null +++ b/lib/gtk-experiment-widgets/gtk-experiment-navigator.c @@ -0,0 +1,107 @@ +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include <assert.h> + +#include <gtk/gtk.h> +#include <experiment-reader.h> + +#include "gtk-experiment-navigator.h" + +static void gtk_experiment_navigator_class_init(GtkExperimentNavigatorClass *klass); +static void gtk_experiment_navigator_init(GtkExperimentNavigator *klass); + +static inline void select_time(GtkExperimentNavigator *navi, gint64 selected_time); + +enum { + TIME_SELECTED_SIGNAL, + LAST_SIGNAL +}; +static guint gtk_experiment_navigator_signals[LAST_SIGNAL] = {0}; + +enum { + COL_SECTION_NAME, + COL_TIME, + NUM_COLS +}; + +GType +gtk_experiment_navigator_get_type(void) +{ + static GType type = 0; + + if (!type) { + /* FIXME: destructor needed */ + const GTypeInfo info = { + sizeof(GtkExperimentNavigatorClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc)gtk_experiment_navigator_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof(GtkExperimentNavigator), + 0, /* n_preallocs */ + (GInstanceInitFunc)gtk_experiment_navigator_init, + }; + + type = g_type_register_static(GTK_TYPE_TREE_VIEW, + "GtkExperimentNavigator", &info, 0); + } + + return type; +} + +static void +gtk_experiment_navigator_class_init(GtkExperimentNavigatorClass *klass) +{ + gtk_experiment_navigator_signals[TIME_SELECTED_SIGNAL] = + g_signal_new("time-selected", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET(GtkExperimentNavigatorClass, time_selected), + NULL, NULL, + g_cclosure_marshal_VOID__LONG, G_TYPE_NONE, + 1, G_TYPE_INT64); +} + +static void +gtk_experiment_navigator_init(GtkExperimentNavigator *klass) +{ + GtkTreeView *view = GTK_TREE_VIEW(klass); + + /* TODO */ +} + +static inline void +select_time(GtkExperimentNavigator *navi, gint64 selected_time) +{ + g_signal_emit(navi, gtk_experiment_navigator_signals[TIME_SELECTED_SIGNAL], 0, + selected_time); +} + +/* + * API + */ + +GtkWidget * +gtk_experiment_navigator_new(void) +{ + return GTK_WIDGET(g_object_new(GTK_TYPE_EXPERIMENT_NAVIGATOR, NULL)); +} + +gboolean +gtk_experiment_navigator_load(GtkExperimentNavigator *navi, + ExperimentReader *exp) +{ + /* TODO */ + return TRUE; +} + +gboolean +gtk_experiment_navigator_load_filename(GtkExperimentNavigator *navi, + const gchar *exp) +{ + /* TODO */ + return TRUE; +} |