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.
This commit is contained in:
Jacob Boerema 2023-08-03 14:36:20 -04:00
parent 5ccac0dd9b
commit 4e40a3edd2
6 changed files with 208 additions and 188 deletions

View File

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

View File

@ -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, "</tag-name>\n");
g_string_append (xmldata, "\t\t<tag-mode>");
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, "</tag-mode>\n");
g_string_append (xmldata, "\t\t<tag-value>");
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, "</tag-name>\n");
g_string_append (xmldata, "\t\t<tag-mode>");
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, "</tag-mode>\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, "</tag-value>\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, "</tag-value>\n");
}
else if (!strcmp("list", default_metadata_tags[i].mode))
else if (default_metadata_tags[i].mode == MODE_LIST)
{
gchar *data;

View File

@ -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__ */

View File

@ -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 */

View File

@ -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)));
}

View File

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