Hello all,

I deeply appreciate your dedication to this extraordinary software. I
use it frequently and am forever amazed that it's both free and open
source. It's truly model software.

Anyway, I'm not very handy with real programming (my realm is
lightweight web programming), but I've been trying to find small ways to
contribute for a while now. Finally, I've produced my first patch!
Trivial as it may be, it adds creator, publisher and rights variables to
the export variables list, so you can name files according to their
creator, publisher and/or copyright holder. It's something I've been
wanting for a while, so I hope you accept it! (And I hope I did it
correctly). I included spanish and portuguese translations, but that's
all I've got :(.

Thanks again,
Kael

___________________________________________________________________________
darktable developer mailing list
to unsubscribe send a mail to darktable-dev+unsubscr...@lists.darktable.org

From c5eaebb88c1f69e9dc77a623b43c1de0d52f8513 Mon Sep 17 00:00:00 2001
From: Kael Shipman <kael.ship...@gmail.com>
Date: Sun, 13 Dec 2015 18:08:08 -0500
Subject: [PATCH] Added metadata variables to export dialog

---
 po/es.po               | 12 ++++++++++++
 po/pt_BR.po            | 12 ++++++++++++
 po/pt_PT.po            | 16 ++++++++++++++++
 src/common/variables.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 src/gui/gtkentry.c     |  3 +++
 5 files changed, 85 insertions(+)

diff --git a/po/es.po b/po/es.po
index ef7af62..c42a415 100644
--- a/po/es.po
+++ b/po/es.po
@@ -2769,6 +2769,18 @@ msgstr "$(DESKTOP) - carpeta escritorio"
 msgid "$(TITLE) - title from metadata"
 msgstr "$(TITLE) - titulo de los metadatos"
 
+#: ../src/gui/gtkentry.c:219
+msgid "$(CREATOR) - creator from metadata"
+msgstr "$(CREATOR) - creador de los metadatos"
+
+#: ../src/gui/gtkentry.c:220
+msgid "$(PUBLISHER) - publisher from metadata"
+msgstr "$(PUBLISHER) - publicador de los metadatos"
+
+#: ../src/gui/gtkentry.c:221
+msgid "$(RIGHT) - rights from metadata"
+msgstr "$(RIGHTS) - derechos de los metadatos"
+
 #: ../src/gui/guides.c:370
 msgid "extra"
 msgstr "extra"
diff --git a/po/pt_BR.po b/po/pt_BR.po
index a67ee59..e3b5877 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1896,6 +1896,18 @@ msgstr "$(DESKTOP) - pasta desktop"
 msgid "$(TITLE) - title from metadata"
 msgstr "$(TITLE) - título dos metadados"
 
+#: ../src/gui/gtkentry.c:219
+msgid "$(CREATOR) - creator from metadata"
+msgstr "$(CREATOR) - creador dos metadados"
+
+#: ../src/gui/gtkentry.c:220
+msgid "$(PUBLISHER) - publisher from metadata"
+msgstr "$(PUBLISHER) - publicador dos metadados"
+
+#: ../src/gui/gtkentry.c:221
+msgid "$(RIGHT) - rights from metadata"
+msgstr "$(RIGHTS) - dereitos dos metadados"
+
 #: ../src/gui/preferences.c:224
 msgid "darktable preferences"
 msgstr "preferências darktable"
diff --git a/po/pt_PT.po b/po/pt_PT.po
index 7f3e0e2..17d48c4 100644
--- a/po/pt_PT.po
+++ b/po/pt_PT.po
@@ -2161,6 +2161,22 @@ msgstr "$(HOME) - pasta pessoal"
 msgid "$(DESKTOP) - desktop folder"
 msgstr "$(DESKTOP) - ambiente de trabalho"
 
+#: ../src/gui/gtkentry.c:218
+msgid "$(TITLE) - title from metadata"
+msgstr "$(TITLE) - título dos metadados"
+
+#: ../src/gui/gtkentry.c:219
+msgid "$(CREATOR) - creator from metadata"
+msgstr "$(CREATOR) - creador dos metadados"
+
+#: ../src/gui/gtkentry.c:220
+msgid "$(PUBLISHER) - publisher from metadata"
+msgstr "$(PUBLISHER) - publicador dos metadados"
+
+#: ../src/gui/gtkentry.c:221
+msgid "$(RIGHT) - rights from metadata"
+msgstr "$(RIGHTS) - dereitos dos metadados"
+
 #: ../src/gui/preferences.c:222
 msgid "darktable preferences"
 msgstr "preferências darktable"
diff --git a/src/common/variables.c b/src/common/variables.c
index 81919e1..97c38d8 100644
--- a/src/common/variables.c
+++ b/src/common/variables.c
@@ -263,6 +263,48 @@ gboolean _variable_get_value(dt_variables_params_t *params, gchar *variable, gch
     }
     g_list_free_full(res, &g_free);
   }
+  else if(g_strcmp0(variable, "$(CREATOR)") == 0 && params->filename && (got_value = TRUE))
+  {
+    GList *res = dt_metadata_get(params->imgid, "Xmp.dc.creator", NULL);
+    res = g_list_first(res);
+    if(res != NULL)
+    {
+      snprintf(value, value_len, "%s", (char *)res->data);
+    }
+    else
+    {
+      snprintf(value, value_len, "%s", _("unknown"));
+    }
+    g_list_free_full(res, &g_free);
+  }
+  else if(g_strcmp0(variable, "$(PUBLISHER)") == 0 && params->filename && (got_value = TRUE))
+  {
+    GList *res = dt_metadata_get(params->imgid, "Xmp.dc.publisher", NULL);
+    res = g_list_first(res);
+    if(res != NULL)
+    {
+      snprintf(value, value_len, "%s", (char *)res->data);
+    }
+    else
+    {
+      snprintf(value, value_len, "%s", _("unknown"));
+    }
+    g_list_free_full(res, &g_free);
+  }
+  else if(g_strcmp0(variable, "$(RIGHTS)") == 0 && params->filename && (got_value = TRUE))
+  {
+    GList *res = dt_metadata_get(params->imgid, "Xmp.dc.rights", NULL);
+    res = g_list_first(res);
+    if(res != NULL)
+    {
+      snprintf(value, value_len, "%s", (char *)res->data);
+    }
+    else
+    {
+      snprintf(value, value_len, "%s", _("unknown"));
+    }
+    g_list_free_full(res, &g_free);
+  }
 
   g_free(pictures_folder);
   g_free((gchar *)homedir);
diff --git a/src/gui/gtkentry.c b/src/gui/gtkentry.c
index 8bbb841..fa87494 100644
--- a/src/gui/gtkentry.c
+++ b/src/gui/gtkentry.c
@@ -210,6 +210,9 @@ const dt_gtkentry_completion_spec *dt_gtkentry_get_default_path_compl_list()
           { "HOME", N_("$(HOME) - home folder") },
           { "DESKTOP", N_("$(DESKTOP) - desktop folder") },
           { "TITLE", N_("$(TITLE) - title from metadata") },
+          { "CREATOR", N_("$(CREATOR) - creator from metadata") },
+          { "PUBLISHER", N_("$(PUBLISHER) - publisher from metadata") },
+          { "RIGHTS", N_("$(RIGHTS) - rights from metadata") },
           { NULL, NULL } };
 
   return default_path_compl_list;
-- 
1.9.1

Reply via email to