From e0337f0580b450bb9b1fab2822922ebfdb38ef38 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Thu, 28 May 2020 10:46:24 +0200 Subject: [PATCH] Enabled get_xml for ZakFormElementArray; variables order uniformed. --- src/formelementarray.c | 46 +++++++++++++++++++++++++----- src/formelementfilter.c | 2 +- src/formelementfilter.h | 2 +- src/formelementfilterluc.c | 4 +-- src/formelementfiltertrim.c | 4 +-- src/formelementvalidator.c | 2 +- src/formelementvalidator.h | 2 +- src/formelementvalidatordate.c | 4 +-- src/formelementvalidatorisnumber.c | 4 +-- src/formelementvalidatornotempty.c | 4 +-- src/formelementvalidatornumber.c | 4 +-- src/formelementvalidatorregex.c | 4 +-- src/formvalidator.c | 2 +- src/formvalidatorcompare.c | 4 +-- src/formvalidatorcomparedate.c | 4 +-- src/formvalidatorcomparenumber.c | 4 +-- 16 files changed, 64 insertions(+), 32 deletions(-) diff --git a/src/formelementarray.c b/src/formelementarray.c index 6c9b11f..15d3e7c 100644 --- a/src/formelementarray.c +++ b/src/formelementarray.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Andrea Zagli + * Copyright (C) 2017-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 @@ -53,11 +53,14 @@ static gboolean zak_form_element_array_get_editable (ZakFormElement *element); static void zak_form_element_array_clear (ZakFormElement *element); static gboolean zak_form_element_array_is_valid (ZakFormElement *element); +static void zak_form_element_array_get_xml (ZakFormElement *element, xmlNode *xnode, const gchar *version); + #define ZAK_FORM_ELEMENT_ARRAY_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), ZAK_FORM_TYPE_ELEMENT_ARRAY, ZakFormElementArrayPrivate)) typedef struct _ZakFormElementArrayPrivate ZakFormElementArrayPrivate; struct _ZakFormElementArrayPrivate { + gchar *handler_name; GPtrArray *ar_elements; }; @@ -85,6 +88,7 @@ zak_form_element_array_class_init (ZakFormElementArrayClass *klass) elem_class->get_editable = zak_form_element_array_get_editable; elem_class->clear = zak_form_element_array_clear; elem_class->is_valid = zak_form_element_array_is_valid; + elem_class->get_xml = zak_form_element_array_get_xml; g_type_class_add_private (object_class, sizeof (ZakFormElementArrayPrivate)); @@ -109,6 +113,7 @@ zak_form_element_array_init (ZakFormElementArray *zak_form_element_array) { ZakFormElementArrayPrivate *priv = ZAK_FORM_ELEMENT_ARRAY_GET_PRIVATE (zak_form_element_array); + priv->handler_name = NULL; priv->ar_elements = g_ptr_array_new (); } @@ -145,6 +150,8 @@ zak_form_element_array_xml_parsing (ZakFormElement *element, xmlNodePtr xmlnode) ZakFormElementConstructorFunc element_constructor; + ZakFormElementArrayPrivate *priv = ZAK_FORM_ELEMENT_ARRAY_GET_PRIVATE (element); + cur = xmlnode->children; while (cur != NULL) { @@ -152,23 +159,22 @@ zak_form_element_array_xml_parsing (ZakFormElement *element, xmlNodePtr xmlnode) { GModule *module; GCallback func; - gchar *handler_name; module = g_module_open (NULL, G_MODULE_BIND_LAZY); if (module != NULL) { - handler_name = (gchar *)xmlNodeGetContent (cur); + priv->handler_name = g_strdup ((gchar *)xmlNodeGetContent (cur)); - if (!g_module_symbol (module, handler_name, (gpointer)&func)) + if (!g_module_symbol (module, priv->handler_name, (gpointer)&func)) { - g_warning (_("Could not find signal handler '%s'."), handler_name); + g_warning (_("Could not find signal handler '%s'."), priv->handler_name); + g_free (priv->handler_name); + priv->handler_name = NULL; } else { g_signal_connect (element, "element-added", func, NULL); } - - g_free (handler_name); } } else if (xmlStrEqual (cur->name, (const xmlChar *)"element")) @@ -565,3 +571,29 @@ zak_form_element_array_is_valid (ZakFormElement *element) return ret; } + +static void +zak_form_element_array_get_xml (ZakFormElement *element, xmlNode *xnode, const gchar *version) +{ + guint i; + + xmlNode *cur; + + ZakFormElementArrayPrivate *priv = ZAK_FORM_ELEMENT_ARRAY_GET_PRIVATE (element); + + xmlSetProp (xnode, (const xmlChar *)"type", (const xmlChar *)"zak_form_element_array"); + + if (priv->handler_name != NULL + && g_strcmp0 (priv->handler_name, "") != 0) + { + cur = xmlNewNode (NULL, (const xmlChar *)"signal-element-added"); + xmlNodeSetContent (cur, (xmlChar *)priv->handler_name); + xmlAddChild (xnode, cur); + } + + for (i = 0; i < priv->ar_elements->len; i++) + { + cur = zak_form_element_get_xml ((ZakFormElement *)g_ptr_array_index (priv->ar_elements, i), version); + xmlAddChild (xnode, cur); + } +} diff --git a/src/formelementfilter.c b/src/formelementfilter.c index 7fa8186..12a2e9f 100644 --- a/src/formelementfilter.c +++ b/src/formelementfilter.c @@ -219,7 +219,7 @@ xmlNode if (ZAK_FORM_ELEMENT_FILTER_GET_CLASS (filter)->get_xml!= NULL) { - ZAK_FORM_ELEMENT_FILTER_GET_CLASS (filter)->get_xml (filter, version, xnode); + ZAK_FORM_ELEMENT_FILTER_GET_CLASS (filter)->get_xml (filter, xnode, version); } return xnode; diff --git a/src/formelementfilter.h b/src/formelementfilter.h index 35ff256..e859963 100644 --- a/src/formelementfilter.h +++ b/src/formelementfilter.h @@ -37,7 +37,7 @@ struct _ZakFormElementFilterClass gboolean (*xml_parsing) (ZakFormElementFilter *filter, xmlNode *xnode); gchar *(*filter) (ZakFormElementFilter *self, const gchar *value); - void (*get_xml) (ZakFormElementFilter *self, const gchar *version, xmlNode *xnode); + void (*get_xml) (ZakFormElementFilter *self, xmlNode *xnode, const gchar *version); }; gboolean zak_form_element_filter_xml_parsing (ZakFormElementFilter *filter, xmlNode *xnode); diff --git a/src/formelementfilterluc.c b/src/formelementfilterluc.c index 9e87073..69bd721 100644 --- a/src/formelementfilterluc.c +++ b/src/formelementfilterluc.c @@ -44,7 +44,7 @@ static void zak_form_element_filter_luc_finalize (GObject *gobject); static gboolean zak_form_element_filter_luc_xml_parsing (ZakFormElementFilter *filter, xmlNode *xnode); static gchar *zak_form_element_filter_luc_filter (ZakFormElementFilter *filter_luc, const gchar *value); -static void zak_form_element_filter_luc_get_xml (ZakFormElementFilter *filter, const gchar *version, xmlNode *xnode); +static void zak_form_element_filter_luc_get_xml (ZakFormElementFilter *filter, xmlNode *xnode, const gchar *version); enum { @@ -248,7 +248,7 @@ static gchar } static void -zak_form_element_filter_luc_get_xml (ZakFormElementFilter *filter, const gchar *version, xmlNode *xnode) +zak_form_element_filter_luc_get_xml (ZakFormElementFilter *filter, xmlNode *xnode, const gchar *version) { ZakFormElementFilterLuc *zak_form_element = ZAK_FORM_ELEMENT_FILTER_LUC (filter); ZakFormElementFilterLucPrivate *priv = ZAK_FORM_ELEMENT_FILTER_LUC_GET_PRIVATE (zak_form_element); diff --git a/src/formelementfiltertrim.c b/src/formelementfiltertrim.c index e38ebf6..1e4f7cf 100644 --- a/src/formelementfiltertrim.c +++ b/src/formelementfiltertrim.c @@ -40,7 +40,7 @@ static void zak_form_element_filter_trim_finalize (GObject *gobject); static gboolean zak_form_element_filter_trim_xml_parsing (ZakFormElementFilter *filter, xmlNode *xnode); static gchar *zak_form_element_filter_trim_filter (ZakFormElementFilter *filter_trim, const gchar *value); -static void zak_form_element_filter_trim_get_xml (ZakFormElementFilter *filter, const gchar *version, xmlNode *xnode); +static void zak_form_element_filter_trim_get_xml (ZakFormElementFilter *filter, xmlNode *xnode, const gchar *version); struct _ZakFormElementFilterTrim { @@ -191,7 +191,7 @@ static gchar } static void -zak_form_element_filter_trim_get_xml (ZakFormElementFilter *filter, const gchar *version, xmlNode *xnode) +zak_form_element_filter_trim_get_xml (ZakFormElementFilter *filter, xmlNode *xnode, const gchar *version) { ZakFormElementFilterTrim *zak_form_element = ZAK_FORM_ELEMENT_FILTER_TRIM (filter); ZakFormElementFilterTrimPrivate *priv = ZAK_FORM_ELEMENT_FILTER_TRIM_GET_PRIVATE (zak_form_element); diff --git a/src/formelementvalidator.c b/src/formelementvalidator.c index ad7f695..d3f7edd 100644 --- a/src/formelementvalidator.c +++ b/src/formelementvalidator.c @@ -277,7 +277,7 @@ xmlNode if (ZAK_FORM_ELEMENT_VALIDATOR_GET_CLASS (validator)->get_xml!= NULL) { - ZAK_FORM_ELEMENT_VALIDATOR_GET_CLASS (validator)->get_xml (validator, version, xnode); + ZAK_FORM_ELEMENT_VALIDATOR_GET_CLASS (validator)->get_xml (validator, xnode, version); } return xnode; diff --git a/src/formelementvalidator.h b/src/formelementvalidator.h index bff37c2..e6c6bf3 100644 --- a/src/formelementvalidator.h +++ b/src/formelementvalidator.h @@ -37,7 +37,7 @@ struct _ZakFormElementValidatorClass gboolean (*xml_parsing) (ZakFormElementValidator *self, xmlNode *xnode); gboolean (*validate) (ZakFormElementValidator *self, const gchar *value); - void (*get_xml) (ZakFormElementValidator *self, const gchar *version, xmlNode *xnode); + void (*get_xml) (ZakFormElementValidator *self, xmlNode *xnode, const gchar *version); }; gboolean zak_form_element_validator_xml_parsing (ZakFormElementValidator *self, xmlNode *xnode); diff --git a/src/formelementvalidatordate.c b/src/formelementvalidatordate.c index c6911d7..1f9f93f 100644 --- a/src/formelementvalidatordate.c +++ b/src/formelementvalidatordate.c @@ -44,7 +44,7 @@ static void zak_form_element_validator_date_finalize (GObject *gobject); static gboolean zak_form_element_validator_date_xml_parsing (ZakFormElementValidator *validator, xmlNode *xnode); static gboolean zak_form_element_validator_date_validate (ZakFormElementValidator *validator_date, const gchar *value); -static void zak_form_element_validator_date_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode); +static void zak_form_element_validator_date_get_xml (ZakFormElementValidator *validator, xmlNode *xnode, const gchar *version); struct _ZakFormElementValidatorDate { @@ -394,7 +394,7 @@ zak_form_element_validator_date_validate (ZakFormElementValidator *validator_dat } static void -zak_form_element_validator_date_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode) +zak_form_element_validator_date_get_xml (ZakFormElementValidator *validator, xmlNode *xnode, const gchar *version) { ZakFormElementValidatorDate *validator_date = ZAK_FORM_ELEMENT_VALIDATOR_DATE (validator); ZakFormElementValidatorDatePrivate *priv = ZAK_FORM_ELEMENT_VALIDATOR_DATE_GET_PRIVATE (validator_date); diff --git a/src/formelementvalidatorisnumber.c b/src/formelementvalidatorisnumber.c index 2f707bc..07fee20 100644 --- a/src/formelementvalidatorisnumber.c +++ b/src/formelementvalidatorisnumber.c @@ -45,7 +45,7 @@ static void zak_form_element_validator_is_number_finalize (GObject *gobject); static gboolean zak_form_element_validator_is_number_xml_parsing (ZakFormElementValidator *validator, xmlNode *xnode); static gboolean zak_form_element_validator_is_number_validate (ZakFormElementValidator *validator_is_number, const gchar *value); -static void zak_form_element_validator_is_number_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode); +static void zak_form_element_validator_is_number_get_xml (ZakFormElementValidator *validator, xmlNode *xnode, const gchar *version); struct _ZakFormElementValidatorIsNumber { @@ -347,7 +347,7 @@ zak_form_element_validator_is_number_validate (ZakFormElementValidator *validato } static void -zak_form_element_validator_is_number_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode) +zak_form_element_validator_is_number_get_xml (ZakFormElementValidator *validator, xmlNode *xnode, const gchar *version) { ZakFormElementValidatorIsNumber *validator_isnumber = ZAK_FORM_ELEMENT_VALIDATOR_IS_NUMBER (validator); ZakFormElementValidatorIsNumberPrivate *priv = ZAK_FORM_ELEMENT_VALIDATOR_IS_NUMBER_GET_PRIVATE (validator_isnumber); diff --git a/src/formelementvalidatornotempty.c b/src/formelementvalidatornotempty.c index 498a67a..cb219be 100644 --- a/src/formelementvalidatornotempty.c +++ b/src/formelementvalidatornotempty.c @@ -46,7 +46,7 @@ static void zak_form_element_validator_notempty_finalize (GObject *gobject); static gboolean zak_form_element_validator_notempty_xml_parsing (ZakFormElementValidator *validator, xmlNode *xnode); static gboolean zak_form_element_validator_notempty_validate (ZakFormElementValidator *validator_notempty, const gchar *value); -static void zak_form_element_validator_notempty_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode); +static void zak_form_element_validator_notempty_get_xml (ZakFormElementValidator *validator, xmlNode *xnode, const gchar *version); struct _ZakFormElementValidatorNotempty { @@ -260,7 +260,7 @@ zak_form_element_validator_notempty_validate (ZakFormElementValidator *validator } static void -zak_form_element_validator_notempty_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode) +zak_form_element_validator_notempty_get_xml (ZakFormElementValidator *validator, xmlNode *xnode, const gchar *version) { ZakFormElementValidatorNotempty *validator_notempty = ZAK_FORM_ELEMENT_VALIDATOR_NOTEMPTY (validator); ZakFormElementValidatorNotemptyPrivate *priv = ZAK_FORM_ELEMENT_VALIDATOR_NOTEMPTY_GET_PRIVATE (validator_notempty); diff --git a/src/formelementvalidatornumber.c b/src/formelementvalidatornumber.c index 5fb26d2..77ace76 100644 --- a/src/formelementvalidatornumber.c +++ b/src/formelementvalidatornumber.c @@ -44,7 +44,7 @@ static void zak_form_element_validator_number_finalize (GObject *gobject); static gboolean zak_form_element_validator_number_xml_parsing (ZakFormElementValidator *validator, xmlNode *xnode); static gboolean zak_form_element_validator_number_validate (ZakFormElementValidator *validator_number, const gchar *value); -static void zak_form_element_validator_number_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode); +static void zak_form_element_validator_number_get_xml (ZakFormElementValidator *validator, xmlNode *xnode, const gchar *version); struct _ZakFormElementValidatorNumber { @@ -300,7 +300,7 @@ zak_form_element_validator_number_validate (ZakFormElementValidator *validator_n } static void -zak_form_element_validator_number_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode) +zak_form_element_validator_number_get_xml (ZakFormElementValidator *validator, xmlNode *xnode, const gchar *version) { ZakFormElementValidatorNumber *validator_number = ZAK_FORM_ELEMENT_VALIDATOR_NUMBER (validator); ZakFormElementValidatorNumberPrivate *priv = ZAK_FORM_ELEMENT_VALIDATOR_NUMBER_GET_PRIVATE (validator_number); diff --git a/src/formelementvalidatorregex.c b/src/formelementvalidatorregex.c index a7fc1cc..23a7b2b 100644 --- a/src/formelementvalidatorregex.c +++ b/src/formelementvalidatorregex.c @@ -46,7 +46,7 @@ static void zak_form_element_validator_regex_finalize (GObject *gobject); static gboolean zak_form_element_validator_regex_xml_parsing (ZakFormElementValidator *validator, xmlNode *xnode); static gboolean zak_form_element_validator_regex_validate (ZakFormElementValidator *validator_regex, const gchar *value); -static void zak_form_element_validator_regex_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode); +static void zak_form_element_validator_regex_get_xml (ZakFormElementValidator *validator, xmlNode *xnode, const gchar *version); struct _ZakFormElementValidatorRegex { @@ -272,7 +272,7 @@ zak_form_element_validator_regex_validate (ZakFormElementValidator *validator_re } static void -zak_form_element_validator_regex_get_xml (ZakFormElementValidator *validator, const gchar *version, xmlNode *xnode) +zak_form_element_validator_regex_get_xml (ZakFormElementValidator *validator, xmlNode *xnode, const gchar *version) { ZakFormElementValidatorRegex *validator_regex = ZAK_FORM_ELEMENT_VALIDATOR_REGEX (validator); ZakFormElementValidatorRegexPrivate *priv = ZAK_FORM_ELEMENT_VALIDATOR_REGEX_GET_PRIVATE (validator_regex); diff --git a/src/formvalidator.c b/src/formvalidator.c index 0b15726..a7e80cb 100644 --- a/src/formvalidator.c +++ b/src/formvalidator.c @@ -287,7 +287,7 @@ xmlNode if (ZAK_FORM_VALIDATOR_GET_CLASS (validator)->get_xml!= NULL) { - ZAK_FORM_VALIDATOR_GET_CLASS (validator)->get_xml (validator, version, xnode); + ZAK_FORM_VALIDATOR_GET_CLASS (validator)->get_xml (validator, xnode, version); } return xnode; diff --git a/src/formvalidatorcompare.c b/src/formvalidatorcompare.c index 906f84c..32f2f29 100644 --- a/src/formvalidatorcompare.c +++ b/src/formvalidatorcompare.c @@ -45,7 +45,7 @@ static void zak_form_validator_compare_finalize (GObject *gobject); static gboolean zak_form_validator_compare_xml_parsing (ZakFormValidator *validator, xmlNode *xnode, gpointer form); static gboolean zak_form_validator_compare_validate (ZakFormValidator *validator_notempty); -static void zak_form_validator_compare_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode); +static void zak_form_validator_compare_get_xml (ZakFormValidator *validator, xmlNode *xnode, const gchar *version); struct _ZakFormValidatorCompare { @@ -364,7 +364,7 @@ zak_form_validator_compare_validate (ZakFormValidator *validator) } static void -zak_form_validator_compare_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode) +zak_form_validator_compare_get_xml (ZakFormValidator *validator, xmlNode *xnode, const gchar *version) { ZakFormValidatorCompare *validator_compare = ZAK_FORM_VALIDATOR_COMPARE (validator); ZakFormValidatorComparePrivate *priv = ZAK_FORM_VALIDATOR_COMPARE_GET_PRIVATE (validator_compare); diff --git a/src/formvalidatorcomparedate.c b/src/formvalidatorcomparedate.c index 58dc8a1..31cb982 100644 --- a/src/formvalidatorcomparedate.c +++ b/src/formvalidatorcomparedate.c @@ -46,7 +46,7 @@ static void zak_form_validator_compare_date_finalize (GObject *gobject); static gboolean zak_form_validator_compare_date_xml_parsing (ZakFormValidator *validator, xmlNode *xnode, gpointer form); static gboolean zak_form_validator_compare_date_validate (ZakFormValidator *validator_notempty); -static void zak_form_validator_compare_date_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode); +static void zak_form_validator_compare_date_get_xml (ZakFormValidator *validator, xmlNode *xnode, const gchar *version); struct _ZakFormValidatorCompareDate { @@ -434,7 +434,7 @@ zak_form_validator_compare_date_validate (ZakFormValidator *validator) } static void -zak_form_validator_compare_date_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode) +zak_form_validator_compare_date_get_xml (ZakFormValidator *validator, xmlNode *xnode, const gchar *version) { ZakFormValidatorCompareDate *validator_compare_date = ZAK_FORM_VALIDATOR_COMPARE_DATE (validator); ZakFormValidatorCompareDatePrivate *priv = ZAK_FORM_VALIDATOR_COMPARE_DATE_GET_PRIVATE (validator_compare_date); diff --git a/src/formvalidatorcomparenumber.c b/src/formvalidatorcomparenumber.c index 88bb514..62a8c6f 100644 --- a/src/formvalidatorcomparenumber.c +++ b/src/formvalidatorcomparenumber.c @@ -46,7 +46,7 @@ static void zak_form_validator_compare_number_finalize (GObject *gobject); static gboolean zak_form_validator_compare_number_xml_parsing (ZakFormValidator *validator, xmlNode *xnode, gpointer form); static gboolean zak_form_validator_compare_number_validate (ZakFormValidator *validator_notempty); -static void zak_form_validator_compare_number_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode); +static void zak_form_validator_compare_number_get_xml (ZakFormValidator *validator, xmlNode *xnode, const gchar *version); struct _ZakFormValidatorCompareNumber { @@ -366,7 +366,7 @@ zak_form_validator_compare_number_validate (ZakFormValidator *validator) } static void -zak_form_validator_compare_number_get_xml (ZakFormValidator *validator, const gchar *version, xmlNode *xnode) +zak_form_validator_compare_number_get_xml (ZakFormValidator *validator, xmlNode *xnode, const gchar *version) { ZakFormValidatorCompareNumber *validator_compare_number = ZAK_FORM_VALIDATOR_COMPARE_NUMBER (validator); ZakFormValidatorCompareNumberPrivate *priv = ZAK_FORM_VALIDATOR_COMPARE_NUMBER_GET_PRIVATE (validator_compare_number); -- 2.49.0