Blame Bug-608331-totem-pl-parser-doesn-t-build-with-latest-totem-pl-parser.patch

9580e58
From fa0d4db4f90d50d82ccdd6628eec91476a567a88 Mon Sep 17 00:00:00 2001
9580e58
From: Gustavo Carneiro <gjc@inescporto.pt>
9580e58
Date: Thu, 28 Jan 2010 16:10:16 +0000
9580e58
Subject: [PATCH] Bug 608331 - totem-pl-parser doesn't build with latest totem-pl-parser
9580e58
9580e58
---
9580e58
 totem/plparser.defs     |  296 +++++++++++++++++++++++++++++++++++++++++++----
9580e58
 totem/plparser.override |  102 +----------------
9580e58
 2 files changed, 276 insertions(+), 122 deletions(-)
9580e58
9580e58
diff --git a/totem/plparser.defs b/totem/plparser.defs
9580e58
index 184578e..9f25ff1 100644
9580e58
--- a/totem/plparser.defs
9580e58
+++ b/totem/plparser.defs
9580e58
@@ -1,8 +1,24 @@
9580e58
 ;; -*- scheme -*-
9580e58
 ; object definitions ...
9580e58
+
9580e58
+(define-object Parser
9580e58
+  (in-module "totem.plparser")
9580e58
+  (parent "GObject")
9580e58
+  (c-name "TotemPlParser")
9580e58
+  (gtype-id "TOTEM_TYPE_PL_PARSER")
9580e58
+)
9580e58
+
9580e58
+(define-object Playlist
9580e58
+  (in-module "totem.playlist")
9580e58
+  (parent "GObject")
9580e58
+  (c-name "TotemPlPlaylist")
9580e58
+  (gtype-id "TOTEM_TYPE_PL_PLAYLIST")
9580e58
+)
9580e58
+
9580e58
 ;; Enumerations and flags ...
9580e58
 
9580e58
-(define-enum ParserResult
9580e58
+
9580e58
+(define-enum PlParserResult
9580e58
   (in-module "Totem")
9580e58
   (c-name "TotemPlParserResult")
9580e58
   (gtype-id "TOTEM_TYPE_PL_PARSER_RESULT")
9580e58
@@ -10,10 +26,12 @@
9580e58
     '("unhandled" "TOTEM_PL_PARSER_RESULT_UNHANDLED")
9580e58
     '("error" "TOTEM_PL_PARSER_RESULT_ERROR")
9580e58
     '("success" "TOTEM_PL_PARSER_RESULT_SUCCESS")
9580e58
+    '("ignored" "TOTEM_PL_PARSER_RESULT_IGNORED")
9580e58
+    '("cancelled" "TOTEM_PL_PARSER_RESULT_CANCELLED")
9580e58
   )
9580e58
 )
9580e58
 
9580e58
-(define-enum ParserType
9580e58
+(define-enum PlParserType
9580e58
   (in-module "Totem")
9580e58
   (c-name "TotemPlParserType")
9580e58
   (gtype-id "TOTEM_TYPE_PL_PARSER_TYPE")
9580e58
@@ -21,47 +39,60 @@
9580e58
     '("pls" "TOTEM_PL_PARSER_PLS")
9580e58
     '("m3u" "TOTEM_PL_PARSER_M3U")
9580e58
     '("m3u-dos" "TOTEM_PL_PARSER_M3U_DOS")
9580e58
+    '("xspf" "TOTEM_PL_PARSER_XSPF")
9580e58
+    '("iriver-pla" "TOTEM_PL_PARSER_IRIVER_PLA")
9580e58
   )
9580e58
 )
9580e58
 
9580e58
-(define-enum ParserError
9580e58
+(define-enum PlParserError
9580e58
   (in-module "Totem")
9580e58
   (c-name "TotemPlParserError")
9580e58
   (gtype-id "TOTEM_TYPE_PL_PARSER_ERROR")
9580e58
   (values
9580e58
-    '("open" "TOTEM_PL_PARSER_ERROR_VFS_OPEN")
9580e58
-    '("write" "TOTEM_PL_PARSER_ERROR_VFS_WRITE")
9580e58
+    '("no-disc" "TOTEM_PL_PARSER_ERROR_NO_DISC")
9580e58
+    '("mount-failed" "TOTEM_PL_PARSER_ERROR_MOUNT_FAILED")
9580e58
   )
9580e58
 )
9580e58
 
9580e58
 
9580e58
 ;; From totem-pl-parser.h
9580e58
 
9580e58
-(define-object Parser
9580e58
-  (in-module "PlaylistParser")
9580e58
-  (parent "GObject")
9580e58
-  (c-name "TotemPlParser")
9580e58
-  (gtype-id "TOTEM_TYPE_PL_PARSER")
9580e58
-)
9580e58
-
9580e58
-(define-function totem_pl_parser_error_quark
9580e58
+(define-function error_quark
9580e58
   (c-name "totem_pl_parser_error_quark")
9580e58
   (return-type "GQuark")
9580e58
 )
9580e58
 
9580e58
-(define-function totem_pl_parser_get_type
9580e58
+(define-function get_type
9580e58
   (c-name "totem_pl_parser_get_type")
9580e58
   (return-type "GType")
9580e58
 )
9580e58
 
9580e58
-(define-method write
9580e58
+(define-function parse_duration
9580e58
+  (c-name "totem_pl_parser_parse_duration")
9580e58
+  (return-type "gint64")
9580e58
+  (parameters
9580e58
+    '("const-char*" "duration")
9580e58
+    '("gboolean" "debug")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-function parse_date
9580e58
+  (c-name "totem_pl_parser_parse_date")
9580e58
+  (return-type "guint64")
9580e58
+  (parameters
9580e58
+    '("const-char*" "date_str")
9580e58
+    '("gboolean" "debug")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method save
9580e58
   (of-object "TotemPlParser")
9580e58
-  (c-name "totem_pl_parser_write")
9580e58
+  (c-name "totem_pl_parser_save")
9580e58
   (return-type "gboolean")
9580e58
   (parameters
9580e58
-    '("GtkTreeModel*" "model")
9580e58
-    '("TotemPlParserIterFunc" "func")
9580e58
-    '("const-char*" "output")
9580e58
+    '("TotemPlPlaylist*" "playlist")
9580e58
+    '("GFile*" "dest")
9580e58
+    '("const-gchar*" "title")
9580e58
     '("TotemPlParserType" "type")
9580e58
     '("GError**" "error")
9580e58
   )
9580e58
@@ -76,20 +107,243 @@
9580e58
   )
9580e58
 )
9580e58
 
9580e58
+(define-method add_ignored_mimetype
9580e58
+  (of-object "TotemPlParser")
9580e58
+  (c-name "totem_pl_parser_add_ignored_mimetype")
9580e58
+  (return-type "none")
9580e58
+  (parameters
9580e58
+    '("const-char*" "mimetype")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
 (define-method parse
9580e58
   (of-object "TotemPlParser")
9580e58
   (c-name "totem_pl_parser_parse")
9580e58
   (return-type "TotemPlParserResult")
9580e58
   (parameters
9580e58
-    '("const-char*" "url")
9580e58
+    '("const-char*" "uri")
9580e58
     '("gboolean" "fallback")
9580e58
   )
9580e58
 )
9580e58
 
9580e58
-(define-function totem_pl_parser_new
9580e58
+(define-method parse_async
9580e58
+  (of-object "TotemPlParser")
9580e58
+  (c-name "totem_pl_parser_parse_async")
9580e58
+  (return-type "none")
9580e58
+  (parameters
9580e58
+    '("const-char*" "uri")
9580e58
+    '("gboolean" "fallback")
9580e58
+    '("GCancellable*" "cancellable")
9580e58
+    '("GAsyncReadyCallback" "callback")
9580e58
+    '("gpointer" "user_data")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method parse_finish
9580e58
+  (of-object "TotemPlParser")
9580e58
+  (c-name "totem_pl_parser_parse_finish")
9580e58
+  (return-type "TotemPlParserResult")
9580e58
+  (parameters
9580e58
+    '("GAsyncResult*" "async_result")
9580e58
+    '("GError**" "error")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method parse_with_base
9580e58
+  (of-object "TotemPlParser")
9580e58
+  (c-name "totem_pl_parser_parse_with_base")
9580e58
+  (return-type "TotemPlParserResult")
9580e58
+  (parameters
9580e58
+    '("const-char*" "uri")
9580e58
+    '("const-char*" "base")
9580e58
+    '("gboolean" "fallback")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method parse_with_base_async
9580e58
+  (of-object "TotemPlParser")
9580e58
+  (c-name "totem_pl_parser_parse_with_base_async")
9580e58
+  (return-type "none")
9580e58
+  (parameters
9580e58
+    '("const-char*" "uri")
9580e58
+    '("const-char*" "base")
9580e58
+    '("gboolean" "fallback")
9580e58
+    '("GCancellable*" "cancellable")
9580e58
+    '("GAsyncReadyCallback" "callback")
9580e58
+    '("gpointer" "user_data")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-function new
9580e58
   (c-name "totem_pl_parser_new")
9580e58
   (is-constructor-of "TotemPlParser")
9580e58
   (return-type "TotemPlParser*")
9580e58
 )
9580e58
 
9580e58
+(define-function metadata_get_type
9580e58
+  (c-name "totem_pl_parser_metadata_get_type")
9580e58
+  (return-type "GType")
9580e58
+)
9580e58
+
9580e58
+
9580e58
+
9580e58
+;; From totem-pl-parser-mini.h
9580e58
+
9580e58
+(define-function can_parse_from_data
9580e58
+  (c-name "totem_pl_parser_can_parse_from_data")
9580e58
+  (return-type "gboolean")
9580e58
+  (parameters
9580e58
+    '("const-char*" "data")
9580e58
+    '("gsize" "len")
9580e58
+    '("gboolean" "debug")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-function can_parse_from_filename
9580e58
+  (c-name "totem_pl_parser_can_parse_from_filename")
9580e58
+  (return-type "gboolean")
9580e58
+  (parameters
9580e58
+    '("const-char*" "filename")
9580e58
+    '("gboolean" "debug")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+
9580e58
+
9580e58
+;; From totem-pl-playlist.h
9580e58
+
9580e58
+(define-function totem_pl_playlist_get_type
9580e58
+  (c-name "totem_pl_playlist_get_type")
9580e58
+  (return-type "GType")
9580e58
+)
9580e58
+
9580e58
+(define-function totem_pl_playlist_new
9580e58
+  (c-name "totem_pl_playlist_new")
9580e58
+  (is-constructor-of "TotemPlPlaylist")
9580e58
+  (return-type "TotemPlPlaylist*")
9580e58
+)
9580e58
+
9580e58
+(define-method size
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_size")
9580e58
+  (return-type "guint")
9580e58
+)
9580e58
+
9580e58
+(define-method prepend
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_prepend")
9580e58
+  (return-type "none")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method append
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_append")
9580e58
+  (return-type "none")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method insert
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_insert")
9580e58
+  (return-type "none")
9580e58
+  (parameters
9580e58
+    '("gint" "position")
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method iter_first
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_iter_first")
9580e58
+  (return-type "gboolean")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method iter_next
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_iter_next")
9580e58
+  (return-type "gboolean")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method iter_prev
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_iter_prev")
9580e58
+  (return-type "gboolean")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method get_value
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_get_value")
9580e58
+  (return-type "gboolean")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+    '("const-gchar*" "key")
9580e58
+    '("GValue*" "value")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method get_valist
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_get_valist")
9580e58
+  (return-type "none")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+    '("va_list" "args")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method get
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_get")
9580e58
+  (return-type "none")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+  )
9580e58
+  (varargs #t)
9580e58
+)
9580e58
+
9580e58
+(define-method set_value
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_set_value")
9580e58
+  (return-type "gboolean")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+    '("const-gchar*" "key")
9580e58
+    '("GValue*" "value")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method set_valist
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_set_valist")
9580e58
+  (return-type "none")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+    '("va_list" "args")
9580e58
+  )
9580e58
+)
9580e58
+
9580e58
+(define-method set
9580e58
+  (of-object "TotemPlPlaylist")
9580e58
+  (c-name "totem_pl_playlist_set")
9580e58
+  (return-type "none")
9580e58
+  (parameters
9580e58
+    '("TotemPlPlaylistIter*" "iter")
9580e58
+  )
9580e58
+  (varargs #t)
9580e58
+)
9580e58
+
9580e58
 
9580e58
diff --git a/totem/plparser.override b/totem/plparser.override
9580e58
index 3cbe2fb..48e1853 100644
9580e58
--- a/totem/plparser.override
9580e58
+++ b/totem/plparser.override
9580e58
@@ -5,7 +5,7 @@ headers
9580e58
 #include "pygobject.h"
9580e58
 #include "totem-pl-parser.h"
9580e58
 #include "totem-pl-parser-builtins.h"
9580e58
-#include <gtk/gtk.h>
9580e58
+#include "totem-pl-parser-mini.h"
9580e58
 #include <glib.h>
9580e58
 
9580e58
 #include "config.h"
9580e58
@@ -14,108 +14,8 @@ headers
9580e58
 modulename totem.plparser
9580e58
 %%
9580e58
 import gobject.GObject as PyGObject_Type
9580e58
-import gtk.TreeModel as PyGtkTreeModel_Type
9580e58
 %%
9580e58
 ignore-glob
9580e58
   *_get_type
9580e58
   *_error_quark
9580e58
-%%
9580e58
-override totem_pl_parser_write kwargs
9580e58
-
9580e58
-typedef struct {
9580e58
-	PyObject *func;
9580e58
-	PyObject *data;
9580e58
-	gboolean has_error;
9580e58
-} PyPlParserIterFuncData;
9580e58
-
9580e58
-static void
9580e58
-_pl_parser_iter_func (GtkTreeModel *model, GtkTreeIter *iter, char **uri, char **title,
9580e58
-		      gboolean *custom_title, gpointer user_data)
9580e58
-{
9580e58
-	PyObject *args = NULL;
9580e58
-	PyObject *result = NULL;
9580e58
-	char *tmp_uri = NULL, *tmp_title = NULL;
9580e58
-	PyPlParserIterFuncData *data = user_data;
9580e58
-	PyObject *py_custom_title = NULL;
9580e58
-
9580e58
-	if (data->has_error)
9580e58
-		return;
9580e58
-
9580e58
-	if (data->data)
9580e58
-		args = Py_BuildValue ("(NNO)",
9580e58
-				      pygobject_new((GObject *)model),
9580e58
-				      pyg_boxed_new(GTK_TYPE_TREE_ITER, iter, TRUE, TRUE),
9580e58
-				      data->data);
9580e58
-	else
9580e58
-		args = Py_BuildValue ("(NN)",
9580e58
-				      pygobject_new((GObject *)model),
9580e58
-				      pyg_boxed_new(GTK_TYPE_TREE_ITER, iter, TRUE, TRUE));
9580e58
-	result = PyEval_CallObject (data->func, args);
9580e58
-	Py_DECREF (args);
9580e58
-	
9580e58
-	if (result == NULL) {
9580e58
-		data->has_error = TRUE;
9580e58
-		return;
9580e58
-	}
9580e58
-	  /* ?! */
9580e58
-	/* PyObject_Print (result, stdout, 0); */
9580e58
-
9580e58
-	if (PyString_Check (result)) {
9580e58
-		tmp_uri = PyString_AsString (result);
9580e58
-		if (tmp_uri == NULL) {
9580e58
-			PyErr_SetString (PyExc_TypeError,
9580e58
-					 "Callback function must return one"
9580e58
-					 " string or a tuple of two strings.");
9580e58
-			data->has_error = TRUE;
9580e58
-		}
9580e58
-	} else if (!PyTuple_Check (result) ||
9580e58
-		   !PyArg_ParseTuple (result, "ss|O", &tmp_uri, &tmp_title, &py_custom_title))
9580e58
-	{
9580e58
-		PyErr_SetString (PyExc_TypeError,
9580e58
-				 "Callback function must return one "
9580e58
-				 "string or a tuple of two strings,"
9580e58
-				 " or two strings and a boolean.");
9580e58
-		data->has_error = TRUE;
9580e58
-	}
9580e58
-	
9580e58
-	/* g_strdup handles NULL case for us */
9580e58
-	*uri = g_strdup (tmp_uri);
9580e58
-	*title = g_strdup (tmp_title);
9580e58
-	*custom_title = py_custom_title? PyObject_IsTrue(py_custom_title) : FALSE;
9580e58
-	
9580e58
-	Py_DECREF (result);
9580e58
-}
9580e58
 
9580e58
-static PyObject *
9580e58
-_wrap_totem_pl_parser_write (PyGObject *self, PyObject *args, PyObject *kwargs)
9580e58
-{
9580e58
-	static char *kwlist[] = {"model", "iter_func", "output", "type", NULL};
9580e58
-	PyGObject *model;
9580e58
-	char *output;
9580e58
-	TotemPlParserType type;
9580e58
-	GError *error = NULL;
9580e58
-	PyPlParserIterFuncData data = {0, };
9580e58
-	
9580e58
-	if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!Osi|O:Parser.write",
9580e58
-					 kwlist, &PyGtkTreeModel_Type, &model,
9580e58
-					 &data.func, &output, &type, &data.data))
9580e58
-		return NULL;
9580e58
-	/* verify arguments' integrity */
9580e58
-	if (!PyCallable_Check (data.func)) {
9580e58
-		PyErr_SetString (PyExc_TypeError, "iter_func must be callable");
9580e58
-		return NULL;
9580e58
-	}
9580e58
-	if (!totem_pl_parser_write (TOTEM_PL_PARSER(self->obj),
9580e58
-	                            GTK_TREE_MODEL(model->obj),
9580e58
-	                            _pl_parser_iter_func,
9580e58
-	                            output,type, &data, &error))
9580e58
-	{
9580e58
-		/* return an GError */
9580e58
-		pyg_error_check(&error);
9580e58
-		return NULL;
9580e58
-	}
9580e58
-	if (data.has_error)
9580e58
-		return NULL;
9580e58
-	Py_INCREF(Py_None);
9580e58
-	return Py_None;
9580e58
-}
9580e58
-- 
9580e58
1.6.6.1
9580e58