[gtranslator] Make header inherit from GtranslatorMsg.



commit f839cbc1af76576b6fe4845997450a719582d959
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Wed Jan 27 20:42:39 2010 +0100

    Make header inherit from GtranslatorMsg.

 src/header.c |  594 +++++++++++++++++++++++++++++++---------------------------
 src/header.h |  171 +++++++----------
 2 files changed, 384 insertions(+), 381 deletions(-)
---
diff --git a/src/header.c b/src/header.c
index 285670c..927f39a 100644
--- a/src/header.c
+++ b/src/header.c
@@ -2,12 +2,12 @@
  * (C) 2007 Pablo Sanxiao <psanxiao gmail com>
  *          Ignacio Casal Quinteiro <nacho resa gmail com>
  *     2008 Igalia
- *  		
+ *
  * gtranslator is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or   
  * (at your option) any later version.
- *    
+ *
  * gtranslator is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
@@ -31,94 +31,65 @@
 #include <glib-object.h>
 
 #define GTR_HEADER_GET_PRIVATE(object)	(G_TYPE_INSTANCE_GET_PRIVATE ( \
-					 (object),	\
-					 GTR_TYPE_HEADER,     \
-					 GtranslatorHeaderPrivate))
-
-G_DEFINE_TYPE (GtranslatorHeader, gtranslator_header, G_TYPE_OBJECT)
-     struct _GtranslatorHeaderPrivate
-     {
-       gchar *comment;
-
-       /*
-        * Project-ID-Version
-        */
-       gchar *prj_id_version;
-
-       /*
-        * Report msgid bugs to
-        */
-       gchar *rmbt;
-
-       /*
-        * POT-Creation-Date
-        */
-       gchar *pot_date;
-
-       /*
-        *  PO-Revision-Date
-        */
-       gchar *po_date;
-
-       /*
-        * Translator Name
-        */
-       gchar *translator;
-
-       /*
-        * Translator Email 
-        */
-       gchar *tr_email;
-
-       /*
-        * Previous Translator Name and Email
-        */
-       gchar *prev_translator;
-
-       /*
-        * Language Name
-        */
-       gchar *language;
-
-       /*
-        * Traslation group email
-        */
-       gchar *lg_email;
-
-       gchar *mime_version;
-
-       /*
-        * Content-Type
-        */
-       gchar *charset;
-
-       /*
-        * Content-Transfer-Encoding
-        */
-       gchar *encoding;
-
-       /*
-        * Plural forms and number of plurals
-        */
-       gchar *plural_forms;
-       gint nplurals;
-
-       /*
-        * Check if header has changed
-        */
-       gboolean header_changed;
-     };
+                                         (object), \
+                                         GTR_TYPE_HEADER, \
+                                         GtranslatorHeaderPrivate))
 
-/*
- * Set nplurals variable
- */
-     static void parse_nplurals (GtranslatorHeader * header)
+G_DEFINE_TYPE (GtranslatorHeader, gtranslator_header, GTR_TYPE_MSG)
+
+struct _GtranslatorHeaderPrivate
+{
+  gchar *prev_translator;
+  gint   nplurals;
+};
+
+static void
+gtranslator_header_set_field (GtranslatorHeader *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 (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                                field, data);
+  gtranslator_msg_set_msgstr (GTR_MSG (header), msgstr);
+
+  g_free (msgstr);
+}
+
+/* Set nplurals variable */
+static void
+parse_nplurals (GtranslatorHeader * header)
 {
-  gchar *pointer;
+  gchar *pointer, *plural_forms;
+
+  plural_forms = g_strdup (gtranslator_header_get_plural_forms (header));
+
+  if (!plural_forms)
+    {
+      const gchar *plural_form;
+      GtranslatorProfile *profile;
 
-  g_return_if_fail (header->priv->plural_forms != NULL);
+      header->priv->nplurals = -1;
 
-  pointer = header->priv->plural_forms;
+      profile = gtranslator_application_get_active_profile (GTR_APP);
+
+      if (profile)
+        plural_form = gtranslator_profile_get_plurals (profile);
+      else
+        return;
+
+      if (plural_form)
+        {
+          gtranslator_header_set_plural_forms (header, plural_form);
+          plural_forms = g_strdup (plural_form);
+        }
+    }
+
+  pointer = plural_forms;
 
   while (*pointer != '=')
     pointer++;
@@ -129,12 +100,17 @@ G_DEFINE_TYPE (GtranslatorHeader, gtranslator_header, G_TYPE_OBJECT)
     pointer++;
 
   header->priv->nplurals = g_ascii_digit_value (*pointer);
+
+  g_free (plural_forms);
 }
 
 static void
 gtranslator_header_init (GtranslatorHeader * header)
 {
   header->priv = GTR_HEADER_GET_PRIVATE (header);
+
+  header->priv->prev_translator = NULL;
+  header->priv->nplurals = -1;
 }
 
 static void
@@ -142,19 +118,7 @@ gtranslator_header_finalize (GObject * object)
 {
   GtranslatorHeader *header = GTR_HEADER (object);
 
-  g_free (header->priv->comment);
-  g_free (header->priv->prj_id_version);
-  g_free (header->priv->rmbt);
-  g_free (header->priv->pot_date);
-  g_free (header->priv->po_date);
-  g_free (header->priv->translator);
-  g_free (header->priv->tr_email);
-  g_free (header->priv->language);
-  g_free (header->priv->lg_email);
-  g_free (header->priv->mime_version);
-  g_free (header->priv->charset);
-  g_free (header->priv->encoding);
-  g_free (header->priv->plural_forms);
+  g_free (header->priv->prev_translator);
 
   G_OBJECT_CLASS (gtranslator_header_parent_class)->finalize (object);
 }
@@ -169,226 +133,358 @@ gtranslator_header_class_init (GtranslatorHeaderClass * klass)
   object_class->finalize = gtranslator_header_finalize;
 }
 
-/*
- * Public methods
- */
+/* Public methods */
 
 GtranslatorHeader *
-gtranslator_header_new (void)
+gtranslator_header_new (po_message_iterator_t iter,
+                        po_message_t          message)
 {
   GtranslatorHeader *header;
 
-  header = g_object_new (GTR_TYPE_HEADER, NULL);
+  header = g_object_new (GTR_TYPE_HEADER, "gettext-iter", iter,
+                         "gettext-msg", message, NULL);
+
+  /* We have to parse the number of plurals */
+  parse_nplurals (header);
 
   return header;
 }
 
+/**
+ * gtranslator_header_get_comments:
+ * @header: a #GtranslatorHeader
+ *
+ * Gets the comments of the header.
+ *
+ * Return value: the comments of the header.
+ */
 const gchar *
-gtranslator_header_get_comment (GtranslatorHeader * header)
+gtranslator_header_get_comments (GtranslatorHeader *header)
 {
-  return header->priv->comment;
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  return po_message_comments (gtranslator_msg_get_message (GTR_MSG (header)));
 }
 
 void
-gtranslator_header_set_comment (GtranslatorHeader * header,
-				const gchar * data)
+gtranslator_header_set_comments (GtranslatorHeader *header,
+                                 const gchar *comments)
 {
-  if (header->priv->comment)
-    g_free (header->priv->comment);
-  header->priv->comment = g_strdup (data);
+  g_return_if_fail (GTR_IS_HEADER (header));
+  g_return_if_fail (comments != NULL);
+ 
+  po_message_set_comments (gtranslator_msg_get_message (GTR_MSG (header)),
+                           comments);
 }
 
-const gchar *
-gtranslator_header_get_prj_id_version (GtranslatorHeader * header)
+gchar *
+gtranslator_header_get_prj_id_version (GtranslatorHeader *header)
 {
-  return header->priv->prj_id_version;
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  return po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                          "Project-Id-Version");
 }
 
 void
-gtranslator_header_set_prj_id_version (GtranslatorHeader * header,
-				       const gchar * data)
+gtranslator_header_set_prj_id_version (GtranslatorHeader *header,
+                                       const gchar *prj_id_version)
 {
-  if (header->priv->prj_id_version)
-    g_free (header->priv->prj_id_version);
-  header->priv->prj_id_version = g_strdup (data);
+  g_return_if_fail (GTR_IS_HEADER (header));
+  g_return_if_fail (prj_id_version != NULL);
+
+  gtranslator_header_set_field (header, "Project-Id-Version",
+                                prj_id_version);
 }
 
-const gchar *
-gtranslator_header_get_rmbt (GtranslatorHeader * header)
+gchar *
+gtranslator_header_get_rmbt (GtranslatorHeader *header)
 {
-  return header->priv->rmbt;
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  return po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                          "Report-Msgid-Bugs-To");
 }
 
 void
-gtranslator_header_set_rmbt (GtranslatorHeader * header, const gchar * data)
+gtranslator_header_set_rmbt (GtranslatorHeader *header,
+                             const gchar *rmbt)
 {
-  if (header->priv->rmbt)
-    g_free (header->priv->rmbt);
-  header->priv->rmbt = g_strdup (data);
+  /* FIXME: rmbt is not a good name */
+  g_return_if_fail (GTR_IS_HEADER (header));
+  g_return_if_fail (rmbt != NULL);
+
+  gtranslator_header_set_field (header, "Report-Msgid-Bugs-To",
+                                rmbt);
 }
 
-const gchar *
-gtranslator_header_get_pot_date (GtranslatorHeader * header)
+gchar *
+gtranslator_header_get_pot_date (GtranslatorHeader *header)
 {
-  return header->priv->pot_date;
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  return po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                          "POT-Creation-Date");
 }
 
 void
-gtranslator_header_set_pot_date (GtranslatorHeader * header,
-				 const gchar * data)
+gtranslator_header_set_pot_date (GtranslatorHeader *header,
+                                 const gchar *pot_date)
 {
-  if (header->priv->pot_date)
-    g_free (header->priv->pot_date);
-  header->priv->pot_date = g_strdup (data);
+  g_return_if_fail (GTR_IS_HEADER (header));
+  g_return_if_fail (pot_date != NULL);
+
+  gtranslator_header_set_field (header, "POT-Creation-Date",
+                                pot_date);
 }
 
-const gchar *
-gtranslator_header_get_po_date (GtranslatorHeader * header)
+gchar *
+gtranslator_header_get_po_date (GtranslatorHeader *header)
 {
-  return header->priv->po_date;
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  return po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                          "PO-Revision-Date");
 }
 
 void
-gtranslator_header_set_po_date (GtranslatorHeader * header,
-				const gchar * data)
+gtranslator_header_set_po_date (GtranslatorHeader *header,
+                                const gchar *po_date)
 {
-  if (header->priv->po_date)
-    g_free (header->priv->po_date);
-  header->priv->po_date = g_strdup (data);
-}
+  g_return_if_fail (GTR_IS_HEADER (header));
+  g_return_if_fail (po_date != NULL);
 
-const gchar *
-gtranslator_header_get_translator (GtranslatorHeader * header)
-{
-  return header->priv->translator;
+  gtranslator_header_set_field (header, "PO-Revision-Date",
+                                po_date);
 }
 
-void
-gtranslator_header_set_translator (GtranslatorHeader * header,
-				   const gchar * data)
+gchar *
+gtranslator_header_get_translator (GtranslatorHeader *header)
 {
-  if (header->priv->translator)
-    g_free (header->priv->translator);
-  header->priv->translator = g_strdup (data);
+  gchar *space, *translator_temp, *translator;
+
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  translator_temp = po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                                     "Last-Translator");
+  space = g_strrstr (translator_temp, " <");
+
+  if (!space)
+    translator = g_strdup (translator_temp);
+  else
+    translator = g_strndup (translator_temp, space - translator_temp);
+
+  g_free (translator_temp);
+
+  return translator;
 }
 
-const gchar *
-gtranslator_header_get_tr_email (GtranslatorHeader * header)
+gchar *
+gtranslator_header_get_tr_email (GtranslatorHeader *header)
 {
-  return header->priv->tr_email;
+  gchar *space, *email_temp, *email;
+
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  email_temp = po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                                "Last-Translator");
+  space = g_strrstr (email_temp, " <");
+
+  if (!space)
+    email = g_strdup ("");
+  else
+    email = g_strndup (space + 2, strlen (space) - 3);
+
+  g_free (email_temp);
+
+  return email;
 }
 
 void
-gtranslator_header_set_tr_email (GtranslatorHeader * header,
-				 const gchar * data)
+gtranslator_header_set_translator (GtranslatorHeader *header,
+                                   const gchar *name,
+                                   const gchar *email)
 {
-  if (header->priv->tr_email)
-    g_free (header->priv->tr_email);
-  header->priv->tr_email = g_strdup (data);
+  gchar *translator;
+
+  g_return_if_fail (GTR_IS_HEADER (header));
+
+  translator = g_strconcat (name, " <", email, ">", NULL);
+
+  gtranslator_header_set_field (header, "Last-Translator",
+                                translator);
+
+  g_free (translator);
 }
 
 const gchar *
-gtranslator_header_get_prev_translator (GtranslatorHeader * header)
+gtranslator_header_get_prev_translator (GtranslatorHeader *header)
 {
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
   return header->priv->prev_translator;
 }
 
 void
-gtranslator_header_set_prev_translator (GtranslatorHeader * header,
-					const gchar * data)
+gtranslator_header_set_prev_translator (GtranslatorHeader *header,
+                                        const gchar *prev_translator)
 {
-  if (header->priv->prev_translator)
-    g_free (header->priv->prev_translator);
-  header->priv->prev_translator = g_strdup (data);
-}
+  g_return_if_fail (GTR_IS_HEADER (header));
+  g_return_if_fail (prev_translator != NULL);
 
-const gchar *
-gtranslator_header_get_language (GtranslatorHeader * header)
-{
-  return header->priv->language;
+  g_free (header->priv->prev_translator);
+  header->priv->prev_translator = g_strdup (prev_translator);
 }
 
-void
-gtranslator_header_set_language (GtranslatorHeader * header,
-				 const gchar * data)
+gchar *
+gtranslator_header_get_language (GtranslatorHeader *header)
 {
-  if (header->priv->language)
-    g_free (header->priv->language);
-  header->priv->language = g_strdup (data);
+  gchar *space, *lang_temp, *language;
+
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  lang_temp = po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                               "Language-Team");
+  space = g_strrstr (lang_temp, " <");
+
+  if (!space)
+    language = g_strdup (lang_temp);
+  else
+    language = g_strndup (lang_temp, space - lang_temp);
+
+  g_free (lang_temp);
+
+  return language;
 }
 
-const gchar *
-gtranslator_header_get_lg_email (GtranslatorHeader * header)
+gchar *
+gtranslator_header_get_lg_email (GtranslatorHeader *header)
 {
-  return header->priv->lg_email;
+  gchar *space, *email_temp, *email;
+
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  email_temp = po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                                "Language-Team");
+  space = g_strrstr (email_temp, " <");
+
+  if (!space)
+    email = g_strdup ("");
+  else
+    email = g_strndup (space + 2, strlen (space) - 3);
+
+  g_free (email_temp);
+
+  return email;
 }
 
 void
-gtranslator_header_set_lg_email (GtranslatorHeader * header,
-				 const gchar * data)
+gtranslator_header_set_language (GtranslatorHeader *header,
+                                 const gchar *language,
+                                 const gchar *email)
 {
-  if (header->priv->lg_email)
-    g_free (header->priv->lg_email);
-  header->priv->lg_email = g_strdup (data);
+  gchar *lang_temp;
+
+  g_return_if_fail (GTR_IS_HEADER (header));
+
+  lang_temp = g_strconcat (language, " <", email, ">", NULL);
+
+  gtranslator_header_set_field (header, "Language-Team",
+                                lang_temp);
+
+  g_free (lang_temp);
 }
 
-const gchar *
-gtranslator_header_get_mime_version (GtranslatorHeader * header)
+gchar *
+gtranslator_header_get_mime_version (GtranslatorHeader *header)
 {
-  return header->priv->mime_version;
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  return po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                          "MIME-Version");
 }
 
 void
-gtranslator_header_set_mime_version (GtranslatorHeader * header,
-				     const gchar * data)
+gtranslator_header_set_mime_version (GtranslatorHeader *header,
+                                     const gchar *mime_version)
 {
-  if (header->priv->mime_version)
-    g_free (header->priv->mime_version);
-  header->priv->mime_version = g_strdup (data);
+  g_return_if_fail (GTR_IS_HEADER (header));
+
+  gtranslator_header_set_field (header, "MIME-Version",
+                                mime_version);
 }
 
-const gchar *
-gtranslator_header_get_charset (GtranslatorHeader * header)
+gchar *
+gtranslator_header_get_charset (GtranslatorHeader *header)
 {
-  return header->priv->charset;
+  gchar *space, *charset_temp, *charset;
+
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  charset_temp = po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                                  "Content-Type");
+
+  space = g_strrstr (charset_temp, "=");
+
+  if (!space)
+    charset = g_strdup ("");
+  else
+    charset = g_strdup (space + 1);
+
+  g_free (charset_temp);
+
+  return charset;
 }
 
 void
-gtranslator_header_set_charset (GtranslatorHeader * header,
-				const gchar * data)
+gtranslator_header_set_charset (GtranslatorHeader *header,
+                                const gchar *charset)
 {
-  if (header->priv->charset)
-    g_free (header->priv->charset);
-  header->priv->charset = g_strdup (data);
+  gchar *set;
+
+  g_return_if_fail (GTR_IS_HEADER (header));
+
+  set = g_strconcat(" text/plain;", " charset=",
+                    charset, NULL);
+
+  gtranslator_header_set_field (header, "Content-Type",
+                                set);
+
+  g_free (set);
 }
 
-const gchar *
-gtranslator_header_get_encoding (GtranslatorHeader * header)
+gchar *
+gtranslator_header_get_encoding (GtranslatorHeader *header)
 {
-  return header->priv->encoding;
+  g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
+
+  return po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                          "Content-Transfer-Encoding");
 }
 
 void
-gtranslator_header_set_encoding (GtranslatorHeader * header,
-				 const gchar * data)
+gtranslator_header_set_encoding (GtranslatorHeader *header,
+                                 const gchar *encoding)
 {
-  if (header->priv->encoding)
-    g_free (header->priv->encoding);
-  header->priv->encoding = g_strdup (data);
+  g_return_if_fail (GTR_IS_HEADER (header));
+
+  gtranslator_header_set_field (header, "Content-Transfer-Encoding",
+                                encoding);
 }
 
 /**
  * gtranslator_header_get_plural_forms:
  * @header: a #GtranslatorHeader.
  *
- * Return value: the plural form of the po file.
+ * Return value: a new allocated string with the plural form of the po file.
  */
-const gchar *
-gtranslator_header_get_plural_forms (GtranslatorHeader * header)
+gchar *
+gtranslator_header_get_plural_forms (GtranslatorHeader *header)
 {
   g_return_val_if_fail (GTR_IS_HEADER (header), NULL);
 
-  return (const gchar *) header->priv->plural_forms;
+  return po_header_field (gtranslator_msg_get_msgstr (GTR_MSG (header)),
+                          "Plural-Forms");
 }
 
 /**
@@ -400,91 +496,35 @@ gtranslator_header_get_plural_forms (GtranslatorHeader * header)
  */
 void
 gtranslator_header_set_plural_forms (GtranslatorHeader * header,
-				     const gchar * plural_forms)
+                                     const gchar * plural_forms)
 {
   g_return_if_fail (GTR_IS_HEADER (header));
+  g_return_if_fail (plural_forms != NULL);
 
-  if (header->priv->plural_forms)
-    g_free (header->priv->plural_forms);
-
-  if (!plural_forms)
-    {
-      header->priv->plural_forms = NULL;
-      return;
-    }
-
-  header->priv->plural_forms = g_strdup (plural_forms);
+  gtranslator_header_set_field (header, "Plural-Forms",
+                                plural_forms);
 
   /*Now we parse the plural forms to know the number of plurals */
   parse_nplurals (header);
 }
 
 /**
- * gtranslator_header_get_header_changed:
- * @header: a #GtranslatorHeader.
- *
- * Return value: TRUE if the header has changed, FALSE if not.
- */
-
-gboolean
-gtranslator_header_get_header_changed (GtranslatorHeader * header)
-{
-  g_return_val_if_fail (GTR_IS_HEADER (header), FALSE);
-
-  return header->priv->header_changed;
-}
-
-/**
- * gtranslator_header_set_header_changed:
- * @header: a #GtranslatorHeader
- * @gboolean: Indicate if the header has changed or not.
- *
- * Sets the state of the header, TRUE if has changed, FALSE if not.
- */
-
-void
-gtranslator_header_set_header_changed (GtranslatorHeader * header,
-				       gboolean change)
-{
-  header->priv->header_changed = change;
-}
-
-/**
  * gtranslator_header_get_plural:
  * @header: a #GtranslatorHeader
  *
  * Return value: The number of plurals of the po file, if there is not a plural
  * form in the po file it returns the predefined by user number of plurals 
- * or 0 if there is not a plural form string stored.
+ * or 1 if there is not a plural form string stored.
  */
 gint
 gtranslator_header_get_nplurals (GtranslatorHeader * header)
 {
   const gchar *plural_form;
-  GtranslatorProfile *profile;
-
-  profile = gtranslator_application_get_active_profile (GTR_APP);
 
-  g_return_val_if_fail (GTR_IS_HEADER (header), -1);
-  g_return_val_if_fail (profile, -1);
+  g_return_val_if_fail (GTR_IS_HEADER (header), 1);
 
-  /*
-   * If the priv->plural_forms exists that means that there is a plural
-   * form in our po file, If not we have to use the predefined plural form
-   * by the user.
-   */
-  if (header->priv->plural_forms)
+  if (header->priv->nplurals > -1)
     return header->priv->nplurals;
-  else if (plural_form =
-	   (const gchar *) gtranslator_profile_get_plurals (profile))
-    {
-      gtranslator_header_set_plural_forms (header, plural_form);
-      /*
-       * FIXME: To don't produce a gettext error maybe we have to set the
-       * plural form in the gettext header field too.
-       */
-      return header->priv->nplurals;
-    }
   else
     return 1;
 }
diff --git a/src/header.h b/src/header.h
index d73a01b..5f2c4d6 100644
--- a/src/header.h
+++ b/src/header.h
@@ -1,12 +1,12 @@
 /*
  * (C) 2007 Pablo Sanxiao <psanxiao gmail com>
  *     2008 Igalia
- *  		
+ *
  * gtranslator is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or   
  * (at your option) any later version.
- *    
+ *
  * gtranslator is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
@@ -18,6 +18,7 @@
  *
  * Authors:
  *   Pablo Sanxiao <psanxiao gmail com>
+ *   Ignacio Casal Quinteiro <icq gnome org>
  */
 
 #ifndef __HEADER_H__
@@ -26,6 +27,8 @@
 #include <glib.h>
 #include <glib-object.h>
 
+#include "msg.h"
+
 /*
  * Utility Macros
  */
@@ -47,7 +50,8 @@ typedef struct _GtranslatorHeader GtranslatorHeader;
 
 struct _GtranslatorHeader
 {
-  GObject parent_instance;
+  GtranslatorMsg parent_instance;
+
   /*< private > */
   GtranslatorHeaderPrivate *priv;
 };
@@ -59,111 +63,70 @@ typedef struct _GtranslatorHeaderClass GtranslatorHeaderClass;
 
 struct _GtranslatorHeaderClass
 {
-  GObjectClass parent_class;
+  GtranslatorMsgClass parent_class;
 };
 
 /*
  * Public methods
  */
-GType
-gtranslator_header_get_type (void)
-  G_GNUC_CONST;
-
-     GType gtranslator_header_register_type (GTypeModule * module);
-
-GtranslatorHeader * gtranslator_header_new (void);
-
-     const gchar *
-     gtranslator_header_get_comment (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_comment (GtranslatorHeader * header,
-				     const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_prj_id_version (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_prj_id_version (GtranslatorHeader * header,
-					    const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_rmbt (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_rmbt (GtranslatorHeader * header,
-				  const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_pot_date (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_pot_date (GtranslatorHeader * header,
-				      const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_po_date (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_po_date (GtranslatorHeader * header,
-				     const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_translator (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_translator (GtranslatorHeader * header,
-					const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_tr_email (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_tr_email (GtranslatorHeader * header,
-				      const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_prev_translator (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_prev_translator (GtranslatorHeader * header,
-					     const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_language (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_language (GtranslatorHeader * header,
-				      const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_lg_email (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_lg_email (GtranslatorHeader * header,
-				      const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_mime_version (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_mime_version (GtranslatorHeader * header,
-					  const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_charset (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_charset (GtranslatorHeader * header,
-				     const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_encoding (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_encoding (GtranslatorHeader * header,
-				      const gchar * data);
-
-     const gchar *
-     gtranslator_header_get_plural_forms (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_plural_forms (GtranslatorHeader * header,
-					  const gchar * plural_forms);
-
-     gboolean
-     gtranslator_header_get_header_changed (GtranslatorHeader * header);
-     void
-     gtranslator_header_set_header_changed (GtranslatorHeader * header,
-					    gboolean change);
-
-     gint
-     gtranslator_header_get_nplurals (GtranslatorHeader * header);
+GType                 gtranslator_header_get_type            (void)G_GNUC_CONST;
+
+GType                 gtranslator_header_register_type       (GTypeModule * module);
+
+GtranslatorHeader    *gtranslator_header_new                 (po_message_iterator_t iter,
+                                                              po_message_t          message);
+
+const gchar          *gtranslator_header_get_comments        (GtranslatorHeader *header);
+void                  gtranslator_header_set_comments        (GtranslatorHeader *header,
+                                                              const gchar *comments);
+
+gchar                *gtranslator_header_get_prj_id_version  (GtranslatorHeader *header);
+void                  gtranslator_header_set_prj_id_version  (GtranslatorHeader *header,
+                                                              const gchar *prj_id_version);
+
+gchar                *gtranslator_header_get_rmbt            (GtranslatorHeader *header);
+void                  gtranslator_header_set_rmbt            (GtranslatorHeader *header,
+                                                              const gchar *rmbt);
+
+gchar                *gtranslator_header_get_pot_date        (GtranslatorHeader *header);
+void                  gtranslator_header_set_pot_date        (GtranslatorHeader *header,
+                                                              const gchar *pot_date);
+
+gchar                *gtranslator_header_get_po_date         (GtranslatorHeader *header);
+void                  gtranslator_header_set_po_date         (GtranslatorHeader *header,
+                                                              const gchar *po_date);
+
+gchar                *gtranslator_header_get_translator      (GtranslatorHeader *header);
+gchar                *gtranslator_header_get_tr_email        (GtranslatorHeader *header);
+void                  gtranslator_header_set_translator      (GtranslatorHeader *header,
+                                                              const gchar *name,
+                                                              const gchar *email);
+
+const gchar          *gtranslator_header_get_prev_translator (GtranslatorHeader *header);
+void                  gtranslator_header_set_prev_translator (GtranslatorHeader *header,
+                                                              const gchar *prev_translator);
+
+gchar                *gtranslator_header_get_language        (GtranslatorHeader *header);
+gchar                *gtranslator_header_get_lg_email        (GtranslatorHeader *header);
+void                  gtranslator_header_set_language        (GtranslatorHeader *header,
+                                                              const gchar *language,
+                                                              const gchar *email);
+
+gchar                *gtranslator_header_get_mime_version    (GtranslatorHeader *header);
+void                  gtranslator_header_set_mime_version    (GtranslatorHeader *header,
+                                                              const gchar *mime_version);
+
+gchar                *gtranslator_header_get_charset         (GtranslatorHeader *header);
+void                  gtranslator_header_set_charset         (GtranslatorHeader *header,
+                                                              const gchar *charset);
+
+gchar                *gtranslator_header_get_encoding        (GtranslatorHeader *header);
+void                  gtranslator_header_set_encoding        (GtranslatorHeader *header,
+                                                              const gchar *encoding);
+
+gchar                *gtranslator_header_get_plural_forms    (GtranslatorHeader *header);
+void                  gtranslator_header_set_plural_forms    (GtranslatorHeader * header,
+                                                              const gchar * plural_forms);
+gint                  gtranslator_header_get_nplurals        (GtranslatorHeader * header);
 
 #endif /* __HEADER_H__ */



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