[Goodies-commits] r5550 - xfburn/trunk/xfburn
David Mohr
squisher at xfce.org
Fri Oct 10 07:48:02 CEST 2008
Author: squisher
Date: 2008-10-10 05:48:02 +0000 (Fri, 10 Oct 2008)
New Revision: 5550
Added:
xfburn/trunk/xfburn/xfburn-transcoder.c
xfburn/trunk/xfburn/xfburn-transcoder.h
Modified:
xfburn/trunk/xfburn/Makefile.am
xfburn/trunk/xfburn/xfburn-main.c
xfburn/trunk/xfburn/xfburn-transcoder-basic.c
xfburn/trunk/xfburn/xfburn-transcoder-basic.h
Log:
Adding transcoder interface, have the basic one implement it
Modified: xfburn/trunk/xfburn/Makefile.am
===================================================================
--- xfburn/trunk/xfburn/Makefile.am 2008-10-10 05:28:32 UTC (rev 5549)
+++ xfburn/trunk/xfburn/Makefile.am 2008-10-10 05:48:02 UTC (rev 5550)
@@ -17,6 +17,7 @@
xfburn-burn-data-cd-composition-dialog.h \
xfburn-burn-data-dvd-composition-dialog.h \
xfburn-burn-audio-cd-composition-dialog.h \
+ xfburn-transcoder.h \
xfburn-transcoder-basic.h \
xfburn-burn-image-dialog.h \
xfburn-settings.h \
@@ -52,6 +53,7 @@
xfburn-burn-data-cd-composition-dialog.c \
xfburn-burn-data-dvd-composition-dialog.c \
xfburn-burn-audio-cd-composition-dialog.c \
+ xfburn-transcoder.c \
xfburn-transcoder-basic.c \
xfburn-burn-image-dialog.c \
xfburn-composition.c \
Modified: xfburn/trunk/xfburn/xfburn-main.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-main.c 2008-10-10 05:28:32 UTC (rev 5549)
+++ xfburn/trunk/xfburn/xfburn-main.c 2008-10-10 05:48:02 UTC (rev 5550)
@@ -49,6 +49,7 @@
#include "xfburn-main-window.h"
#include "xfburn-blank-dialog.h"
#include "xfburn-hal-manager.h"
+#include "xfburn-transcoder-basic.h"
/* internal prototypes */
@@ -143,6 +144,7 @@
#ifdef HAVE_HAL
gchar *error_msg;
#endif
+ XfburnTranscoder *transcoder;
#if DEBUG > 0
/* I have to disable this until GtkTreeView gets fixed,
@@ -295,6 +297,8 @@
gtk_widget_destroy (GTK_WIDGET (dialog));
}
+ transcoder = XFBURN_TRANSCODER (xfburn_transcoder_basic_new ());
+ xfburn_set_transcoder (transcoder);
/* evaluate parsed command line options */
@@ -350,6 +354,8 @@
gtk_main ();
/* shutdown */
+ g_object_unref (transcoder);
+
#ifdef HAVE_HAL
xfburn_hal_manager_shutdown ();
#endif
Modified: xfburn/trunk/xfburn/xfburn-transcoder-basic.c
===================================================================
--- xfburn/trunk/xfburn/xfburn-transcoder-basic.c 2008-10-10 05:28:32 UTC (rev 5549)
+++ xfburn/trunk/xfburn/xfburn-transcoder-basic.c 2008-10-10 05:48:02 UTC (rev 5550)
@@ -33,19 +33,22 @@
#include "xfburn-transcoder-basic.h"
-static void xfburn_transcoder_basic_class_init (XfburnTranscoderClass * klass);
-static void xfburn_transcoder_basic_init (XfburnTranscoder * obj);
+static void xfburn_transcoder_basic_class_init (XfburnTranscoderBasicClass * klass);
+static void xfburn_transcoder_basic_init (XfburnTranscoderBasic * obj);
static void xfburn_transcoder_basic_finalize (GObject * object);
+static void transcoder_interface_init (XfburnTranscoderInterface *iface, gpointer iface_data);
-#define XFBURN_TRANSCODER_BASIC_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), XFBURN_TYPE_TRANSCODER, XfburnTranscoderPrivate))
+static gboolean is_audio_file (XfburnTranscoder *trans, const gchar *fn);
+#define XFBURN_TRANSCODER_BASIC_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), XFBURN_TYPE_TRANSCODER_BASIC, XfburnTranscoderBasicPrivate))
+
enum {
LAST_SIGNAL,
};
typedef struct {
gboolean dummy;
-} XfburnTranscoderPrivate;
+} XfburnTranscoderBasicPrivate;
/*********************/
/* class declaration */
@@ -60,61 +63,80 @@
if (type == 0) {
static const GTypeInfo our_info = {
- sizeof (XfburnTranscoderClass),
+ sizeof (XfburnTranscoderBasicClass),
NULL,
NULL,
(GClassInitFunc) xfburn_transcoder_basic_class_init,
NULL,
NULL,
- sizeof (XfburnTranscoder),
+ sizeof (XfburnTranscoderBasic),
0,
(GInstanceInitFunc) xfburn_transcoder_basic_init,
NULL
};
+ static const GInterfaceInfo trans_info = {
+ (GInterfaceInitFunc) transcoder_interface_init,
+ NULL,
+ NULL
+ };
- type = g_type_register_static (G_TYPE_OBJECT, "XfburnTranscoder", &our_info, 0);
+ type = g_type_register_static (G_TYPE_OBJECT, "XfburnTranscoderBasic", &our_info, 0);
+
+ g_type_add_interface_static (type, XFBURN_TYPE_TRANSCODER, &trans_info);
}
return type;
}
static void
-xfburn_transcoder_basic_class_init (XfburnTranscoderClass * klass)
+xfburn_transcoder_basic_class_init (XfburnTranscoderBasicClass * klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- g_type_class_add_private (klass, sizeof (XfburnTranscoderPrivate));
+ g_type_class_add_private (klass, sizeof (XfburnTranscoderBasicPrivate));
parent_class = g_type_class_peek_parent (klass);
object_class->finalize = xfburn_transcoder_basic_finalize;
/*
- signals[VOLUME_CHANGED] = g_signal_new ("volume-changed", XFBURN_TYPE_TRANSCODER, G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (XfburnTranscoderClass, volume_changed),
+ signals[VOLUME_CHANGED] = g_signal_new ("volume-changed", XFBURN_TYPE_TRANSCODER_BASIC, G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (XfburnTranscoderBasicClass, volume_changed),
NULL, NULL, g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
*/
}
static void
-xfburn_transcoder_basic_init (XfburnTranscoder * obj)
+xfburn_transcoder_basic_init (XfburnTranscoderBasic * obj)
{
- //XfburnTranscoderPrivate *priv = XFBURN_TRANSCODER_BASIC_GET_PRIVATE (obj);
+ //XfburnTranscoderBasicPrivate *priv = XFBURN_TRANSCODER_BASIC_GET_PRIVATE (obj);
}
static void
xfburn_transcoder_basic_finalize (GObject * object)
{
- //XfburnTranscoderPrivate *priv = XFBURN_TRANSCODER_BASIC_GET_PRIVATE (object);
+ //XfburnTranscoderBasicPrivate *priv = XFBURN_TRANSCODER_BASIC_GET_PRIVATE (object);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
+static void
+transcoder_interface_init (XfburnTranscoderInterface *iface, gpointer iface_data)
+{
+ iface->is_audio_file = is_audio_file;
+}
/* */
/* internals */
/* */
+static gboolean
+is_audio_file (XfburnTranscoder *trans, const gchar *fn)
+{
+ g_message ("TranscoderBasic is_audio_file");
+ return FALSE;
+}
+
/* */
/* public */
/* */
@@ -122,5 +144,5 @@
GObject *
xfburn_transcoder_basic_new ()
{
- return g_object_new (XFBURN_TYPE_TRANSCODER, NULL);
+ return g_object_new (XFBURN_TYPE_TRANSCODER_BASIC, NULL);
}
Modified: xfburn/trunk/xfburn/xfburn-transcoder-basic.h
===================================================================
--- xfburn/trunk/xfburn/xfburn-transcoder-basic.h 2008-10-10 05:28:32 UTC (rev 5549)
+++ xfburn/trunk/xfburn/xfburn-transcoder-basic.h 2008-10-10 05:48:02 UTC (rev 5550)
@@ -18,8 +18,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-#ifndef __XFBURN_TRANSCODER_BASIC_BASIC_H__
-#define __XFBURN_TRANSCODER_BASIC_BASIC_H__
+#ifndef __XFBURN_TRANSCODER_BASIC_H__
+#define __XFBURN_TRANSCODER_BASIC_H__
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -27,32 +27,31 @@
#include <gtk/gtk.h>
-#include "xfburn-progress-dialog.h"
-#include "xfburn-device-list.h"
+#include "xfburn-transcoder.h"
G_BEGIN_DECLS
-#define XFBURN_TYPE_TRANSCODER (xfburn_transcoder_basic_get_type ())
-#define XFBURN_TRANSCODER_BASIC(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), XFBURN_TYPE_TRANSCODER, XfburnTranscoder))
-#define XFBURN_TRANSCODER_BASIC_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), XFBURN_TYPE_TRANSCODER, XfburnTranscoderClass))
-#define XFBURN_IS_TRANSCODER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), XFBURN_TYPE_TRANSCODER))
-#define XFBURN_IS_TRANSCODER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), XFBURN_TYPE_TRANSCODER))
-#define XFBURN_TRANSCODER_BASIC_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), XFBURN_TYPE_TRANSCODER, XfburnTranscoderClass))
+#define XFBURN_TYPE_TRANSCODER_BASIC (xfburn_transcoder_basic_get_type ())
+#define XFBURN_TRANSCODER_BASIC(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), XFBURN_TYPE_TRANSCODER_BASIC, XfburnTranscoderBasic))
+#define XFBURN_TRANSCODER_BASIC_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), XFBURN_TYPE_TRANSCODER_BASIC, XfburnTranscoderBasicClass))
+#define XFBURN_IS_TRANSCODER_BASIC(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), XFBURN_TYPE_TRANSCODER_BASIC))
+#define XFBURN_IS_TRANSCODER_BASIC_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), XFBURN_TYPE_TRANSCODER_BASIC))
+#define XFBURN_TRANSCODER_BASIC_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), XFBURN_TYPE_TRANSCODER_BASIC, XfburnTranscoderBasicClass))
typedef struct
{
GObject parent;
-} XfburnTranscoder;
+} XfburnTranscoderBasic;
typedef struct
{
- GObject parent_class;
+ GObjectClass parent_class;
-} XfburnTranscoderClass;
+} XfburnTranscoderBasicClass;
GtkType xfburn_transcoder_basic_get_type ();
GObject *xfburn_transcoder_basic_new ();
G_END_DECLS
-#endif /* XFBURN_TRANSCODER_BASIC_BASIC_H */
+#endif /* XFBURN_TRANSCODER_BASIC_H */
Copied: xfburn/trunk/xfburn/xfburn-transcoder.c (from rev 5547, xfburn/trunk/xfburn/xfburn-transcoder.c)
===================================================================
--- xfburn/trunk/xfburn/xfburn-transcoder.c (rev 0)
+++ xfburn/trunk/xfburn/xfburn-transcoder.c 2008-10-10 05:48:02 UTC (rev 5550)
@@ -0,0 +1,115 @@
+/* $Id$ */
+/*
+ * Copyright (c) 2008 David Mohr (dmohr at mcbf.net)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* !HAVE_CONFIG_H */
+
+#include "xfburn-global.h"
+
+#include "xfburn-transcoder.h"
+
+static void xfburn_transcoder_base_init (XfburnTranscoderInterface * iface);
+
+/*
+enum {
+ LAST_SIGNAL,
+};
+*/
+
+XfburnTranscoder *transcoder = NULL;
+
+/*************************/
+/* interface declaration */
+/*************************/
+//static guint signals[LAST_SIGNAL];
+
+GtkType
+xfburn_transcoder_get_type ()
+{
+ static GtkType type = 0;
+
+ if (type == 0) {
+ static const GTypeInfo our_info = {
+ sizeof (XfburnTranscoderInterface),
+ (GBaseInitFunc) xfburn_transcoder_base_init ,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ 0,
+ 0,
+ NULL,
+ NULL
+ };
+
+ type = g_type_register_static (G_TYPE_INTERFACE, "XfburnTranscoderInterface", &our_info, 0);
+ g_type_interface_add_prerequisite (type, G_TYPE_OBJECT);
+ }
+
+ return type;
+}
+
+static void
+xfburn_transcoder_base_init (XfburnTranscoderInterface * iface)
+{
+ static gboolean initialized = FALSE;
+
+ if (!initialized) {
+ /*
+ signals[VOLUME_CHANGED] = g_signal_new ("volume-changed", XFBURN_TYPE_TRANSCODER, G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (XfburnTranscoderClass, volume_changed),
+ NULL, NULL, g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ */
+ initialized = TRUE;
+ }
+}
+
+/* */
+/* internals */
+/* */
+
+/* */
+/* public */
+/* */
+
+gboolean
+xfburn_transcoder_is_audio_file (XfburnTranscoder *trans, const gchar *fn)
+{
+ XfburnTranscoderInterface *iface = XFBURN_TRANSCODER_GET_INTERFACE (trans);
+ if (iface->is_audio_file)
+ return iface->is_audio_file (trans, fn);
+
+ g_warning ("Falling back to base implementation for xfburn_transcoder_is_audio_file, which always says false.");
+ return FALSE;
+}
+
+
+void
+xfburn_set_transcoder (XfburnTranscoder *trans)
+{
+ transcoder = trans;
+}
+
+XfburnTranscoder *
+xfburn_get_transcoder()
+{
+ return transcoder;
+}
Copied: xfburn/trunk/xfburn/xfburn-transcoder.h (from rev 5547, xfburn/trunk/xfburn/xfburn-transcoder.h)
===================================================================
--- xfburn/trunk/xfburn/xfburn-transcoder.h (rev 0)
+++ xfburn/trunk/xfburn/xfburn-transcoder.h 2008-10-10 05:48:02 UTC (rev 5550)
@@ -0,0 +1,56 @@
+/* $Id$ */
+/*
+ * Copyright (c) 2008 David Mohr (david at mcbf.net)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __XFBURN_TRANSCODER_H__
+#define __XFBURN_TRANSCODER_H__
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif /* !HAVE_CONFIG_H */
+
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define XFBURN_TYPE_TRANSCODER (xfburn_transcoder_get_type ())
+#define XFBURN_TRANSCODER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), XFBURN_TYPE_TRANSCODER, XfburnTranscoder))
+//#define XFBURN_TRANSCODER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), XFBURN_TYPE_TRANSCODER, XfburnTranscoderClass))
+#define XFBURN_IS_TRANSCODER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), XFBURN_TYPE_TRANSCODER))
+//#define XFBURN_IS_TRANSCODER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), XFBURN_TYPE_TRANSCODER))
+#define XFBURN_TRANSCODER_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), XFBURN_TYPE_TRANSCODER, XfburnTranscoderInterface))
+
+typedef struct {} XfburnTranscoder; /* dummy struct */
+
+typedef struct
+{
+ GTypeInterface parent;
+
+ gboolean (*is_audio_file) (XfburnTranscoder *trans, const gchar *fn);
+
+} XfburnTranscoderInterface;
+
+GtkType xfburn_transcoder_get_type ();
+gboolean xfburn_transcode_is_audio_file (XfburnTranscoder *trans);
+
+void xfburn_set_transcoder (XfburnTranscoder *trans);
+XfburnTranscoder *xfburn_get_transcoder();
+
+G_END_DECLS
+
+#endif /* __XFBURN_TRANSCODER_H__ */
More information about the Goodies-commits
mailing list