[gtranslator/dl-workflow: 2/5] gtr-po: Add custom headers to a po file




commit 6dc6ebc1e414b8ff92b1ce935129cacb6951bcb1
Author: Amanda Shafack <shafack likhene gmail com>
Date:   Tue Jan 12 10:31:54 2021 +0100

    gtr-po: Add custom headers to a po file
    
    Include custom headers containing Damned Lies(DL) information to
    po files downloaded from DL.
    
    This will make the DL information still available to users incase
    they close the app and open it again some other time to continue
    working.

 src/gtr-dl-teams.c |  2 +-
 src/gtr-po.c       | 47 +++++++++++++++++++++++++++++++++++++++++++++++
 src/gtr-po.h       |  3 +++
 3 files changed, 51 insertions(+), 1 deletion(-)
---
diff --git a/src/gtr-dl-teams.c b/src/gtr-dl-teams.c
index ba250d7a..d455cf9e 100644
--- a/src/gtr-dl-teams.c
+++ b/src/gtr-dl-teams.c
@@ -567,7 +567,7 @@ gtr_dl_teams_load_po_file (GtkButton *button, GtrDlTeams *self)
     gtr_po_save_file(po, &po_error);
   }
 
-  g_object_unref(tmp_file);
+  g_object_unref (tmp_file);
 }
 
 static void
diff --git a/src/gtr-po.c b/src/gtr-po.c
index a43ba571..af16be20 100644
--- a/src/gtr-po.c
+++ b/src/gtr-po.c
@@ -93,6 +93,21 @@ typedef struct
 
   GtrPoState state;
 
+  /* Damned Lies(DL) teams are stored here */
+  const char *dl_team;
+
+  /* DL modules */
+  const char *dl_module;
+
+  /*  DL branches */
+  const char *dl_branch;
+
+  /*  DL domains */
+  const char *dl_domain;
+
+  /* The state of a DL module */
+  const char *dl_state;
+
   /* Marks if the file was changed;  */
   guint file_changed : 1;
 } GtrPoPrivate;
@@ -112,6 +127,22 @@ enum
 
 static gchar *message_error = NULL;
 
+static void
+gtr_header_set_field (GtrHeader * header,
+                      const gchar * field, const gchar * data)
+{
+  gchar *msgstr;
+
+  g_return_if_fail (GTR_IS_HEADER (header));
+  g_return_if_fail (data != NULL);
+
+  msgstr = po_header_set_field (gtr_msg_get_msgstr (GTR_MSG (header)),
+                                field, data);
+  gtr_msg_set_msgstr (GTR_MSG (header), msgstr);
+
+  g_free (msgstr);
+}
+
 static void
 gtr_po_set_property (GObject      *object,
                      guint         prop_id,
@@ -911,6 +942,22 @@ gtr_po_set_state (GtrPo * po, GtrPoState state)
   g_object_notify (G_OBJECT (po), "state");
 }
 
+void gtr_po_set_dl_info(GtrPo * po, const char * team, const char * module_name,
+                        const char * branch, const char * domain, const char * module_state)
+{
+  GtrPoPrivate *priv = gtr_po_get_instance_private(po);
+  priv->dl_team = g_strdup (team);
+  priv->dl_module = g_strdup (module_name);
+  priv->dl_branch = g_strdup (branch);
+  priv->dl_domain = g_strdup (domain);
+  priv->dl_state = g_strdup (module_state);
+
+  gtr_header_set_field(priv->header, "X-DL-Team", team);
+  gtr_header_set_field(priv->header, "X-DL-Module", module_name);
+  gtr_header_set_field(priv->header, "X-DL-Branch", branch);
+  gtr_header_set_field(priv->header, "X-DL-Domain", domain);
+  gtr_header_set_field(priv->header, "X-DL-State", module_state);
+}
 /*
  * FIXME: We are not using this func.
  */
diff --git a/src/gtr-po.h b/src/gtr-po.h
index bb260067..b92661cd 100644
--- a/src/gtr-po.h
+++ b/src/gtr-po.h
@@ -104,6 +104,9 @@ gtr_po_get_type (void)
 
      void gtr_po_set_state (GtrPo * po, GtrPoState state);
 
+     void gtr_po_set_dl_info(GtrPo *po, const char *team, const char *module_name,
+                             const char *branch, const char *domain, const char *module_state);
+
      GFile *gtr_po_get_location (GtrPo * po);
 
      void gtr_po_set_location (GtrPo * po, GFile * location);


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