aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Makefile.am3
-rw-r--r--lib/experiment-reader/Makefile.am2
-rw-r--r--lib/experiment-reader/experiment-reader.h9
-rw-r--r--lib/gtk-experiment-widgets/Makefile.am21
-rw-r--r--lib/gtk-experiment-widgets/gtk-experiment-navigator.c107
-rw-r--r--lib/gtk-experiment-widgets/gtk-experiment-navigator.h51
-rw-r--r--lib/gtk-experiment-widgets/gtk-experiment-widgets-catalog.xml19
7 files changed, 211 insertions, 1 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 743e585..e5eacdd 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1,2 +1,3 @@
-SUBDIRS = gtk-vlc-player
+SUBDIRS = gtk-vlc-player \
+ experiment-reader gtk-experiment-widgets
diff --git a/lib/experiment-reader/Makefile.am b/lib/experiment-reader/Makefile.am
new file mode 100644
index 0000000..d49eb8e
--- /dev/null
+++ b/lib/experiment-reader/Makefile.am
@@ -0,0 +1,2 @@
+
+include_HEADERS = experiment-reader.h
diff --git a/lib/experiment-reader/experiment-reader.h b/lib/experiment-reader/experiment-reader.h
new file mode 100644
index 0000000..27fd885
--- /dev/null
+++ b/lib/experiment-reader/experiment-reader.h
@@ -0,0 +1,9 @@
+#ifndef __EXPERIMENT_READER_H
+#define __EXPERIMENT_READER_H
+
+#include <glib-object.h>
+
+/* TODO */
+typedef int ExperimentReader;
+
+#endif
diff --git a/lib/gtk-experiment-widgets/Makefile.am b/lib/gtk-experiment-widgets/Makefile.am
new file mode 100644
index 0000000..4e2f4ba
--- /dev/null
+++ b/lib/gtk-experiment-widgets/Makefile.am
@@ -0,0 +1,21 @@
+AM_CFLAGS = -Wall
+
+lib_LTLIBRARIES = libgtk-experiment-widgets.la
+libgtk_experiment_widgets_la_SOURCES = gtk-experiment-navigator.c \
+ gtk-experiment-navigator.h
+
+libgtk_experiment_widgets_la_CFLAGS = $(AM_CFLAGS)
+libgtk_experiment_widgets_la_CPPFLAGS =
+libgtk_experiment_widgets_la_LDFLAGS = -no-undefined -shared -bindir @bindir@ \
+ -avoid-version
+libgtk_experiment_widgets_la_LIBADD =
+
+libgtk_experiment_widgets_la_CFLAGS += @LIBGTK_CFLAGS@
+libgtk_experiment_widgets_la_LIBADD += @LIBGTK_LIBS@
+
+libgtk_experiment_widgets_la_CPPFLAGS += -I@top_srcdir@/lib/experiment-reader
+#libgtk_experiment_widgets_la_LIBADD += @top_srcdir@/lib/experiment-reader/libexperiment-reader.la
+
+include_HEADERS = gtk-experiment-navigator.h
+
+dist_player_data_DATA = gtk-experiment-widgets-catalog.xml
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;
+}
diff --git a/lib/gtk-experiment-widgets/gtk-experiment-navigator.h b/lib/gtk-experiment-widgets/gtk-experiment-navigator.h
new file mode 100644
index 0000000..a3ead44
--- /dev/null
+++ b/lib/gtk-experiment-widgets/gtk-experiment-navigator.h
@@ -0,0 +1,51 @@
+#ifndef __GTK_EXPERIMENT_NAVIGATOR_H
+#define __GTK_EXPERIMENT_NAVIGATOR_H
+
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+#include <experiment-reader.h>
+
+G_BEGIN_DECLS
+
+#define GTK_TYPE_EXPERIMENT_NAVIGATOR \
+ (gtk_experiment_navigator_get_type())
+#define GTK_EXPERIMENT_NAVIGATOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_EXPERIMENT_NAVIGATOR, GtkExperimentNavigator))
+#define GTK_EXPERIMENT_NAVIGATOR_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_EXPERIMENT_NAVIGATOR, GtkExperimentNavigatorClass))
+#define GTK_IS_EXPERIMENT_NAVIGATOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_EXPERIMENT_NAVIGATOR))
+#define GTK_IS_EXPERIMENT_NAVIGATOR_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_EXPERIMENT_NAVIGATOR))
+#define GTK_EXPERIMENT_NAVIGATOR_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_EXPERIMENT_NAVIGATOR, GtkExperimentNavigatorClass))
+
+typedef struct _GtkExperimentNavigator {
+ GtkTreeView parent_instance;
+
+ /* TODO */
+} GtkExperimentNavigator;
+
+typedef struct _GtkExperimentNavigatorClass {
+ GtkTreeViewClass parent_class;
+
+ void (*time_selected)(GtkExperimentNavigator *self,
+ gint64 selected_time, gpointer user_data);
+} GtkExperimentNavigatorClass;
+
+GType gtk_experiment_navigator_get_type(void);
+
+/*
+ * API
+ */
+GtkWidget *gtk_experiment_navigator_new(void);
+
+gboolean gtk_experiment_navigator_load(GtkExperimentNavigator *navi,
+ ExperimentReader *exp);
+gboolean gtk_experiment_navigator_load_filename(GtkExperimentNavigator *navi,
+ const gchar *exp);
+
+G_END_DECLS
+
+#endif
diff --git a/lib/gtk-experiment-widgets/gtk-experiment-widgets-catalog.xml b/lib/gtk-experiment-widgets/gtk-experiment-widgets-catalog.xml
new file mode 100644
index 0000000..6728972
--- /dev/null
+++ b/lib/gtk-experiment-widgets/gtk-experiment-widgets-catalog.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Install into $GLADE_CATALOG_PATH (default: /usr/share/glade3/catalogs)
+-->
+
+<glade-catalog name="gtk-experiment-widgets"
+ library="gtk-experiment-widgets" depends="gtk+">
+ <glade-widget-classes>
+ <glade-widget-class name="GtkExperimentNavigator"
+ generic-name="gtk-experiment-navigator"
+ title="Experiment Navigator"/>
+ </glade-widget-classes>
+
+ <glade-widget-group name="gtk-experiment-widgets"
+ title="Experiment Widgets">
+ <glade-widget-class-ref name="GtkExperimentNavigator"/>
+ </glade-widget-group>
+</glade-catalog>