[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