[gthumb] sync the rating value with Xmp.xmp.Rating metadata



commit 3d4c3bda923dedb33e964a3e705cf5a1cc206da3
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sun Jan 15 12:55:56 2012 +0100

    sync the rating value with Xmp.xmp.Rating metadata
    
    as suggested in comment #4 of bug #480001

 extensions/exiv2_tools/exiv2-utils.cpp             |    7 +++++++
 extensions/exiv2_tools/exiv2-utils.h               |    1 +
 .../exiv2_tools/gth-metadata-provider-exiv2.c      |   12 ++++++++++++
 extensions/exiv2_tools/main.c                      |    1 +
 4 files changed, 21 insertions(+), 0 deletions(-)
---
diff --git a/extensions/exiv2_tools/exiv2-utils.cpp b/extensions/exiv2_tools/exiv2-utils.cpp
index 3a76a53..31af20b 100644
--- a/extensions/exiv2_tools/exiv2-utils.cpp
+++ b/extensions/exiv2_tools/exiv2-utils.cpp
@@ -170,6 +170,12 @@ const char *_KEYWORDS_TAG_NAMES[] = {
 	NULL
 };
 
+const char *_RATING_TAG_NAMES[] = {
+	"Xmp::xmp::Rating",
+	NULL
+};
+
+
 /* Some evil camera fill in the ImageDescription or UserComment fields
    with useless fluff. Try to filter these out, so they do not show up
    as comments */
@@ -525,6 +531,7 @@ set_attributes_from_tagsets (GFileInfo *info)
 
 	set_attribute_from_tagset (info, "general::location", _LOCATION_TAG_NAMES);
 	set_string_list_attribute_from_tagset (info, "general::tags", _KEYWORDS_TAG_NAMES);
+	set_attribute_from_tagset (info, "general::rating", _RATING_TAG_NAMES);
 	set_attribute_from_tagset (info, "Embedded::Photo::DateTimeOriginal", _ORIGINAL_DATE_TAG_NAMES);
 	set_attribute_from_tagset (info, "Embedded::Image::Orientation", _ORIENTATION_TAG_NAMES);
 }
diff --git a/extensions/exiv2_tools/exiv2-utils.h b/extensions/exiv2_tools/exiv2-utils.h
index 951bf26..22ead69 100644
--- a/extensions/exiv2_tools/exiv2-utils.h
+++ b/extensions/exiv2_tools/exiv2-utils.h
@@ -34,6 +34,7 @@ extern const char *_DESCRIPTION_TAG_NAMES[];
 extern const char *_TITLE_TAG_NAMES[];
 extern const char *_LOCATION_TAG_NAMES[];
 extern const char *_KEYWORDS_TAG_NAMES[];
+extern const char *_RATING_TAG_NAMES[];
 
 gboolean   exiv2_read_metadata_from_file    (GFile           *file,
 					     GFileInfo       *info,
diff --git a/extensions/exiv2_tools/gth-metadata-provider-exiv2.c b/extensions/exiv2_tools/gth-metadata-provider-exiv2.c
index 806f79f..32402f2 100644
--- a/extensions/exiv2_tools/gth-metadata-provider-exiv2.c
+++ b/extensions/exiv2_tools/gth-metadata-provider-exiv2.c
@@ -229,6 +229,18 @@ gth_metadata_provider_exiv2_write (GthMetadataProvider   *base,
 			g_file_info_remove_attribute (file_data->info, _KEYWORDS_TAG_NAMES[i]);
 	}
 
+	metadata = g_file_info_get_attribute_object (file_data->info, "general::rating");
+	if (metadata != NULL) {
+		if (GTH_IS_METADATA (metadata))
+			g_object_set (metadata, "value-type", NULL, NULL);
+		for (i = 0; _RATING_TAG_NAMES[i] != NULL; i++)
+			g_file_info_set_attribute_object (file_data->info, _RATING_TAG_NAMES[i], metadata);
+	}
+	else {
+		for (i = 0; _RATING_TAG_NAMES[i] != NULL; i++)
+			g_file_info_remove_attribute (file_data->info, _RATING_TAG_NAMES[i]);
+	}
+
 	metadata = g_file_info_get_attribute_object (file_data->info, "general::datetime");
 	if (metadata != NULL) {
 		GthMetadata *xmp_metadata = NULL;
diff --git a/extensions/exiv2_tools/main.c b/extensions/exiv2_tools/main.c
index 6c8f748..92bd325 100644
--- a/extensions/exiv2_tools/main.c
+++ b/extensions/exiv2_tools/main.c
@@ -152,6 +152,7 @@ GthMetadataInfo exiv2_metadata_info[] = {
 	{ "Xmp::iptc::Location", NULL, "Xmp::Embedded", 0, "XmpText", GTH_METADATA_ALLOW_IN_PROPERTIES_VIEW },
 	{ "Xmp::iptc::Keywords", NULL, "Xmp::Embedded", 0, "XmpBag", GTH_METADATA_ALLOW_IN_PROPERTIES_VIEW },
 	{ "Xmp::exif::DateTimeOriginal", NULL, "Xmp::Embedded", 0, "XmpText", GTH_METADATA_ALLOW_IN_PROPERTIES_VIEW },
+	{ "Xmp::xmp::Rating", NULL, "Xmp::Embedded", 0, "XmpText", GTH_METADATA_ALLOW_IN_PROPERTIES_VIEW },
 
 	{ "Iptc::Application2::Headline", NULL, "Iptc", 1, "String", GTH_METADATA_ALLOW_IN_PROPERTIES_VIEW },
 	{ "Iptc::Application2::Caption", NULL, "Iptc", 2, "String", GTH_METADATA_ALLOW_IN_PROPERTIES_VIEW },



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]