]> saetta.ns0.it Git - reptool/libreptool/commitdiff
Added name and description property to report (closes #176).
authorAndrea Zagli <azagli@libero.it>
Mon, 31 Oct 2011 16:57:48 +0000 (17:57 +0100)
committerAndrea Zagli <azagli@libero.it>
Mon, 31 Oct 2011 16:57:48 +0000 (17:57 +0100)
data/reptool.dtd
data/reptool_report.dtd
src/rptreport.c
src/rptreport.h

index 862255b9a5778898716999f4561d7df922de8949..6e454e4e7d538ab890da9432f7e208e952f7f618 100644 (file)
 
 <!ELEMENT reptool (properties?, database?, page, report)>
 
-<!ELEMENT properties (unit-length?, output-type?, output-filename?, copies?)>
+<!ELEMENT properties (name?, description?, unit-length?, output-type?, output-filename?, copies?)>
+<!ELEMENT name CDATA #IMPLIED>
+<!ELEMENT description CDATA #IMPLIED>
 <!ELEMENT unit-length (pt | in | cm | mm) #IMPLIED>
 <!ELEMENT output-type (png, pdf, ps, svg, gtk, gtk-default) #IMPLIED>
 <!ELEMENT output-filename CDATA #IMPLIED>
index 9dc9fd35596593002e319fa27934630d88b77e72..cca9d2a17dab7003ec5987bf6ec9fef18d39a6f3 100644 (file)
 
 <!ELEMENT reptool_report (properties?, page*)>
 
-<!ELEMENT properties (unit-length?, output-type?, output-filename?, copies?)>
+<!ELEMENT properties (name?, description?, unit-length?, output-type?, output-filename?, copies?)>
+<!ELEMENT name CDATA #IMPLIED>
+<!ELEMENT description CDATA #IMPLIED>
 <!ELEMENT unit-length (pt | in | cm | mm) #IMPLIED>
 <!ELEMENT output-type (png, pdf, ps, svg, gtk, gtk-default) #IMPLIED>
 <!ELEMENT output-filename CDATA #IMPLIED>
index 0396fc9679394961e37ef778231fb27db2e44db6..bc97fa33823aef67e533219f7b405a4ca4e8a89f 100644 (file)
@@ -100,7 +100,9 @@ typedef struct
 enum
 {
        PROP_0,
-       PROP_UNIT_LENGTH
+       PROP_UNIT_LENGTH,
+       PROP_NAME,
+       PROP_DESCRIPTION
 };
 
 static void rpt_report_class_init (RptReportClass *klass);
@@ -162,6 +164,9 @@ struct _RptReportPrivate
                PageFooter *page_footer;
                Body *body;
 
+               gchar *name;
+               gchar *description;
+
                guint cur_page;
                gint cur_row;
                GtkTreeIter *cur_iter;
@@ -186,6 +191,18 @@ rpt_report_class_init (RptReportClass *klass)
                                                           RPT_UNIT_POINTS, RPT_UNIT_MILLIMETRE,
                                                           RPT_UNIT_POINTS,
                                                           G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+       g_object_class_install_property (object_class, PROP_NAME,
+                                        g_param_spec_string ("name",
+                                                          "Report's name",
+                                                          "Report's name.",
+                                                          "",
+                                                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+       g_object_class_install_property (object_class, PROP_DESCRIPTION,
+                                        g_param_spec_string ("description",
+                                                          "Report's description",
+                                                          "Report's description.",
+                                                          "",
+                                                          G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
 
        /**
         * RptReport::field-request:
@@ -314,7 +331,15 @@ RptReport
                                                        xmlNode *cur_property = xnodeprop->children;
                                                        while (cur_property != NULL)
                                                                {
-                                                                       if (g_strcmp0 (cur_property->name, "unit-length") == 0)
+                                                                       if (g_strcmp0 (cur_property->name, "name") == 0)
+                                                                               {
+                                                                                       g_object_set (G_OBJECT (rpt_report), "name", (const gchar *)xmlNodeGetContent (cur_property), NULL);
+                                                                               }
+                                                                       else if (g_strcmp0 (cur_property->name, "description") == 0)
+                                                                               {
+                                                                                       g_object_set (G_OBJECT (rpt_report), "description", (const gchar *)xmlNodeGetContent (cur_property), NULL);
+                                                                               }
+                                                                       else if (g_strcmp0 (cur_property->name, "unit-length") == 0)
                                                                                {
                                                                                        g_object_set (G_OBJECT (rpt_report), "unit-length", rpt_common_strunit_to_enum ((const gchar *)xmlNodeGetContent (cur_property)), NULL);
                                                                                }
@@ -1461,6 +1486,14 @@ xmlDoc
        xmlNode *xnodeprop = xmlNewNode (NULL, "properties");
        xmlAddChild (xroot, xnodeprop);
 
+       xnode = xmlNewNode (NULL, "name");
+       xmlNodeSetContent (xnode, priv->name);
+       xmlAddChild (xnodeprop, xnode);
+
+       xnode = xmlNewNode (NULL, "description");
+       xmlNodeSetContent (xnode, priv->description);
+       xmlAddChild (xnodeprop, xnode);
+
        xnode = xmlNewNode (NULL, "unit-length");
        xmlNodeSetContent (xnode, rpt_common_enum_to_strunit (priv->unit));
        xmlAddChild (xnodeprop, xnode);
@@ -1572,6 +1605,8 @@ xmlDoc
        priv->cur_page = 0;
 
        /* properties */
+       rpt_report_rptprint_set_name (xdoc, priv->name);
+       rpt_report_rptprint_set_description (xdoc, priv->description);
        rpt_report_rptprint_set_unit_length (xdoc, priv->unit);
        rpt_report_rptprint_set_output_type (xdoc, priv->output_type);
        rpt_report_rptprint_set_output_filename (xdoc, priv->output_filename);
@@ -1843,6 +1878,50 @@ xmlDoc
        return xdoc;
 }
 
+void
+rpt_report_rptprint_set_name (xmlDoc *xdoc, const gchar *name)
+{
+       xmlNode *xnodeprop;
+       xmlNode *xnode;
+       xmlNode *xroot;
+
+       xnodeprop = rpt_report_rptprint_get_properties_node (xdoc);
+       if (xnodeprop == NULL)
+               {
+                       xroot = xmlDocGetRootElement (xdoc);
+                       xnodeprop = xmlNewNode (NULL, "properties");
+                       xmlAddChild (xroot, xnodeprop);
+               }
+
+       /* TODO
+        * replace eventually already present node */
+       xnode = xmlNewNode (NULL, "name");
+       xmlNodeSetContent (xnode, name);
+       xmlAddChild (xnodeprop, xnode);
+}
+
+void
+rpt_report_rptprint_set_description (xmlDoc *xdoc, const gchar *description)
+{
+       xmlNode *xnodeprop;
+       xmlNode *xnode;
+       xmlNode *xroot;
+
+       xnodeprop = rpt_report_rptprint_get_properties_node (xdoc);
+       if (xnodeprop == NULL)
+               {
+                       xroot = xmlDocGetRootElement (xdoc);
+                       xnodeprop = xmlNewNode (NULL, "properties");
+                       xmlAddChild (xroot, xnodeprop);
+               }
+
+       /* TODO
+        * replace eventually already present node */
+       xnode = xmlNewNode (NULL, "description");
+       xmlNodeSetContent (xnode, description);
+       xmlAddChild (xnodeprop, xnode);
+}
+
 void
 rpt_report_rptprint_set_unit_length (xmlDoc *xdoc, eRptUnitLength unit)
 {
@@ -2124,6 +2203,30 @@ RptObject
        return obj;
 }
 
+void
+rpt_report_set_name (RptReport *rpt_report,
+                     const gchar *name)
+{
+       g_return_if_fail (IS_RPT_REPORT (rpt_report));
+       g_return_if_fail (name != NULL);
+
+       RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report);
+
+       priv->name = g_strstrip (g_strdup (name));
+}
+
+void
+rpt_report_set_description (RptReport *rpt_report,
+                            const gchar *description)
+{
+       g_return_if_fail (IS_RPT_REPORT (rpt_report));
+       g_return_if_fail (description != NULL);
+
+       RptReportPrivate *priv = RPT_REPORT_GET_PRIVATE (rpt_report);
+
+       priv->description = g_strstrip (g_strdup (description));
+}
+
 static void
 rpt_report_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)
 {
@@ -2132,6 +2235,14 @@ rpt_report_set_property (GObject *object, guint property_id, const GValue *value
 
        switch (property_id)
                {
+                       case PROP_NAME:
+                               rpt_report_set_name (rpt_report, g_value_get_string (value));
+                               break;
+
+                       case PROP_DESCRIPTION:
+                               rpt_report_set_description (rpt_report, g_value_get_string (value));
+                               break;
+
                        case PROP_UNIT_LENGTH:
                                priv->unit = g_value_get_int (value);
                                break;
@@ -2150,6 +2261,14 @@ rpt_report_get_property (GObject *object, guint property_id, GValue *value, GPar
 
        switch (property_id)
                {
+                       case PROP_NAME:
+                               g_value_set_string (value, priv->name);
+                               break;
+
+                       case PROP_DESCRIPTION:
+                               g_value_set_string (value, priv->description);
+                               break;
+
                        case PROP_UNIT_LENGTH:
                                g_value_set_int (value, priv->unit);
                                break;
index 681f20031ff9027a16afb5255d556114f7687533..d31131f55ad06a2b2e85fd186104ac9d4f7fdc69 100644 (file)
@@ -152,15 +152,24 @@ void rpt_report_remove_object (RptReport *rpt_report,
 RptObject *rpt_report_get_object_from_name (RptReport *rpt_report,
                                             const gchar *name);
 
+void rpt_report_set_name (RptReport *rpt_report,
+                          const gchar *name);
+void rpt_report_set_description (RptReport *rpt_report,
+                                 const gchar *description);
+
 xmlDoc *rpt_report_get_xml (RptReport *rpt_report);
 
 xmlDoc *rpt_report_get_xml_rptprint (RptReport *rpt_report);
 
 xmlDoc *rpt_report_rptprint_new (void);
+
+void rpt_report_rptprint_set_name (xmlDoc *xdoc, const gchar *name);
+void rpt_report_rptprint_set_description (xmlDoc *xdoc, const gchar *description);
 void rpt_report_rptprint_set_unit_length (xmlDoc *xdoc, eRptUnitLength unit);
 void rpt_report_rptprint_set_output_type (xmlDoc *xdoc, eRptOutputType output_type);
 void rpt_report_rptprint_set_output_filename (xmlDoc *xdoc, const gchar *output_filename);
 void rpt_report_rptprint_set_copies (xmlDoc *xdoc, guint copies);
+
 xmlNode *rpt_report_rptprint_page_new (xmlDoc *xdoc, RptSize *size, RptMargin *margin);
 void rpt_report_rptprint_page_add_object (xmlNode *xnodepage, RptObject *rpt_object);