From 4e40a3edd290310b9f3c79b9e0c05a6bfba95583 Mon Sep 17 00:00:00 2001 From: Jacob Boerema Date: Thu, 3 Aug 2023 14:36:20 -0400 Subject: [PATCH] plug-ins: make mode in metadata-editor an enum We were using a string for the metadata mode, meaning we had to compare string values in a lot of places. We simplify and probably speed-up comparisons here by replacing the mode string by an enum value. The only place still needing the string values sometimes is metadata-impexp.[ch] where we added a conversion table to convert the mode to a string. --- plug-ins/metadata/metadata-editor.c | 47 +++-- plug-ins/metadata/metadata-impexp.c | 33 ++-- plug-ins/metadata/metadata-misc.h | 28 +-- plug-ins/metadata/metadata-tags.c | 258 ++++++++++++++-------------- plug-ins/metadata/metadata-xml.c | 20 +-- plug-ins/metadata/metadata-xml.h | 10 +- 6 files changed, 208 insertions(+), 188 deletions(-) diff --git a/plug-ins/metadata/metadata-editor.c b/plug-ins/metadata/metadata-editor.c index 5bf6ef709f..3dfd9f27ae 100644 --- a/plug-ins/metadata/metadata-editor.c +++ b/plug-ins/metadata/metadata-editor.c @@ -1730,14 +1730,14 @@ hasImageSupplierTagData (metadata_editor *meta_info) object = metadata_editor_get_widget (meta_info, imageSupplierInfoTags[loop].id); - if (! strcmp (imageSupplierInfoTags[loop].mode, "single")) + if (imageSupplierInfoTags[loop].mode == MODE_SINGLE) { text = gtk_entry_get_text (GTK_ENTRY (object)); if (text && *text) return TRUE; } - else if (! strcmp (imageSupplierInfoTags[loop].mode, "multi")) + else if (imageSupplierInfoTags[loop].mode == MODE_MULTI) { text = gtk_entry_get_text (GTK_ENTRY (object)); @@ -1761,7 +1761,7 @@ hasLocationCreationTagData (metadata_editor *meta_info) widget = metadata_editor_get_widget (meta_info, locationCreationInfoTags[loop].id); - if (! strcmp (locationCreationInfoTags[loop].mode, "single")) + if (locationCreationInfoTags[loop].mode == MODE_SINGLE) { text = gtk_entry_get_text (GTK_ENTRY (widget)); @@ -2678,11 +2678,11 @@ metadata_dialog_editor_set_metadata (GExiv2Metadata *metadata, value_utf = clean_xmp_string (value); g_free (value); - if (! strcmp ("single", imageSupplierInfoTags[i].mode)) + if (imageSupplierInfoTags[i].mode == MODE_SINGLE) { gtk_entry_set_text (GTK_ENTRY (widget), value_utf); } - else if (! strcmp ("multi", imageSupplierInfoTags[i].mode)) + else if (imageSupplierInfoTags[i].mode == MODE_MULTI) { GtkTextBuffer *buffer; @@ -2711,7 +2711,7 @@ metadata_dialog_editor_set_metadata (GExiv2Metadata *metadata, value_utf = clean_xmp_string (value); g_free (value); - if (! strcmp ("single", locationCreationInfoTags[i].mode)) + if (locationCreationInfoTags[i].mode == MODE_SINGLE) { gtk_entry_set_text (GTK_ENTRY (widget), value_utf); } @@ -2915,7 +2915,7 @@ metadata_dialog_editor_set_metadata (GExiv2Metadata *metadata, } else { - if (! strcmp ("multi", equivalent_metadata_tags[index].mode)) + if (equivalent_metadata_tags[index].mode == MODE_MULTI) { g_string_append (str, "\n"); } @@ -2936,7 +2936,7 @@ metadata_dialog_editor_set_metadata (GExiv2Metadata *metadata, */ if (value && strcmp (value, str->str)) { - if (! strcmp ("multi", equivalent_metadata_tags[index].mode)) + if (equivalent_metadata_tags[index].mode == MODE_MULTI) { g_string_prepend (str, "\n"); } @@ -2953,7 +2953,7 @@ metadata_dialog_editor_set_metadata (GExiv2Metadata *metadata, } } - if (!strcmp ("list", default_metadata_tags[i].mode)) + if (default_metadata_tags[i].mode == MODE_LIST) { /* Tab: IPTC Extension, Label: Location Shown */ if (! strcmp ("Xmp.iptcExt.LocationShown", @@ -4133,18 +4133,18 @@ metadata_dialog_editor_set_metadata (GExiv2Metadata *metadata, if (value) { - if (! strcmp ("single", default_metadata_tags[i].mode)) + if (default_metadata_tags[i].mode == MODE_SINGLE) { gtk_entry_set_text (GTK_ENTRY (widget), value); } - else if (! strcmp ("multi", default_metadata_tags[i].mode)) + else if (default_metadata_tags[i].mode == MODE_MULTI) { GtkTextBuffer *buffer; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget)); gtk_text_buffer_set_text (buffer, value, -1); } - else if (! strcmp ("combo", default_metadata_tags[i].mode)) + else if (default_metadata_tags[i].mode == MODE_COMBO) { gint32 data = 0; @@ -4435,11 +4435,11 @@ metadata_dialog_editor_set_metadata (GExiv2Metadata *metadata, value_utf = clean_xmp_string (value); g_free (value); - if (! strcmp ("single", creatorContactInfoTags[i].mode)) + if (creatorContactInfoTags[i].mode == MODE_SINGLE) { gtk_entry_set_text (GTK_ENTRY (widget), value_utf); } - else if (! strcmp ("multi", creatorContactInfoTags[i].mode)) + else if (creatorContactInfoTags[i].mode == MODE_MULTI) { GtkTextBuffer *buffer; buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (widget)); @@ -4814,14 +4814,14 @@ metadata_editor_write_callback (GtkWidget *dialog, GtkWidget *widget = metadata_editor_get_widget (meta_info, creatorContactInfoTags[i].id); - if (! strcmp ("single", creatorContactInfoTags[i].mode)) + if (creatorContactInfoTags[i].mode == MODE_SINGLE) { GtkEntry *entry = GTK_ENTRY (widget); set_tag_string (g_metadata, creatorContactInfoTags[i].tag, gtk_entry_get_text (entry), FALSE); } - else if (! strcmp ("multi", creatorContactInfoTags[i].mode)) + else if (creatorContactInfoTags[i].mode == MODE_MULTI) { GtkTextView *text_view = GTK_TEXT_VIEW (widget); GtkTextBuffer *buffer; @@ -4868,7 +4868,7 @@ metadata_editor_write_callback (GtkWidget *dialog, /* SINGLE TAGS */ - if (! strcmp ("single", default_metadata_tags[i].mode)) + if (default_metadata_tags[i].mode == MODE_SINGLE) { GtkEntry *entry = GTK_ENTRY (widget); gchar *value_entry = g_strdup (gtk_entry_get_text (entry)); @@ -4947,7 +4947,7 @@ metadata_editor_write_callback (GtkWidget *dialog, /* MULTI TAGS */ - else if (! strcmp ("multi", default_metadata_tags[i].mode)) + else if (default_metadata_tags[i].mode == MODE_MULTI) { GtkTextView *text_view = GTK_TEXT_VIEW (widget); GtkTextBuffer *buffer; @@ -5011,7 +5011,7 @@ metadata_editor_write_callback (GtkWidget *dialog, if (text && *text) { - if (! strcmp ("multi", equivalent_metadata_tags[index].mode)) + if (equivalent_metadata_tags[index].mode == MODE_MULTI) { gchar **multi; @@ -5028,7 +5028,7 @@ metadata_editor_write_callback (GtkWidget *dialog, g_strfreev (multi); } - else if (! strcmp ("single", equivalent_metadata_tags[index].mode)) + else if (equivalent_metadata_tags[index].mode == MODE_SINGLE) { /* Convert from multiline to single line: keep the \n and just add the whole text. */ set_tag_string (g_metadata, equivalent_metadata_tags[index].tag, @@ -5036,9 +5036,8 @@ metadata_editor_write_callback (GtkWidget *dialog, } else { - g_warning ("Copying from multiline tag %s to %s tag %s not implemented!", + g_warning ("Copying from multiline tag %s to tag %s not implemented!", default_metadata_tags[i].tag, - equivalent_metadata_tags[index].mode, equivalent_metadata_tags[index].tag); } } @@ -5047,14 +5046,14 @@ metadata_editor_write_callback (GtkWidget *dialog, if (text) g_free (text); } - else if (! strcmp ("list", default_metadata_tags[i].mode)) + else if (default_metadata_tags[i].mode == MODE_LIST) { /* MIGHT DO SOMETHING HERE */ } /* COMBO TAGS */ - else if (! strcmp ("combo", default_metadata_tags[i].mode)) + else if (default_metadata_tags[i].mode == MODE_COMBO) { GtkComboBoxText *combo; gint32 value; diff --git a/plug-ins/metadata/metadata-impexp.c b/plug-ins/metadata/metadata-impexp.c index 3ffe019891..c0e6a4709a 100644 --- a/plug-ins/metadata/metadata-impexp.c +++ b/plug-ins/metadata/metadata-impexp.c @@ -53,6 +53,19 @@ const GMarkupParser xml_markup_parser = NULL /* error */ }; +typedef struct +{ + MetadataMode mode; + gchar *mode_string; +} MetadataModeConversion; + +const MetadataModeConversion metadata_mode_conversion[] = +{ + { MODE_SINGLE, "single" }, + { MODE_MULTI, "multi" }, + { MODE_COMBO, "combo" }, + { MODE_LIST, "list" }, +}; /* ============================================================================ * ==[ METADATA IMPORT TEMPLATE ]============================================== @@ -118,12 +131,12 @@ export_file_metadata (metadata_editor *args) g_string_append (xmldata, equivalent_metadata_tags[i].tag); g_string_append (xmldata, "\n"); g_string_append (xmldata, "\t\t"); - g_string_append (xmldata, equivalent_metadata_tags[i].mode); + g_string_append (xmldata, metadata_mode_conversion[equivalent_metadata_tags[i].mode].mode_string); g_string_append (xmldata, "\n"); g_string_append (xmldata, "\t\t"); - if (!strcmp("single", default_metadata_tags[index].mode) || - !strcmp("multi", default_metadata_tags[index].mode)) + if (default_metadata_tags[index].mode == MODE_SINGLE || + default_metadata_tags[index].mode == MODE_MULTI) { const gchar *value; @@ -139,13 +152,13 @@ export_file_metadata (metadata_editor *args) g_free (value_utf); } } - else if (!strcmp("combo", default_metadata_tags[index].mode)) + else if (default_metadata_tags[index].mode == MODE_COMBO) { gint data = get_tag_ui_combo (args, default_metadata_tags[index].tag, default_metadata_tags[index].mode); g_string_append_printf (xmldata, "%d", data); } - else if (!strcmp("list", default_metadata_tags[i].mode)) + else if (default_metadata_tags[i].mode == MODE_LIST) { /* No IPTC lists elements at this point */ } @@ -162,11 +175,11 @@ export_file_metadata (metadata_editor *args) g_string_append (xmldata, default_metadata_tags[i].tag); g_string_append (xmldata, "\n"); g_string_append (xmldata, "\t\t"); - g_string_append (xmldata, default_metadata_tags[i].mode); + g_string_append (xmldata, metadata_mode_conversion[default_metadata_tags[i].mode].mode_string); g_string_append (xmldata, "\n"); - if (!strcmp("single", default_metadata_tags[i].mode) || - !strcmp("multi", default_metadata_tags[i].mode)) + if (default_metadata_tags[i].mode == MODE_SINGLE || + default_metadata_tags[i].mode == MODE_MULTI) { const gchar *value; @@ -185,7 +198,7 @@ export_file_metadata (metadata_editor *args) g_string_append (xmldata, "\n"); } - else if (!strcmp("combo", default_metadata_tags[i].mode)) + else if (default_metadata_tags[i].mode == MODE_COMBO) { gint data; @@ -197,7 +210,7 @@ export_file_metadata (metadata_editor *args) g_string_append (xmldata, "\n"); } - else if (!strcmp("list", default_metadata_tags[i].mode)) + else if (default_metadata_tags[i].mode == MODE_LIST) { gchar *data; diff --git a/plug-ins/metadata/metadata-misc.h b/plug-ins/metadata/metadata-misc.h index 47286d7a16..adcdb39437 100644 --- a/plug-ins/metadata/metadata-misc.h +++ b/plug-ins/metadata/metadata-misc.h @@ -29,13 +29,21 @@ typedef struct gchar *filename; } metadata_editor; +typedef enum +{ + MODE_SINGLE, + MODE_MULTI, + MODE_COMBO, + MODE_LIST, +} MetadataMode; + typedef struct { - gchar *tag; - gchar *mode; - gint32 other_tag_index; - gint32 tag_type; - gint32 xmp_type; + gchar *tag; + MetadataMode mode; + gint32 other_tag_index; + gint32 tag_type; + gint32 xmp_type; } metadata_tag; typedef struct @@ -59,11 +67,11 @@ typedef struct typedef struct { - gchar *id; - gchar *tag; - gchar *mode; - gint32 other_tag_index; - gint32 tag_type; + gchar *id; + gchar *tag; + MetadataMode mode; + gint32 other_tag_index; + gint32 tag_type; } TranslateTag; #endif /* __METADATA_MISC_H__ */ diff --git a/plug-ins/metadata/metadata-tags.c b/plug-ins/metadata/metadata-tags.c index d1939c8ff9..bf343300fe 100644 --- a/plug-ins/metadata/metadata-tags.c +++ b/plug-ins/metadata/metadata-tags.c @@ -27,8 +27,8 @@ #include "metadata-tags.h" -/* The meaning of "single" and "multi" here denotes whether it is used in a - * single line or a multi line edit field. +/* The meaning of MODE_SINGLE and MODE_MULTI here denotes whether it is used + * in a single line or a multi line edit field. * Depending on it's xmp type multi line can be saved as either: * - one tag of type text, possibly including newlines * - an array of tags of the same type for seq and bag, where each line in @@ -37,138 +37,138 @@ const metadata_tag default_metadata_tags[] = { /* Description */ - { "Xmp.dc.title", "single", 16, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 0 - { "Xmp.dc.creator", "multi", 13, TAG_TYPE_XMP, GIMP_XMP_SEQ }, // 1 - { "Xmp.dc.description", "multi", 14, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 2 - { "Xmp.dc.subject", "multi", 15, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 3 - { "Xmp.dc.rights", "single", 17, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 4 - { "Xmp.photoshop.AuthorsPosition", "single", 19, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 5 - { "Xmp.photoshop.CaptionWriter", "single", 21, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 6 - { "Xmp.xmp.Rating", "combo", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 7 - { "Xmp.xmpRights.Marked", "combo", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 8 - { "Xmp.xmpRights.WebStatement", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 9 + { "Xmp.dc.title", MODE_SINGLE, 16, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 0 + { "Xmp.dc.creator", MODE_MULTI, 13, TAG_TYPE_XMP, GIMP_XMP_SEQ }, // 1 + { "Xmp.dc.description", MODE_MULTI, 14, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 2 + { "Xmp.dc.subject", MODE_MULTI, 15, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 3 + { "Xmp.dc.rights", MODE_SINGLE, 17, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 4 + { "Xmp.photoshop.AuthorsPosition", MODE_SINGLE, 19, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 5 + { "Xmp.photoshop.CaptionWriter", MODE_SINGLE, 21, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 6 + { "Xmp.xmp.Rating", MODE_COMBO, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 7 + { "Xmp.xmpRights.Marked", MODE_COMBO, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 8 + { "Xmp.xmpRights.WebStatement", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 9 /* IPTC */ - { "Xmp.photoshop.DateCreated", "single", 0, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 10 - { "Xmp.photoshop.Headline", "multi", 3, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 11 - { "Xmp.photoshop.TransmissionReference", "single", 1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 12 - { "Xmp.photoshop.Instructions", "multi", 2, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 13 - { "Xmp.iptc.IntellectualGenre", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 14 - { "Xmp.iptc.Scene", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 15 - { "Xmp.iptc.Location", "single", 18, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 16 - { "Xmp.iptc.CountryCode", "single", 20, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 17 - { "Xmp.iptc.SubjectCode", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 18 - { "Xmp.xmpRights.UsageTerms", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 19 - { "Xmp.photoshop.City", "single", 5, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 20 - { "Xmp.photoshop.State", "single", 6, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 21 - { "Xmp.photoshop.Country", "single", 7, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 22 + { "Xmp.photoshop.DateCreated", MODE_SINGLE, 0, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 10 + { "Xmp.photoshop.Headline", MODE_MULTI, 3, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 11 + { "Xmp.photoshop.TransmissionReference", MODE_SINGLE, 1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 12 + { "Xmp.photoshop.Instructions", MODE_MULTI, 2, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 13 + { "Xmp.iptc.IntellectualGenre", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 14 + { "Xmp.iptc.Scene", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 15 + { "Xmp.iptc.Location", MODE_SINGLE, 18, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 16 + { "Xmp.iptc.CountryCode", MODE_SINGLE, 20, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 17 + { "Xmp.iptc.SubjectCode", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 18 + { "Xmp.xmpRights.UsageTerms", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 19 + { "Xmp.photoshop.City", MODE_SINGLE, 5, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 20 + { "Xmp.photoshop.State", MODE_SINGLE, 6, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 21 + { "Xmp.photoshop.Country", MODE_SINGLE, 7, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 22 /* Xmp.photoshop.CaptionWriter here is a duplicate of #6 above. We keep it here to not have * to renumber the tag references. It seems it is not used on the IPTC tab. */ - { "Xmp.photoshop.CaptionWriter", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 23 - { "Xmp.photoshop.Credit", "single", 8, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 24 - { "Xmp.photoshop.Source", "single", 9, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 25 - { "Xmp.photoshop.Urgency", "combo", 11, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 26 + { "Xmp.photoshop.CaptionWriter", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 23 + { "Xmp.photoshop.Credit", MODE_SINGLE, 8, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 24 + { "Xmp.photoshop.Source", MODE_SINGLE, 9, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 25 + { "Xmp.photoshop.Urgency", MODE_COMBO, 11, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 26 /* IPTC Extension */ - { "Xmp.iptcExt.PersonInImage", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 27 - { "Xmp.iptcExt.Sublocation", "single", 12, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 28 - { "Xmp.iptcExt.City", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 29 - { "Xmp.iptcExt.ProvinceState", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 30 - { "Xmp.iptcExt.CountryName", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 31 - { "Xmp.iptcExt.CountryCode", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 32 - { "Xmp.iptcExt.WorldRegion", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 33 - { "Xmp.iptcExt.LocationShown", "list", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 34 - { "Xmp.iptcExt.OrganisationInImageName", "list", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 35 - { "Xmp.iptcExt.OrganisationInImageCode", "list", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 36 - { "Xmp.iptcExt.Event", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 37 - { "Xmp.iptcExt.RegistryId", "list", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 38 - { "Xmp.iptcExt.ArtworkOrObject", "list", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 39 - { "Xmp.iptcExt.AddlModelInfo", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 40 - { "Xmp.iptcExt.ModelAge", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 41 - { "Xmp.iptcExt.MaxAvailWidth", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 42 - { "Xmp.iptcExt.MaxAvailHeight", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 43 - { "Xmp.iptcExt.DigitalSourceType", "combo", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 44 - { "Xmp.plus.MinorModelAgeDisclosure", "combo", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 45 - { "Xmp.plus.ModelReleaseStatus", "combo", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 46 - { "Xmp.plus.ModelReleaseID", "list", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 47 - { "Xmp.plus.ImageSupplierName", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 48 - { "Xmp.plus.ImageSupplierID", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 49 - { "Xmp.plus.ImageSupplierImageID", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 50 - { "Xmp.plus.ImageCreator", "list", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 51 - { "Xmp.plus.CopyrightOwner", "list", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 52 - { "Xmp.plus.Licensor", "list", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 53 - { "Xmp.plus.PropertyReleaseStatus", "combo", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 54 - { "Xmp.plus.PropertyReleaseID", "list", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 55 + { "Xmp.iptcExt.PersonInImage", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 27 + { "Xmp.iptcExt.Sublocation", MODE_SINGLE, 12, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 28 + { "Xmp.iptcExt.City", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 29 + { "Xmp.iptcExt.ProvinceState", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 30 + { "Xmp.iptcExt.CountryName", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 31 + { "Xmp.iptcExt.CountryCode", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 32 + { "Xmp.iptcExt.WorldRegion", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 33 + { "Xmp.iptcExt.LocationShown", MODE_LIST, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 34 + { "Xmp.iptcExt.OrganisationInImageName", MODE_LIST, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 35 + { "Xmp.iptcExt.OrganisationInImageCode", MODE_LIST, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 36 + { "Xmp.iptcExt.Event", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 37 + { "Xmp.iptcExt.RegistryId", MODE_LIST, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 38 + { "Xmp.iptcExt.ArtworkOrObject", MODE_LIST, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 39 + { "Xmp.iptcExt.AddlModelInfo", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 40 + { "Xmp.iptcExt.ModelAge", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 41 + { "Xmp.iptcExt.MaxAvailWidth", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 42 + { "Xmp.iptcExt.MaxAvailHeight", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 43 + { "Xmp.iptcExt.DigitalSourceType", MODE_COMBO, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 44 + { "Xmp.plus.MinorModelAgeDisclosure", MODE_COMBO, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 45 + { "Xmp.plus.ModelReleaseStatus", MODE_COMBO, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 46 + { "Xmp.plus.ModelReleaseID", MODE_LIST, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 47 + { "Xmp.plus.ImageSupplierName", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 48 + { "Xmp.plus.ImageSupplierID", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 49 + { "Xmp.plus.ImageSupplierImageID", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 50 + { "Xmp.plus.ImageCreator", MODE_LIST, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 51 + { "Xmp.plus.CopyrightOwner", MODE_LIST, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 52 + { "Xmp.plus.Licensor", MODE_LIST, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 53 + { "Xmp.plus.PropertyReleaseStatus", MODE_COMBO, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 54 + { "Xmp.plus.PropertyReleaseID", MODE_LIST, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 55 /* Categories */ - { "Xmp.photoshop.Category", "single", 4, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 56 - { "Xmp.photoshop.SupplementalCategories", "multi", 10, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 57 + { "Xmp.photoshop.Category", MODE_SINGLE, 4, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 56 + { "Xmp.photoshop.SupplementalCategories", MODE_MULTI, 10, TAG_TYPE_XMP, GIMP_XMP_BAG }, // 57 /* GPS */ - { "Exif.GPSInfo.GPSLongitude", "single", -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 58 - { "Exif.GPSInfo.GPSLongitudeRef", "combo", -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 59 - { "Exif.GPSInfo.GPSLatitude", "single", -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 60 - { "Exif.GPSInfo.GPSLatitudeRef", "combo", -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 61 - { "Exif.GPSInfo.GPSAltitude", "single", -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 62 - { "Exif.GPSInfo.GPSAltitudeRef", "combo", -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 63 + { "Exif.GPSInfo.GPSLongitude", MODE_SINGLE, -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 58 + { "Exif.GPSInfo.GPSLongitudeRef", MODE_COMBO, -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 59 + { "Exif.GPSInfo.GPSLatitude", MODE_SINGLE, -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 60 + { "Exif.GPSInfo.GPSLatitudeRef", MODE_COMBO, -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 61 + { "Exif.GPSInfo.GPSAltitude", MODE_SINGLE, -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 62 + { "Exif.GPSInfo.GPSAltitudeRef", MODE_COMBO, -1, TAG_TYPE_EXIF, GIMP_XMP_NONE }, // 63 /* DICOM */ - { "Xmp.DICOM.PatientName", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 64 - { "Xmp.DICOM.PatientID", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 65 - { "Xmp.DICOM.PatientDOB", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 66 - { "Xmp.DICOM.PatientSex", "combo", -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 67 - { "Xmp.DICOM.StudyID", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 68 - { "Xmp.DICOM.StudyPhysician", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 69 - { "Xmp.DICOM.StudyDateTime", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 70 - { "Xmp.DICOM.StudyDescription", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 71 - { "Xmp.DICOM.SeriesNumber", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 72 - { "Xmp.DICOM.SeriesModality", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 73 - { "Xmp.DICOM.SeriesDateTime", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 74 - { "Xmp.DICOM.SeriesDescription", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 75 - { "Xmp.DICOM.EquipmentInstitution", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 76 - { "Xmp.DICOM.EquipmentManufacturer", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 77 + { "Xmp.DICOM.PatientName", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 64 + { "Xmp.DICOM.PatientID", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 65 + { "Xmp.DICOM.PatientDOB", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 66 + { "Xmp.DICOM.PatientSex", MODE_COMBO, -1, TAG_TYPE_XMP, GIMP_XMP_NONE }, // 67 + { "Xmp.DICOM.StudyID", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 68 + { "Xmp.DICOM.StudyPhysician", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 69 + { "Xmp.DICOM.StudyDateTime", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 70 + { "Xmp.DICOM.StudyDescription", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 71 + { "Xmp.DICOM.SeriesNumber", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 72 + { "Xmp.DICOM.SeriesModality", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 73 + { "Xmp.DICOM.SeriesDateTime", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 74 + { "Xmp.DICOM.SeriesDescription", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 75 + { "Xmp.DICOM.EquipmentInstitution", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 76 + { "Xmp.DICOM.EquipmentManufacturer", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 77 /* IPTC */ - { "Xmp.iptc.CiAdrExtadr", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 78 - { "Xmp.iptc.CiAdrCity", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 79 - { "Xmp.iptc.CiAdrRegion", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 80 - { "Xmp.iptc.CiAdrPcode", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 81 - { "Xmp.iptc.CiAdrCtry", "single", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 82 - { "Xmp.iptc.CiTelWork", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 83 - { "Xmp.iptc.CiEmailWork", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 84 - { "Xmp.iptc.CiUrlWork", "multi", -1, TAG_TYPE_XMP, GIMP_XMP_TEXT } // 85 + { "Xmp.iptc.CiAdrExtadr", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 78 + { "Xmp.iptc.CiAdrCity", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 79 + { "Xmp.iptc.CiAdrRegion", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 80 + { "Xmp.iptc.CiAdrPcode", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 81 + { "Xmp.iptc.CiAdrCtry", MODE_SINGLE, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 82 + { "Xmp.iptc.CiTelWork", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 83 + { "Xmp.iptc.CiEmailWork", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT }, // 84 + { "Xmp.iptc.CiUrlWork", MODE_MULTI, -1, TAG_TYPE_XMP, GIMP_XMP_TEXT } // 85 }; const gint n_default_metadata_tags = G_N_ELEMENTS (default_metadata_tags); -/* Then meaning of "single" and "multi" below is a little different than above. - * "single" - for iptc tags that can appear only once, - * "multi" - for iptc tags that are repeatable, i.e. can appear multiple times. +/* Then meaning of MODE_SINGLE and MODE_MULTI below is a little different than above. + * MODE_SINGLE - for iptc tags that can appear only once, + * MODE_MULTI - for iptc tags that are repeatable, i.e. can appear multiple times. */ const metadata_tag equivalent_metadata_tags[] = { - { "Iptc.Application2.DateCreated", "single", 10, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 0 - { "Iptc.Application2.TransmissionReference", "single", 12, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 1 - { "Iptc.Application2.SpecialInstructions", "single", 13, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 2 - { "Iptc.Application2.Headline", "single", 11, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 3 - { "Iptc.Application2.Category", "single", 56, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 4 - { "Iptc.Application2.City", "single", 20, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 5 - { "Iptc.Application2.ProvinceState", "single", 21, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 6 - { "Iptc.Application2.CountryName", "single", 22, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 7 - { "Iptc.Application2.Credit", "single", 24, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 8 - { "Iptc.Application2.Source", "single", 25, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 9 - { "Iptc.Application2.SuppCategory", "multi", 57, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 10 - { "Iptc.Application2.Urgency", "combo", 26, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 11 - { "Iptc.Application2.SubLocation", "single", 28, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 12 - { "Iptc.Application2.Byline", "single", 1, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 13 - { "Iptc.Application2.Caption", "single", 2, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 14 - { "Iptc.Application2.Keywords", "multi", 3, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 15 - { "Iptc.Application2.ObjectName", "single", 0, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 16 - { "Iptc.Application2.Copyright", "single", 4, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 17 - { "Iptc.Application2.LocationName", "multi", 16, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 18 - { "Iptc.Application2.BylineTitle", "multi", 5, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 19 - { "Iptc.Application2.CountryCode", "single", 17, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 20 - { "Iptc.Application2.Writer", "multi", 6, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 21 + { "Iptc.Application2.DateCreated", MODE_SINGLE, 10, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 0 + { "Iptc.Application2.TransmissionReference", MODE_SINGLE, 12, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 1 + { "Iptc.Application2.SpecialInstructions", MODE_SINGLE, 13, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 2 + { "Iptc.Application2.Headline", MODE_SINGLE, 11, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 3 + { "Iptc.Application2.Category", MODE_SINGLE, 56, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 4 + { "Iptc.Application2.City", MODE_SINGLE, 20, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 5 + { "Iptc.Application2.ProvinceState", MODE_SINGLE, 21, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 6 + { "Iptc.Application2.CountryName", MODE_SINGLE, 22, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 7 + { "Iptc.Application2.Credit", MODE_SINGLE, 24, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 8 + { "Iptc.Application2.Source", MODE_SINGLE, 25, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 9 + { "Iptc.Application2.SuppCategory", MODE_MULTI, 57, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 10 + { "Iptc.Application2.Urgency", MODE_COMBO, 26, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 11 + { "Iptc.Application2.SubLocation", MODE_SINGLE, 28, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 12 + { "Iptc.Application2.Byline", MODE_SINGLE, 1, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 13 + { "Iptc.Application2.Caption", MODE_SINGLE, 2, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 14 + { "Iptc.Application2.Keywords", MODE_MULTI, 3, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 15 + { "Iptc.Application2.ObjectName", MODE_SINGLE, 0, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 16 + { "Iptc.Application2.Copyright", MODE_SINGLE, 4, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 17 + { "Iptc.Application2.LocationName", MODE_MULTI, 16, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 18 + { "Iptc.Application2.BylineTitle", MODE_MULTI, 5, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 19 + { "Iptc.Application2.CountryCode", MODE_SINGLE, 17, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 20 + { "Iptc.Application2.Writer", MODE_MULTI, 6, TAG_TYPE_IPTC, GIMP_XMP_NONE }, // 21 }; const gint n_equivalent_metadata_tags = G_N_ELEMENTS (equivalent_metadata_tags); @@ -319,14 +319,14 @@ const TranslateHeaderTag creatorContactInfoHeader = const TranslateTag creatorContactInfoTags[] = { - { "Xmp.iptc.CiAdrExtadr", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr", "multi", -1, TAG_TYPE_XMP }, - { "Xmp.iptc.CiAdrCity", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity", "single", -1, TAG_TYPE_XMP }, - { "Xmp.iptc.CiAdrRegion", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrRegion", "single", -1, TAG_TYPE_XMP }, - { "Xmp.iptc.CiAdrPcode", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode", "single", -1, TAG_TYPE_XMP }, - { "Xmp.iptc.CiAdrCtry", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry", "single", -1, TAG_TYPE_XMP }, - { "Xmp.iptc.CiTelWork", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork", "multi", -1, TAG_TYPE_XMP }, - { "Xmp.iptc.CiEmailWork", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork", "multi", -1, TAG_TYPE_XMP }, - { "Xmp.iptc.CiUrlWork", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork", "multi", -1, TAG_TYPE_XMP } + { "Xmp.iptc.CiAdrExtadr", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr", MODE_MULTI, -1, TAG_TYPE_XMP }, + { "Xmp.iptc.CiAdrCity", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity", MODE_SINGLE, -1, TAG_TYPE_XMP }, + { "Xmp.iptc.CiAdrRegion", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrRegion", MODE_SINGLE, -1, TAG_TYPE_XMP }, + { "Xmp.iptc.CiAdrPcode", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode", MODE_SINGLE, -1, TAG_TYPE_XMP }, + { "Xmp.iptc.CiAdrCtry", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry", MODE_SINGLE, -1, TAG_TYPE_XMP }, + { "Xmp.iptc.CiTelWork", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork", MODE_MULTI, -1, TAG_TYPE_XMP }, + { "Xmp.iptc.CiEmailWork", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork", MODE_MULTI, -1, TAG_TYPE_XMP }, + { "Xmp.iptc.CiUrlWork", "Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork", MODE_MULTI, -1, TAG_TYPE_XMP } }; const TranslateHeaderTag locationCreationInfoHeader = @@ -336,12 +336,12 @@ const TranslateHeaderTag locationCreationInfoHeader = const TranslateTag locationCreationInfoTags[] = { - { "Xmp.iptcExt.Sublocation", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:Sublocation", "single", -1, TAG_TYPE_XMP }, - { "Xmp.iptcExt.City", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:City", "single", -1, TAG_TYPE_XMP }, - { "Xmp.iptcExt.ProvinceState", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:ProvinceState", "single", -1, TAG_TYPE_XMP }, - { "Xmp.iptcExt.CountryName", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:CountryName", "single", -1, TAG_TYPE_XMP }, - { "Xmp.iptcExt.CountryCode", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:CountryCode", "single", -1, TAG_TYPE_XMP }, - { "Xmp.iptcExt.WorldRegion", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:WorldRegion", "single", -1, TAG_TYPE_XMP } + { "Xmp.iptcExt.Sublocation", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:Sublocation", MODE_SINGLE, -1, TAG_TYPE_XMP }, + { "Xmp.iptcExt.City", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:City", MODE_SINGLE, -1, TAG_TYPE_XMP }, + { "Xmp.iptcExt.ProvinceState", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:ProvinceState", MODE_SINGLE, -1, TAG_TYPE_XMP }, + { "Xmp.iptcExt.CountryName", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:CountryName", MODE_SINGLE, -1, TAG_TYPE_XMP }, + { "Xmp.iptcExt.CountryCode", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:CountryCode", MODE_SINGLE, -1, TAG_TYPE_XMP }, + { "Xmp.iptcExt.WorldRegion", "Xmp.iptcExt.LocationCreated[1]/Iptc4xmpExt:WorldRegion", MODE_SINGLE, -1, TAG_TYPE_XMP } }; const TranslateHeaderTag imageSupplierInfoHeader = @@ -351,8 +351,8 @@ const TranslateHeaderTag imageSupplierInfoHeader = const TranslateTag imageSupplierInfoTags[] = { - { "Xmp.plus.ImageSupplierName", "Xmp.plus.ImageSupplier[1]/plus:ImageSupplierName", "multi", -1, TAG_TYPE_XMP }, - { "Xmp.plus.ImageSupplierID", "Xmp.plus.ImageSupplier[1]/plus:ImageSupplierID", "single", -1, TAG_TYPE_XMP } + { "Xmp.plus.ImageSupplierName", "Xmp.plus.ImageSupplier[1]/plus:ImageSupplierName", MODE_MULTI, -1, TAG_TYPE_XMP }, + { "Xmp.plus.ImageSupplierID", "Xmp.plus.ImageSupplier[1]/plus:ImageSupplierID", MODE_SINGLE, -1, TAG_TYPE_XMP } }; /* Plus and IPTC extension tags */ diff --git a/plug-ins/metadata/metadata-xml.c b/plug-ins/metadata/metadata-xml.c index f687dffbf3..0d3d6f9eaa 100644 --- a/plug-ins/metadata/metadata-xml.c +++ b/plug-ins/metadata/metadata-xml.c @@ -163,13 +163,13 @@ set_tag_ui (metadata_editor *args, gint index, gchar *name, gchar *value, - gchar* mode) + MetadataMode mode) { GtkWidget *widget = NULL; widget = GTK_WIDGET (metadata_editor_get_widget (args, str_tag_name)); - if (!strcmp ("single", mode)) + if (mode == MODE_SINGLE) { GtkEntry *entry_widget; gchar *value_utf; @@ -179,7 +179,7 @@ set_tag_ui (metadata_editor *args, gtk_entry_set_text (entry_widget, value_utf); g_free (value_utf); } - else if (!strcmp ("multi", mode)) + else if (mode == MODE_MULTI) { GtkTextView *text_view; GtkTextBuffer *buffer; @@ -191,7 +191,7 @@ set_tag_ui (metadata_editor *args, gtk_text_buffer_set_text (buffer, value_utf, -1); g_free (value_utf); } - else if (!strcmp ("combo", mode)) + else if (mode == MODE_COMBO) { gint32 value; gchar *value_utf; @@ -201,7 +201,7 @@ set_tag_ui (metadata_editor *args, gtk_combo_box_set_active (GTK_COMBO_BOX(widget), value); g_free (value_utf); } - else if (!strcmp ("list", mode)) + else if (mode == MODE_LIST) { GtkTreeModel *treemodel; GtkListStore *liststore; @@ -551,18 +551,18 @@ set_tag_ui (metadata_editor *args, const gchar * get_tag_ui_text (metadata_editor *args, gchar *name, - gchar *mode) + MetadataMode mode) { GtkWidget *widget = NULL; widget = metadata_editor_get_widget (args, name); - if (! strcmp ("single", mode)) + if (mode == MODE_SINGLE) { GtkEntry *entry = GTK_ENTRY (widget); return gtk_entry_get_text (entry); } - else if (!strcmp ("multi", mode)) + else if (mode == MODE_MULTI) { GtkTextView *text_view = GTK_TEXT_VIEW (widget); GtkTextBuffer *buffer; @@ -601,7 +601,7 @@ get_list_elements (GString *xmldata, int element_count, gchar **rowtagdata) } gchar * -get_tag_ui_list (metadata_editor *args, gchar *name, gchar *mode) +get_tag_ui_list (metadata_editor *args, gchar *name, MetadataMode mode) { GtkWidget *widget = NULL; GtkTreeModel *treemodel; @@ -823,7 +823,7 @@ get_tag_ui_list (metadata_editor *args, gchar *name, gchar *mode) } gint -get_tag_ui_combo (metadata_editor *args, gchar *name, gchar *mode) +get_tag_ui_combo (metadata_editor *args, gchar *name, MetadataMode mode) { return gtk_combo_box_get_active (GTK_COMBO_BOX(metadata_editor_get_widget (args, name))); } diff --git a/plug-ins/metadata/metadata-xml.h b/plug-ins/metadata/metadata-xml.h index 12ac77b2e3..442f41b498 100644 --- a/plug-ins/metadata/metadata-xml.h +++ b/plug-ins/metadata/metadata-xml.h @@ -46,25 +46,25 @@ xml_parser_data (GMarkupParseContext *context, void set_tag_ui (metadata_editor *args, - int index, + gint index, gchar *name, gchar *value, - gchar *mode); + MetadataMode mode); const gchar * get_tag_ui_text (metadata_editor *args, gchar *name, - gchar *mode); + MetadataMode mode); gchar * get_tag_ui_list (metadata_editor *args, gchar *name, - gchar *mode); + MetadataMode mode); gint get_tag_ui_combo (metadata_editor *args, gchar *name, - gchar *mode); + MetadataMode mode); void xml_parser_end_element (GMarkupParseContext *context,