[rhythmbox] metadata: add to python bindings (bug #594132)
- From: Jonathan Matthew <jmatthew src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [rhythmbox] metadata: add to python bindings (bug #594132)
- Date: Sun, 24 Jan 2010 05:06:57 +0000 (UTC)
commit 1f7daa51048c5da5e9b7479352489a1388182df3
Author: Jonathan Matthew <jonathan d14n org>
Date: Sun Jan 24 15:04:33 2010 +1000
metadata: add to python bindings (bug #594132)
This involves converting RBMetaDataField into a GEnum. A couple of the
metadata functions also required overrides to deal with GValues.
bindings/python/Makefile.am | 1 +
bindings/python/rb.defs | 197 +++++++++++++++++++++++++++++++++++++++++
bindings/python/rb.override | 62 +++++++++++++-
metadata/rb-metadata-common.c | 178 ++++++++++++++++++++++++++-----------
metadata/rb-metadata.h | 6 ++
5 files changed, 393 insertions(+), 51 deletions(-)
---
diff --git a/bindings/python/Makefile.am b/bindings/python/Makefile.am
index fca0203..ffc925c 100644
--- a/bindings/python/Makefile.am
+++ b/bindings/python/Makefile.am
@@ -53,6 +53,7 @@ BINDING_HEADERS_SRCDIR_IN = \
lib/rb-string-value-map.h \
lib/rb-cut-and-paste-code.h \
lib/rb-file-helpers.h \
+ metadata/rb-metadata.h \
rhythmdb/rhythmdb.h \
rhythmdb/rhythmdb-property-model.h \
rhythmdb/rhythmdb-query-model.h \
diff --git a/bindings/python/rb.defs b/bindings/python/rb.defs
index 400d755..9121680 100644
--- a/bindings/python/rb.defs
+++ b/bindings/python/rb.defs
@@ -165,6 +165,14 @@
(gtype-id "RB_TYPE_SOURCE_SEARCH_BASIC")
)
+(define-object MetaData
+ (in-module "RB")
+ (parent "GObject")
+ (c-name "RBMetaData")
+ (gtype-id "RB_TYPE_METADATA")
+)
+
+
;; Enumerations and flags ...
(define-enum ShellPlayerError
@@ -285,6 +293,62 @@
)
)
+(define-enum MetaDataField
+ (in-module "RB")
+ (c-name "RBMetaDataField")
+ (gtype-id "RB_TYPE_METADATA_FIELD")
+ (values
+ '("title" "RB_METADATA_FIELD_TITLE")
+ '("artist" "RB_METADATA_FIELD_ARTIST")
+ '("album" "RB_METADATA_FIELD_ALBUM")
+ '("date" "RB_METADATA_FIELD_DATE")
+ '("genre" "RB_METADATA_FIELD_GENRE")
+ '("comment" "RB_METADATA_FIELD_COMMENT")
+ '("track-number" "RB_METADATA_FIELD_TRACK_NUMBER")
+ '("max-track-number" "RB_METADATA_FIELD_MAX_TRACK_NUMBER")
+ '("disc-number" "RB_METADATA_FIELD_DISC_NUMBER")
+ '("max-disc-number" "RB_METADATA_FIELD_MAX_DISC_NUMBER")
+ '("description" "RB_METADATA_FIELD_DESCRIPTION")
+ '("version" "RB_METADATA_FIELD_VERSION")
+ '("isrc" "RB_METADATA_FIELD_ISRC")
+ '("organization" "RB_METADATA_FIELD_ORGANIZATION")
+ '("copyright" "RB_METADATA_FIELD_COPYRIGHT")
+ '("contact" "RB_METADATA_FIELD_CONTACT")
+ '("license" "RB_METADATA_FIELD_LICENSE")
+ '("performer" "RB_METADATA_FIELD_PERFORMER")
+ '("duration" "RB_METADATA_FIELD_DURATION")
+ '("codec" "RB_METADATA_FIELD_CODEC")
+ '("bitrate" "RB_METADATA_FIELD_BITRATE")
+ '("track-gain" "RB_METADATA_FIELD_TRACK_GAIN")
+ '("track-peak" "RB_METADATA_FIELD_TRACK_PEAK")
+ '("album-gain" "RB_METADATA_FIELD_ALBUM_GAIN")
+ '("album-peak" "RB_METADATA_FIELD_ALBUM_PEAK")
+ '("language-code" "RB_METADATA_FIELD_LANGUAGE_CODE")
+ '("musicbrainz-trackid" "RB_METADATA_FIELD_MUSICBRAINZ_TRACKID")
+ '("musicbrainz-artistid" "RB_METADATA_FIELD_MUSICBRAINZ_ARTISTID")
+ '("musicbrainz-albumid" "RB_METADATA_FIELD_MUSICBRAINZ_ALBUMID")
+ '("musicbrainz-albumartistid" "RB_METADATA_FIELD_MUSICBRAINZ_ALBUMARTISTID")
+ '("artist-sortname" "RB_METADATA_FIELD_ARTIST_SORTNAME")
+ '("album-sortname" "RB_METADATA_FIELD_ALBUM_SORTNAME")
+ '("last" "RB_METADATA_FIELD_LAST")
+ )
+)
+
+(define-enum MetaDataError
+ (in-module "RB")
+ (c-name "RBMetaDataError")
+ (gtype-id "RB_TYPE_METADATA_ERROR")
+ (values
+ '("io" "RB_METADATA_ERROR_IO")
+ '("missing-plugin" "RB_METADATA_ERROR_MISSING_PLUGIN")
+ '("unrecognized" "RB_METADATA_ERROR_UNRECOGNIZED")
+ '("unsupported" "RB_METADATA_ERROR_UNSUPPORTED")
+ '("general" "RB_METADATA_ERROR_GENERAL")
+ '("internal" "RB_METADATA_ERROR_INTERNAL")
+ '("empty-file" "RB_METADATA_ERROR_EMPTY_FILE")
+ )
+)
+
;; From ../../plugins/rb-plugin.h
(define-function rb_plugin_get_type
@@ -2638,3 +2702,136 @@
'("int" "n_actions")
)
)
+
+;; From rb-metadata.h
+
+(define-function rb_metadata_error_quark
+ (c-name "rb_metadata_error_quark")
+ (return-type "GQuark")
+)
+
+(define-function rb_metadata_get_type
+ (c-name "rb_metadata_get_type")
+ (return-type "GType")
+)
+
+(define-function rb_metadata_field_get_type
+ (c-name "rb_metadata_field_get_type")
+ (return-type "GType")
+)
+
+(define-function rb_metadata_get_field_type
+ (c-name "rb_metadata_get_field_type")
+ (return-type "GType")
+ (parameters
+ '("RBMetaDataField" "field")
+ )
+)
+
+(define-function rb_metadata_get_field_name
+ (c-name "rb_metadata_get_field_name")
+ (return-type "const-char*")
+ (parameters
+ '("RBMetaDataField" "field")
+ )
+)
+
+(define-function rb_metadata_new
+ (c-name "rb_metadata_new")
+ (is-constructor-of "RbMetadata")
+ (return-type "RBMetaData*")
+)
+
+(define-method can_save
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_can_save")
+ (return-type "gboolean")
+ (parameters
+ '("const-char*" "mimetype")
+ )
+)
+
+(define-method get_saveable_types
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_get_saveable_types")
+ (return-type "char**")
+)
+
+(define-method load
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_load")
+ (return-type "none")
+ (parameters
+ '("const-char*" "uri")
+ '("GError**" "error")
+ )
+)
+
+(define-method save
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_save")
+ (return-type "none")
+ (parameters
+ '("GError**" "error")
+ )
+)
+
+(define-method get_mime
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_get_mime")
+ (return-type "const-char*")
+)
+
+(define-method has_missing_plugins
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_has_missing_plugins")
+ (return-type "gboolean")
+)
+
+(define-method get_missing_plugins
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_get_missing_plugins")
+ (return-type "gboolean")
+ (parameters
+ '("char***" "missing_plugins")
+ '("char***" "plugin_descriptions")
+ )
+)
+
+(define-method has_audio
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_has_audio")
+ (return-type "gboolean")
+)
+
+(define-method has_video
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_has_video")
+ (return-type "gboolean")
+)
+
+(define-method has_other_data
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_has_other_data")
+ (return-type "gboolean")
+)
+
+(define-method get
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_get")
+ (return-type "gboolean")
+ (parameters
+ '("RBMetaDataField" "field")
+ '("GValue*" "val")
+ )
+)
+
+(define-method set
+ (of-object "RBMetaData")
+ (c-name "rb_metadata_set")
+ (return-type "gboolean")
+ (parameters
+ '("RBMetaDataField" "field")
+ '("const-GValue*" "val")
+ )
+)
diff --git a/bindings/python/rb.override b/bindings/python/rb.override
index 358ff06..1f0f595 100644
--- a/bindings/python/rb.override
+++ b/bindings/python/rb.override
@@ -18,6 +18,7 @@ headers
#include "rb-entry-view.h"
#include "rb-file-helpers.h"
#include "rb-library-browser.h"
+#include "rb-metadata.h"
#include "rb-playlist-source.h"
#include "rb-player.h"
#include "rb-player-gst-filter.h"
@@ -1461,7 +1462,6 @@ _wrap_rb_streaming_source_get_progress(PyGObject *self)
g_free (progress_text);
return tuple;
}
-
%%
override RBSource__proxy_do_impl_get_delete_action
static char *
@@ -1545,3 +1545,63 @@ _wrap_RBSource__do_impl_get_delete_action(PyObject *cls, PyObject *args, PyObjec
g_free (key);
return tuple;
}
+%%
+override rb_metadata_get kwargs
+static PyObject *
+_wrap_rb_metadata_get(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+ static char *kwlist[] = { "field", NULL };
+ PyObject *py_field = NULL;
+ RBMetaData *metadata;
+ int field;
+ GValue value = {0,};
+ PyObject *ret;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:RBMetaData.get", kwlist, &py_field))
+ return NULL;
+ if (pyg_enum_get_value(RB_TYPE_METADATA_FIELD, py_field, &field))
+ return NULL;
+
+ metadata = RB_METADATA (self->obj);
+ g_value_init (&value, rb_metadata_get_field_type ((RBMetaDataField)field));
+ rb_metadata_get (metadata, (RBMetaDataField)field, &value);
+ ret = pyg_value_as_pyobject (&value, TRUE);
+ g_value_unset (&value);
+ if (ret)
+ return ret;
+ Py_RETURN_NONE;
+}
+%%
+override rb_metadata_set kwargs
+static PyObject *
+_wrap_rb_metadata_set(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+ static char *kwlist[] = { "field", "value", NULL };
+ PyObject *py_field = NULL;
+ PyObject *py_value = NULL;
+ int field;
+ GValue value = {0,};
+ GType field_type;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "OO:RBMetaData.set", kwlist, &py_field, &py_value))
+ return NULL;
+ if (pyg_enum_get_value(RB_TYPE_METADATA_FIELD, py_field, &field))
+ return NULL;
+
+ field_type = rb_metadata_get_field_type ((RBMetaDataField)field);
+ g_value_init(&value, field_type);
+ if (pyg_value_from_pyobject(&value, py_value) < 0) {
+ char *s;
+
+ s = g_strdup_printf ("could not convert argument from type '%s' (%d) to correct type '%s'",
+ g_type_name (pyg_type_from_object (py_value)),
+ (int)pyg_type_from_object (py_value),
+ g_type_name (field_type));
+ PyErr_SetString(PyExc_TypeError, s);
+ g_free (s);
+ return NULL;
+ }
+ rb_metadata_set (RB_METADATA (self->obj), (RBMetaDataField)field, &value);
+ g_value_unset (&value);
+ Py_RETURN_NONE;
+}
diff --git a/metadata/rb-metadata-common.c b/metadata/rb-metadata-common.c
index 5c39dfa..4f39d02 100644
--- a/metadata/rb-metadata-common.c
+++ b/metadata/rb-metadata-common.c
@@ -30,52 +30,6 @@
#include "rb-metadata.h"
#include "rb-debug.h"
-struct RBMetaDataFieldInfo {
- GType type;
- const char *name;
-};
-
-/*
- * Note: the field names are the same as those used by GStreamer. We
- * could have just use the GST_TAG_X defines, but that would suck if we
- * ever got a non-GStreamer metadata backend.
- */
-static struct RBMetaDataFieldInfo field_info[RB_METADATA_FIELD_LAST] = {
- /* RB_METADATA_FIELD_TITLE */ { G_TYPE_STRING, "title" },
- /* RB_METADATA_FIELD_ARTIST */ { G_TYPE_STRING, "artist" },
- /* RB_METADATA_FIELD_ALBUM */ { G_TYPE_STRING, "album" },
- /* RB_METADATA_FIELD_DATE */ { G_TYPE_ULONG, "date" },
- /* RB_METADATA_FIELD_GENRE */ { G_TYPE_STRING, "genre" },
- /* RB_METADATA_FIELD_COMMENT */ { G_TYPE_STRING, "comment" },
- /* RB_METADATA_FIELD_TRACK_NUMBER */ { G_TYPE_ULONG, "track-number" },
- /* RB_METADATA_FIELD_MAX_TRACK_NUMBER */ { G_TYPE_ULONG, "track-count" },
- /* RB_METADATA_FIELD_DISC_NUMBER */ { G_TYPE_ULONG, "album-disc-number" },
- /* RB_METADATA_FIELD_MAX_DISC_NUMBER */ { G_TYPE_ULONG, "album-disc-count" },
- /* RB_METADATA_FIELD_DESCRIPTION */ { G_TYPE_STRING, "description" },
- /* RB_METADATA_FIELD_VERSION */ { G_TYPE_STRING, "version" },
- /* RB_METADATA_FIELD_IRSC */ { G_TYPE_STRING, "isrc" },
- /* RB_METADATA_FIELD_ORGANIZATION */ { G_TYPE_STRING, "organization" },
- /* RB_METADATA_FIELD_COPYRIGHT */ { G_TYPE_STRING, "copyright" },
- /* RB_METADATA_FIELD_CONTACT */ { G_TYPE_STRING, "contact" },
- /* RB_METADATA_FIELD_LICENSE */ { G_TYPE_STRING, "license" },
- /* RB_METADATA_FIELD_PERFORMER */ { G_TYPE_STRING, "performer" },
- /* RB_METADATA_FIELD_DURATION */ { G_TYPE_ULONG, "duration" },
- /* RB_METADATA_FIELD_CODEC */ { G_TYPE_STRING, "codec" },
- /* RB_METADATA_FIELD_BITRATE */ { G_TYPE_ULONG, "bitrate" },
- /* RB_METADATA_FIELD_TRACK_GAIN */ { G_TYPE_DOUBLE, "replaygain-track-gain" },
- /* RB_METADATA_FIELD_TRACK_PEAK */ { G_TYPE_DOUBLE, "replaygain-track-peak" },
- /* RB_METADATA_FIELD_ALBUM_GAIN */ { G_TYPE_DOUBLE, "replaygain-album-gain" },
- /* RB_METADATA_FIELD_ALBUM_PEAK */ { G_TYPE_DOUBLE, "replaygain-album-peak" },
- /* RB_METADATA_FIELD_LANGUAGE_CODE */ { G_TYPE_STRING, "language-code" },
- /* RB_METADATA_FIELD_MUSICBRAINZ_TRACKID */ { G_TYPE_STRING, "musicbrainz-trackid" },
- /* RB_METADATA_FIELD_MUSICBRAINZ_ARTISTID */ { G_TYPE_STRING, "musicbrainz-artistid" },
- /* RB_METADATA_FIELD_MUSICBRAINZ_ALBUMID */ { G_TYPE_STRING, "musicbrainz-albumid" },
- /* RB_METADATA_FIELD_MUSICBRAINZ_ALBUMARTISTID */ { G_TYPE_STRING, "musicbrainz-albumartistid" },
- /* RB_METADATA_FIELD_ARTIST_SORTNAME */ { G_TYPE_STRING, "musicbrainz-sortname" },
- /* RB_METADATA_FIELD_ALBUM_SORTNAME */ { G_TYPE_STRING, "album-sortname" },
-
-};
-
/**
* RBMetaDataField:
* @RB_METADATA_FIELD_TITLE: Title of the recording
@@ -123,8 +77,48 @@ static struct RBMetaDataFieldInfo field_info[RB_METADATA_FIELD_LAST] = {
GType
rb_metadata_get_field_type (RBMetaDataField field)
{
- g_assert (field >= 0 && field < RB_METADATA_FIELD_LAST);
- return field_info[field].type;
+ switch (field) {
+ case RB_METADATA_FIELD_TITLE:
+ case RB_METADATA_FIELD_ARTIST:
+ case RB_METADATA_FIELD_ALBUM:
+ case RB_METADATA_FIELD_GENRE:
+ case RB_METADATA_FIELD_COMMENT:
+ case RB_METADATA_FIELD_DESCRIPTION:
+ case RB_METADATA_FIELD_VERSION:
+ case RB_METADATA_FIELD_ISRC:
+ case RB_METADATA_FIELD_ORGANIZATION:
+ case RB_METADATA_FIELD_COPYRIGHT:
+ case RB_METADATA_FIELD_CONTACT:
+ case RB_METADATA_FIELD_LICENSE:
+ case RB_METADATA_FIELD_PERFORMER:
+ case RB_METADATA_FIELD_CODEC:
+ case RB_METADATA_FIELD_LANGUAGE_CODE:
+ case RB_METADATA_FIELD_MUSICBRAINZ_TRACKID:
+ case RB_METADATA_FIELD_MUSICBRAINZ_ARTISTID:
+ case RB_METADATA_FIELD_MUSICBRAINZ_ALBUMID:
+ case RB_METADATA_FIELD_MUSICBRAINZ_ALBUMARTISTID:
+ case RB_METADATA_FIELD_ARTIST_SORTNAME:
+ case RB_METADATA_FIELD_ALBUM_SORTNAME:
+ return G_TYPE_STRING;
+
+ case RB_METADATA_FIELD_DATE:
+ case RB_METADATA_FIELD_TRACK_NUMBER:
+ case RB_METADATA_FIELD_MAX_TRACK_NUMBER:
+ case RB_METADATA_FIELD_DISC_NUMBER:
+ case RB_METADATA_FIELD_MAX_DISC_NUMBER:
+ case RB_METADATA_FIELD_DURATION:
+ case RB_METADATA_FIELD_BITRATE:
+ return G_TYPE_ULONG;
+
+ case RB_METADATA_FIELD_TRACK_GAIN:
+ case RB_METADATA_FIELD_TRACK_PEAK:
+ case RB_METADATA_FIELD_ALBUM_GAIN:
+ case RB_METADATA_FIELD_ALBUM_PEAK:
+ return G_TYPE_DOUBLE;
+
+ default:
+ g_assert_not_reached ();
+ }
}
/**
@@ -136,8 +130,11 @@ rb_metadata_get_field_type (RBMetaDataField field)
const char *
rb_metadata_get_field_name (RBMetaDataField field)
{
- g_assert (field >= 0 && field < RB_METADATA_FIELD_LAST);
- return field_info[field].name;
+ GEnumClass *klass;
+
+ klass = g_type_class_ref (RB_TYPE_METADATA_FIELD);
+ g_assert (field >= 0 && field < klass->n_values);
+ return klass->values[field].value_nick;
}
GQuark
@@ -149,3 +146,84 @@ rb_metadata_error_quark (void)
return quark;
}
+
+
+#define ENUM_ENTRY(NAME, DESC) { NAME, "" #NAME "", DESC }
+
+
+GType
+rb_metadata_field_get_type (void)
+{
+ static GType etype = 0;
+
+ if (etype == 0) {
+ static const GEnumValue values[] =
+ {
+ /* Note: field names are the GStreamer tag names.
+ * We could have just used the GST_TAG_X defines, but that
+ * would suck if we ever got a non-GStreamer metadata backend.
+ *
+ * maybe pack the field types in here too, like RhythmDBPropType?
+ */
+ ENUM_ENTRY (RB_METADATA_FIELD_TITLE, "title"),
+ ENUM_ENTRY (RB_METADATA_FIELD_ARTIST, "artist"),
+ ENUM_ENTRY (RB_METADATA_FIELD_ALBUM, "album"),
+ ENUM_ENTRY (RB_METADATA_FIELD_DATE, "date"),
+ ENUM_ENTRY (RB_METADATA_FIELD_GENRE, "genre"),
+ ENUM_ENTRY (RB_METADATA_FIELD_COMMENT, "comment"),
+ ENUM_ENTRY (RB_METADATA_FIELD_TRACK_NUMBER, "track-number"),
+ ENUM_ENTRY (RB_METADATA_FIELD_MAX_TRACK_NUMBER, "track-count"),
+ ENUM_ENTRY (RB_METADATA_FIELD_DISC_NUMBER, "album-disc-number"),
+ ENUM_ENTRY (RB_METADATA_FIELD_MAX_DISC_NUMBER, "album-disc-count"),
+ ENUM_ENTRY (RB_METADATA_FIELD_DESCRIPTION, "description"),
+ ENUM_ENTRY (RB_METADATA_FIELD_VERSION, "version"),
+ ENUM_ENTRY (RB_METADATA_FIELD_ISRC, "isrc"),
+ ENUM_ENTRY (RB_METADATA_FIELD_ORGANIZATION, "organization"),
+ ENUM_ENTRY (RB_METADATA_FIELD_COPYRIGHT, "copyright"),
+ ENUM_ENTRY (RB_METADATA_FIELD_CONTACT, "contact"),
+ ENUM_ENTRY (RB_METADATA_FIELD_LICENSE, "license"),
+ ENUM_ENTRY (RB_METADATA_FIELD_PERFORMER, "performer"),
+ ENUM_ENTRY (RB_METADATA_FIELD_DURATION, "duration"),
+ ENUM_ENTRY (RB_METADATA_FIELD_CODEC, "codec"),
+ ENUM_ENTRY (RB_METADATA_FIELD_BITRATE, "bitrate"),
+ ENUM_ENTRY (RB_METADATA_FIELD_TRACK_GAIN, "replaygain-track-gain"),
+ ENUM_ENTRY (RB_METADATA_FIELD_TRACK_PEAK, "replaygain-track-peak"),
+ ENUM_ENTRY (RB_METADATA_FIELD_ALBUM_GAIN, "replaygain-album-gain"),
+ ENUM_ENTRY (RB_METADATA_FIELD_ALBUM_PEAK, "replaygain-album-peak"),
+ ENUM_ENTRY (RB_METADATA_FIELD_LANGUAGE_CODE, "language-code"),
+ ENUM_ENTRY (RB_METADATA_FIELD_MUSICBRAINZ_TRACKID, "musicbrainz-trackid"),
+ ENUM_ENTRY (RB_METADATA_FIELD_MUSICBRAINZ_ARTISTID, "musicbrainz-artistid"),
+ ENUM_ENTRY (RB_METADATA_FIELD_MUSICBRAINZ_ALBUMID, "musicbrainz-albumid"),
+ ENUM_ENTRY (RB_METADATA_FIELD_MUSICBRAINZ_ALBUMARTISTID, "musicbrainz-albumartistid"),
+ ENUM_ENTRY (RB_METADATA_FIELD_ARTIST_SORTNAME, "musicbrainz-sortname"),
+ ENUM_ENTRY (RB_METADATA_FIELD_ALBUM_SORTNAME, "album-sortname"),
+ { 0, 0, 0 }
+ };
+ etype = g_enum_register_static ("RBMetadataFieldType", values);
+ }
+
+ return etype;
+}
+
+GType
+rb_metadata_error_get_type (void)
+{
+ static GType etype = 0;
+
+ if (etype == 0) {
+ static const GEnumValue values[] =
+ {
+ ENUM_ENTRY(RB_METADATA_ERROR_IO, "IO error"),
+ ENUM_ENTRY(RB_METADATA_ERROR_MISSING_PLUGIN, "Missing plugins required to read the file"),
+ ENUM_ENTRY(RB_METADATA_ERROR_UNRECOGNIZED, "Unable to identify the file type"),
+ ENUM_ENTRY(RB_METADATA_ERROR_UNSUPPORTED, "Unsupported file type"),
+ ENUM_ENTRY(RB_METADATA_ERROR_GENERAL, "General error"),
+ ENUM_ENTRY(RB_METADATA_ERROR_INTERNAL, "Internal error"),
+ ENUM_ENTRY(RB_METADATA_ERROR_EMPTY_FILE, "Empty file"),
+ { 0, 0, 0 }
+ };
+ etype = g_enum_register_static ("RBMetadataErrorType", values);
+ }
+
+ return etype;
+}
diff --git a/metadata/rb-metadata.h b/metadata/rb-metadata.h
index 9918048..bce8858 100644
--- a/metadata/rb-metadata.h
+++ b/metadata/rb-metadata.h
@@ -70,6 +70,8 @@ typedef enum
RB_METADATA_FIELD_LAST /* nothing */
} RBMetaDataField;
+#define RB_TYPE_METADATA_FIELD (rb_metadata_field_get_type ())
+
typedef enum
{
RB_METADATA_ERROR_IO,
@@ -82,6 +84,7 @@ typedef enum
} RBMetaDataError;
#define RB_METADATA_ERROR rb_metadata_error_quark ()
+#define RB_TYPE_METADATA_ERROR (rb_metadata_error_get_type ())
GQuark rb_metadata_error_quark (void);
@@ -111,6 +114,9 @@ struct _RBMetaDataClass
GType rb_metadata_get_type (void);
+GType rb_metadata_field_get_type (void);
+GType rb_metadata_error_get_type (void);
+
GType rb_metadata_get_field_type (RBMetaDataField field);
const char * rb_metadata_get_field_name (RBMetaDataField field);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]