[gimp/wip/wormnest/iptc-multiple-keys: 15/17] plug-ins: let metadata-editor also save Iptc tags.




commit bd7eac2067ef7ddef72d4642edf54c2e3fa04fb6
Author: Jacob Boerema <jgboerema gmail com>
Date:   Thu Nov 19 16:39:45 2020 -0500

    plug-ins: let metadata-editor also save Iptc tags.

 plug-ins/metadata/metadata-editor.c | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)
---
diff --git a/plug-ins/metadata/metadata-editor.c b/plug-ins/metadata/metadata-editor.c
index 7f2dee851b..1091bca0f4 100644
--- a/plug-ins/metadata/metadata-editor.c
+++ b/plug-ins/metadata/metadata-editor.c
@@ -5325,6 +5325,7 @@ metadata_editor_write_callback (GtkWidget  *dialog,
             }
           else
             {
+              gint         index;
               const gchar *text_value = gtk_entry_get_text (entry);
 
               if (default_metadata_tags[i].xmp_type == GIMP_XMP_TEXT ||
@@ -5373,6 +5374,20 @@ metadata_editor_write_callback (GtkWidget  *dialog,
                                   default_metadata_tags[i].tag);
                     }
                 }
+
+              index = default_metadata_tags[i].other_tag_index;
+              if (index > -1)
+                {
+                  gexiv2_metadata_clear_tag (GEXIV2_METADATA (g_metadata),
+                                             equivalent_metadata_tags[index].tag);
+                  if (! gexiv2_metadata_set_tag_string (GEXIV2_METADATA (g_metadata),
+                                                        equivalent_metadata_tags[index].tag,
+                                                        text_value))
+                    {
+                      g_printerr ("failed to set tag [%s]\n",
+                                  equivalent_metadata_tags[index].tag);
+                    }
+                }
             }
         }
 
@@ -5385,6 +5400,7 @@ metadata_editor_write_callback (GtkWidget  *dialog,
           GtkTextIter    start;
           GtkTextIter    end;
           gchar         *text;
+          gint           index;
 
           buffer = gtk_text_view_get_buffer (text_view);
           gtk_text_buffer_get_start_iter (buffer, &start);
@@ -5439,6 +5455,25 @@ metadata_editor_write_callback (GtkWidget  *dialog,
                 }
             }
 
+            index = default_metadata_tags[i].other_tag_index;
+            if (index > -1)
+              {
+                gchar **multi;
+
+                gexiv2_metadata_clear_tag (GEXIV2_METADATA (g_metadata),
+                                           equivalent_metadata_tags[index].tag);
+                multi = g_strsplit (text, "\n", 0);
+                if (! gexiv2_metadata_set_tag_multiple (GEXIV2_METADATA (g_metadata),
+                                                        equivalent_metadata_tags[index].tag,
+                                                        (const gchar **) multi))
+                  {
+                    g_printerr ("failed to set tag [%s]\n",
+                                equivalent_metadata_tags[index].tag);
+                  }
+
+                g_strfreev (multi);
+              }
+
           if (text)
             g_free (text);
         }


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