diff options
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | lib/Makefile.am | 3 | ||||
-rw-r--r-- | lib/experiment-reader/Makefile.am | 2 | ||||
-rw-r--r-- | lib/experiment-reader/experiment-reader.h | 9 | ||||
-rw-r--r-- | lib/gtk-experiment-widgets/Makefile.am | 21 | ||||
-rw-r--r-- | lib/gtk-experiment-widgets/gtk-experiment-navigator.c | 107 | ||||
-rw-r--r-- | lib/gtk-experiment-widgets/gtk-experiment-navigator.h | 51 | ||||
-rw-r--r-- | lib/gtk-experiment-widgets/gtk-experiment-widgets-catalog.xml | 19 | ||||
-rw-r--r-- | src/Makefile.am | 10 | ||||
-rw-r--r-- | src/main.c | 3 |
10 files changed, 223 insertions, 4 deletions
diff --git a/configure.ac b/configure.ac index 270acab..3a99723 100644 --- a/configure.ac +++ b/configure.ac @@ -175,5 +175,5 @@ AC_DEFINE(DEFAULT_QUICKOPEN_DIR, ["."], [Default directory for listing experimen AC_DEFINE(EXPERIMENT_MOVIE_FILTER, ["*.mp4;*.avi"], [Filters for (quick) opening movies]) AC_DEFINE(EXPERIMENT_TRANSCRIPT_EXT, ["flk"], [File extension of experiment transcripts]) -AC_CONFIG_FILES([Makefile lib/Makefile lib/gtk-vlc-player/Makefile src/Makefile doc/Makefile doc/Doxyfile]) +AC_CONFIG_FILES([Makefile lib/Makefile lib/gtk-vlc-player/Makefile lib/experiment-reader/Makefile lib/gtk-experiment-widgets/Makefile src/Makefile doc/Makefile doc/Doxyfile]) AC_OUTPUT 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> diff --git a/src/Makefile.am b/src/Makefile.am index f81a233..4ed7ab2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -14,11 +14,17 @@ if USE_W32_RES experiment_player_LDADD += icon.$(OBJEXT) endif +experiment_player_CFLAGS += @LIBGTK_CFLAGS@ +experiment_player_LDADD += @LIBGTK_LIBS@ + experiment_player_CPPFLAGS += -I@top_srcdir@/lib/gtk-vlc-player experiment_player_LDADD += @top_srcdir@/lib/gtk-vlc-player/libgtk-vlc-player.la -experiment_player_CFLAGS += @LIBGTK_CFLAGS@ -experiment_player_LDADD += @LIBGTK_LIBS@ +experiment_player_CPPFLAGS += -I@top_srcdir@/lib/gtk-experiment-widgets +experiment_player_LDADD += @top_srcdir@/lib/gtk-experiment-widgets/libgtk-experiment-widgets.la + +experiment_player_CPPFLAGS += -I@top_srcdir@/lib/experiment-reader +#experiment_player_LDADD += @top_srcdir@/lib/experiment-reader/libexperiment-reader.la experiment_player_CFLAGS += @GTKAPP_CFLAGS@ experiment_player_LDFLAGS += @GTKAPP_LDFLAGS@ @@ -16,7 +16,10 @@ #include <glib.h> #include <gtk/gtk.h> + #include <gtk-vlc-player.h> +#include <gtk-experiment-navigator.h> +#include <experiment-reader.h> #include "experiment-player.h" |