|
|
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 |
|