From: Andrea Zagli Date: Thu, 28 May 2020 08:47:26 +0000 (+0200) Subject: Added ZakFormGtkFormElement::get_xml. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=refs%2Fheads%2Fdevelop;p=zakform%2Fgtk Added ZakFormGtkFormElement::get_xml. --- diff --git a/src/formelement.c b/src/formelement.c index a93fed8..71e27bb 100644 --- a/src/formelement.c +++ b/src/formelement.c @@ -55,6 +55,7 @@ static gboolean zak_form_gtk_form_element_get_editable (ZakFormGtkFormElement *e static void zak_form_gtk_form_element_set_editable (ZakFormGtkFormElement *element, gboolean visible); static void zak_form_gtk_form_element_xml_parsing (ZakFormElement *element, xmlNode *xmlnode); +static void zak_form_gtk_form_element_get_xml (ZakFormGtkFormElement *element, xmlNode *xroot, const gchar *version); #define ZAK_FORM_GTK_FORM_ELEMENT_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ZAK_FORM_GTK_TYPE_FORM_ELEMENT, ZakFormGtkFormElementPrivate)) @@ -88,6 +89,7 @@ zak_form_gtk_form_element_class_init (ZakFormGtkFormElementClass *class) parent_class->set_visible = zak_form_gtk_form_element_set_visible; parent_class->get_editable = zak_form_gtk_form_element_get_editable; parent_class->set_editable = zak_form_gtk_form_element_set_editable; + parent_class->get_xml = zak_form_gtk_form_element_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormGtkFormElementPrivate)); @@ -485,3 +487,24 @@ zak_form_gtk_form_element_xml_parsing (ZakFormElement *element, xmlNode *xmlnode cur = cur->next; } } + +static void +zak_form_gtk_form_element_get_xml (ZakFormGtkFormElement *element, xmlNode *xroot, const gchar *version) +{ + xmlNode *xnode; + + ZakFormGtkFormElementPrivate *priv = ZAK_FORM_GTK_FORM_ELEMENT_GET_PRIVATE ((ZakFormGtkFormElement *)element); + + xnode = xmlNewNode (NULL, (const xmlChar *)"widget"); + xmlNodeSetContent (xnode, (xmlChar *)zak_form_gtk_form_element_get_widget_name (element)); + xmlAddChild (xroot, xnode); + + xnode = xmlNewNode (NULL, (const xmlChar *)"label"); + xmlNodeSetContent (xnode, (xmlChar *)zak_form_gtk_form_element_get_label_name (element)); + xmlAddChild (xroot, xnode); + + if (ZAK_FORM_GTK_FORM_ELEMENT_GET_CLASS (element)->get_xml!= NULL) + { + ZAK_FORM_GTK_FORM_ELEMENT_GET_CLASS (element)->get_xml (element, version, xroot); + } +} diff --git a/src/formelement.h b/src/formelement.h index 54b79ed..6c7cd74 100644 --- a/src/formelement.h +++ b/src/formelement.h @@ -40,6 +40,8 @@ struct _ZakFormGtkFormElementClass ZakFormElementClass parent_class; void (*xml_parsing) (ZakFormElement *element, xmlNode *xmlnode); + + void (*get_xml) (ZakFormElement *element, xmlNode *xroot, const gchar *version); }; diff --git a/src/formelementcheck.c b/src/formelementcheck.c index 424d283..776d50d 100644 --- a/src/formelementcheck.c +++ b/src/formelementcheck.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -42,6 +42,8 @@ static void zak_form_gtk_form_element_check_finalize (GObject *gobject); static GValue *zak_form_gtk_form_element_check_get_value (ZakFormGtkFormElementCheck *element); static gboolean zak_form_gtk_form_element_check_set_value (ZakFormGtkFormElementCheck *element, GValue *value); +static void zak_form_gtk_form_element_check_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode); + #define ZAK_FORM_GTK_FORM_ELEMENT_CHECK_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ZAK_FORM_GTK_TYPE_FORM_ELEMENT_CHECK, ZakFormGtkFormElementCheckPrivate)) typedef struct _ZakFormGtkFormElementCheckPrivate ZakFormGtkFormElementCheckPrivate; @@ -57,6 +59,7 @@ zak_form_gtk_form_element_check_class_init (ZakFormGtkFormElementCheckClass *kla { GObjectClass *object_class = G_OBJECT_CLASS (klass); ZakFormElementClass *elem_class = ZAK_FORM_ELEMENT_CLASS (klass); + ZakFormGtkFormElementClass *gtk_elem_class = ZAK_FORM_GTK_FORM_ELEMENT_CLASS (klass); object_class->set_property = zak_form_gtk_form_element_check_set_property; object_class->get_property = zak_form_gtk_form_element_check_get_property; @@ -68,6 +71,8 @@ zak_form_gtk_form_element_check_class_init (ZakFormGtkFormElementCheckClass *kla elem_class->xml_parsing = zak_form_gtk_form_element_check_xml_parsing; + gtk_elem_class->get_xml = zak_form_gtk_form_element_check_get_xml; + g_type_class_add_private (object_class, sizeof (ZakFormGtkFormElementCheckPrivate)); } @@ -202,3 +207,9 @@ zak_form_gtk_form_element_check_set_value (ZakFormGtkFormElementCheck *element, return TRUE; } + +static void +zak_form_gtk_form_element_check_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode) +{ + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_gtk_form_element_check"); +} diff --git a/src/formelementcombo.c b/src/formelementcombo.c index 2c77746..695b0e5 100644 --- a/src/formelementcombo.c +++ b/src/formelementcombo.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016-2017 Andrea Zagli + * Copyright (C) 2016-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -48,6 +48,8 @@ static void zak_form_gtk_form_element_combo_finalize (GObject *gobject); static GValue *zak_form_gtk_form_element_combo_get_value (ZakFormGtkFormElementCombo *element); static gboolean zak_form_gtk_form_element_combo_set_value (ZakFormGtkFormElementCombo *element, GValue *value); +static void zak_form_gtk_form_element_combo_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode); + #define ZAK_FORM_GTK_FORM_ELEMENT_COMBO_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ZAK_FORM_GTK_TYPE_FORM_ELEMENT_COMBO, ZakFormGtkFormElementComboPrivate)) typedef struct _ZakFormGtkFormElementComboPrivate ZakFormGtkFormElementComboPrivate; @@ -63,6 +65,7 @@ zak_form_gtk_form_element_combo_class_init (ZakFormGtkFormElementComboClass *kla { GObjectClass *object_class = G_OBJECT_CLASS (klass); ZakFormElementClass *elem_class = ZAK_FORM_ELEMENT_CLASS (klass); + ZakFormGtkFormElementClass *gtk_elem_class = ZAK_FORM_GTK_FORM_ELEMENT_CLASS (klass); object_class->set_property = zak_form_gtk_form_element_combo_set_property; object_class->get_property = zak_form_gtk_form_element_combo_get_property; @@ -74,6 +77,8 @@ zak_form_gtk_form_element_combo_class_init (ZakFormGtkFormElementComboClass *kla elem_class->xml_parsing = zak_form_gtk_form_element_combo_xml_parsing; + gtk_elem_class->get_xml = zak_form_gtk_form_element_combo_get_xml; + g_type_class_add_private (object_class, sizeof (ZakFormGtkFormElementComboPrivate)); g_object_class_install_property (object_class, PROP_COLUMN_FIELD, @@ -320,3 +325,15 @@ zak_form_gtk_form_element_combo_set_value (ZakFormGtkFormElementCombo *element, return TRUE; } + +static void +zak_form_gtk_form_element_combo_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode) +{ + xmlNode *xnode_cur; + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_gtk_form_element_combo"); + + xnode_cur = xmlNewNode (NULL, (const xmlChar *)"column-field"); + xmlNodeSetContent (xnode_cur, (xmlChar *)g_strdup_printf ("%d", zak_form_gtk_form_element_combo_get_column_field (element))); + xmlAddChild (xnode, xnode_cur); +} diff --git a/src/formelemententry.c b/src/formelemententry.c index 639f36a..7bef22b 100644 --- a/src/formelemententry.c +++ b/src/formelemententry.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -42,6 +42,8 @@ static void zak_form_gtk_form_element_entry_finalize (GObject *gobject); static GValue *zak_form_gtk_form_element_entry_get_value (ZakFormGtkFormElementEntry *element); static gboolean zak_form_gtk_form_element_entry_set_value (ZakFormGtkFormElementEntry *element, GValue *value); +static void zak_form_gtk_form_element_entry_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode); + #define ZAK_FORM_GTK_FORM_ELEMENT_ENTRY_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ZAK_FORM_GTK_TYPE_FORM_ELEMENT_ENTRY, ZakFormGtkFormElementEntryPrivate)) typedef struct _ZakFormGtkFormElementEntryPrivate ZakFormGtkFormElementEntryPrivate; @@ -57,6 +59,7 @@ zak_form_gtk_form_element_entry_class_init (ZakFormGtkFormElementEntryClass *kla { GObjectClass *object_class = G_OBJECT_CLASS (klass); ZakFormElementClass *elem_class = ZAK_FORM_ELEMENT_CLASS (klass); + ZakFormGtkFormElementClass *gtk_elem_class = ZAK_FORM_ELEMENT_CLASS (klass); object_class->set_property = zak_form_gtk_form_element_entry_set_property; object_class->get_property = zak_form_gtk_form_element_entry_get_property; @@ -68,6 +71,8 @@ zak_form_gtk_form_element_entry_class_init (ZakFormGtkFormElementEntryClass *kla elem_class->xml_parsing = zak_form_gtk_form_element_entry_xml_parsing; + gtk_elem_class->get_xml = zak_form_gtk_form_element_entry_get_xml; + g_type_class_add_private (object_class, sizeof (ZakFormGtkFormElementEntryPrivate)); } @@ -189,3 +194,9 @@ zak_form_gtk_form_element_entry_set_value (ZakFormGtkFormElementEntry *element, return TRUE; } + +static void +zak_form_gtk_form_element_entry_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode) +{ + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_gtk_form_element_entry"); +} diff --git a/src/formelementlabel.c b/src/formelementlabel.c index d9f0ab1..d01dd0a 100644 --- a/src/formelementlabel.c +++ b/src/formelementlabel.c @@ -42,6 +42,8 @@ static void zak_form_gtk_form_element_label_finalize (GObject *gobject); static GValue *zak_form_gtk_form_element_label_get_value (ZakFormGtkFormElementLabel *element); static gboolean zak_form_gtk_form_element_label_set_value (ZakFormGtkFormElementLabel *element, GValue *value); +static void zak_form_gtk_form_element_label_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode); + #define ZAK_FORM_GTK_FORM_ELEMENT_LABEL_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ZAK_FORM_GTK_TYPE_FORM_ELEMENT_LABEL, ZakFormGtkFormElementLabelPrivate)) typedef struct _ZakFormGtkFormElementLabelPrivate ZakFormGtkFormElementLabelPrivate; @@ -57,6 +59,7 @@ zak_form_gtk_form_element_label_class_init (ZakFormGtkFormElementLabelClass *kla { GObjectClass *object_class = G_OBJECT_CLASS (klass); ZakFormElementClass *elem_class = ZAK_FORM_ELEMENT_CLASS (klass); + ZakFormGtkFormElementClass *gtk_elem_class = ZAK_FORM_GTK_FORM_ELEMENT_CLASS (klass); object_class->set_property = zak_form_gtk_form_element_label_set_property; object_class->get_property = zak_form_gtk_form_element_label_get_property; @@ -68,6 +71,8 @@ zak_form_gtk_form_element_label_class_init (ZakFormGtkFormElementLabelClass *kla elem_class->xml_parsing = zak_form_gtk_form_element_label_xml_parsing; + gtk_elem_class->get_xml = zak_form_gtk_form_element_label_get_xml; + g_type_class_add_private (object_class, sizeof (ZakFormGtkFormElementLabelPrivate)); } @@ -185,3 +190,9 @@ zak_form_gtk_form_element_label_set_value (ZakFormGtkFormElementLabel *element, return TRUE; } + +static void +zak_form_gtk_form_element_label_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode) +{ + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_gtk_form_element_label"); +} diff --git a/src/formelementradio.c b/src/formelementradio.c index b7707e1..5cd32eb 100644 --- a/src/formelementradio.c +++ b/src/formelementradio.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -48,6 +48,8 @@ static void zak_form_gtk_form_element_radio_finalize (GObject *gobject); static GValue *zak_form_gtk_form_element_radio_get_value (ZakFormGtkFormElementRadio *element); static gboolean zak_form_gtk_form_element_radio_set_value (ZakFormGtkFormElementRadio *element, GValue *value); +static void zak_form_gtk_form_element_radio_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode); + #define ZAK_FORM_GTK_FORM_ELEMENT_RADIO_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ZAK_FORM_GTK_TYPE_FORM_ELEMENT_RADIO, ZakFormGtkFormElementRadioPrivate)) typedef struct _ZakFormGtkFormElementRadioPrivate ZakFormGtkFormElementRadioPrivate; @@ -63,6 +65,7 @@ zak_form_gtk_form_element_radio_class_init (ZakFormGtkFormElementRadioClass *kla { GObjectClass *object_class = G_OBJECT_CLASS (klass); ZakFormElementClass *elem_class = ZAK_FORM_ELEMENT_CLASS (klass); + ZakFormGtkFormElementClass *gtk_elem_class = ZAK_FORM_GTK_FORM_ELEMENT_CLASS (klass); object_class->set_property = zak_form_gtk_form_element_radio_set_property; object_class->get_property = zak_form_gtk_form_element_radio_get_property; @@ -74,6 +77,8 @@ zak_form_gtk_form_element_radio_class_init (ZakFormGtkFormElementRadioClass *kla elem_class->xml_parsing = zak_form_gtk_form_element_radio_xml_parsing; + gtk_elem_class->get_xml = zak_form_gtk_form_element_radio_get_xml; + g_type_class_add_private (object_class, sizeof (ZakFormGtkFormElementRadioPrivate)); g_object_class_install_property (object_class, PROP_RETURN_VALUE, @@ -293,3 +298,15 @@ zak_form_gtk_form_element_radio_set_value (ZakFormGtkFormElementRadio *element, return TRUE; } + +static void +zak_form_gtk_form_element_radio_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode) +{ + xmlNode *xnode_cur; + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_gtk_form_element_radio"); + + xnode_cur = xmlNewNode (NULL, (const xmlChar *)"return-value"); + xmlNodeSetContent (xnode_cur, (xmlChar *)zak_form_gtk_form_element_radio_get_return_value (element)); + xmlAddChild (xnode, xnode_cur); +} diff --git a/src/formelementspin.c b/src/formelementspin.c index 99f5337..24fe2aa 100644 --- a/src/formelementspin.c +++ b/src/formelementspin.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -42,6 +42,8 @@ static void zak_form_gtk_form_element_spin_finalize (GObject *gobject); static GValue *zak_form_gtk_form_element_spin_get_value (ZakFormGtkFormElementSpin *element); static gboolean zak_form_gtk_form_element_spin_set_value (ZakFormGtkFormElementSpin *element, GValue *value); +static void zak_form_gtk_form_element_spin_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode); + #define ZAK_FORM_GTK_FORM_ELEMENT_SPIN_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ZAK_FORM_GTK_TYPE_FORM_ELEMENT_SPIN, ZakFormGtkFormElementSpinPrivate)) typedef struct _ZakFormGtkFormElementSpinPrivate ZakFormGtkFormElementSpinPrivate; @@ -57,6 +59,7 @@ zak_form_gtk_form_element_spin_class_init (ZakFormGtkFormElementSpinClass *klass { GObjectClass *object_class = G_OBJECT_CLASS (klass); ZakFormElementClass *elem_class = ZAK_FORM_ELEMENT_CLASS (klass); + ZakFormGtkFormElementClass *gtk_elem_class = ZAK_FORM_GTK_FORM_ELEMENT_CLASS (klass); object_class->set_property = zak_form_gtk_form_element_spin_set_property; object_class->get_property = zak_form_gtk_form_element_spin_get_property; @@ -68,6 +71,8 @@ zak_form_gtk_form_element_spin_class_init (ZakFormGtkFormElementSpinClass *klass elem_class->xml_parsing = zak_form_gtk_form_element_spin_xml_parsing; + gtk_elem_class->get_xml = zak_form_gtk_form_element_spin_get_xml; + g_type_class_add_private (object_class, sizeof (ZakFormGtkFormElementSpinPrivate)); } @@ -189,3 +194,9 @@ zak_form_gtk_form_element_spin_set_value (ZakFormGtkFormElementSpin *element, GV return TRUE; } + +static void +zak_form_gtk_form_element_spin_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode) +{ + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_gtk_form_element_spin"); +} diff --git a/src/formelementtextview.c b/src/formelementtextview.c index 767648d..84eeaa2 100644 --- a/src/formelementtextview.c +++ b/src/formelementtextview.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2020 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -42,6 +42,8 @@ static void zak_form_gtk_form_element_textview_finalize (GObject *gobject); static GValue *zak_form_gtk_form_element_textview_get_value (ZakFormGtkFormElementTextview *element); static gboolean zak_form_gtk_form_element_textview_set_value (ZakFormGtkFormElementTextview *element, GValue *value); +static void zak_form_gtk_form_element_textview_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode); + #define ZAK_FORM_GTK_FORM_ELEMENT_TEXTVIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ZAK_FORM_GTK_TYPE_FORM_ELEMENT_TEXTVIEW, ZakFormGtkFormElementTextviewPrivate)) typedef struct _ZakFormGtkFormElementTextviewPrivate ZakFormGtkFormElementTextviewPrivate; @@ -57,6 +59,7 @@ zak_form_gtk_form_element_textview_class_init (ZakFormGtkFormElementTextviewClas { GObjectClass *object_class = G_OBJECT_CLASS (klass); ZakFormElementClass *elem_class = ZAK_FORM_ELEMENT_CLASS (klass); + ZakFormGtkFormElementClass *gtk_elem_class = ZAK_FORM_GTK_FORM_ELEMENT_CLASS (klass); object_class->set_property = zak_form_gtk_form_element_textview_set_property; object_class->get_property = zak_form_gtk_form_element_textview_get_property; @@ -68,6 +71,8 @@ zak_form_gtk_form_element_textview_class_init (ZakFormGtkFormElementTextviewClas elem_class->xml_parsing = zak_form_gtk_form_element_textview_xml_parsing; + gtk_elem_class->get_xml = zak_form_gtk_form_element_textview_get_xml; + g_type_class_add_private (object_class, sizeof (ZakFormGtkFormElementTextviewPrivate)); } @@ -198,3 +203,9 @@ zak_form_gtk_form_element_textview_set_value (ZakFormGtkFormElementTextview *ele return TRUE; } + +static void +zak_form_gtk_form_element_textview_get_xml (ZakFormGtkFormElement *element, const gchar *version, xmlNode *xnode) +{ + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_gtk_form_element_textview"); +}