From: Andrea Zagli Date: Tue, 10 Sep 2019 21:27:30 +0000 (+0200) Subject: Added FormElement::[gs]et_attr[s]. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=6b6db66e1ac309f318bee60d72f5d7460b6ca1fd;p=zakform%2Fcgi Added FormElement::[gs]et_attr[s]. --- diff --git a/src/formelement.c b/src/formelement.c index 7ee4a2f..3c348d9 100644 --- a/src/formelement.c +++ b/src/formelement.c @@ -37,7 +37,6 @@ static void zak_form_cgi_form_element_construct (ZakFormCgiFormElement *element, const gchar *id, GHashTable *ht_attrs); -static GHashTable *zak_form_cgi_form_element_get_ht_attrs (ZakFormCgiFormElement *element); static GHashTable *zak_form_cgi_form_element_get_ht_label_attrs (ZakFormCgiFormElement *element); static void zak_form_cgi_form_element_set_property (GObject *object, @@ -88,7 +87,6 @@ zak_form_cgi_form_element_class_init (ZakFormCgiFormElementClass *class) g_type_class_add_private (object_class, sizeof (ZakFormCgiFormElementPrivate)); class->construct = zak_form_cgi_form_element_construct; - class->get_ht_attrs = zak_form_cgi_form_element_get_ht_attrs; class->get_ht_label_attrs = zak_form_cgi_form_element_get_ht_label_attrs; } @@ -149,6 +147,62 @@ zak_form_cgi_form_element_set_label (ZakFormCgiFormElement *element, const gchar } } +GHashTable +*zak_form_cgi_form_element_get_attrs (ZakFormCgiFormElement *element) +{ + ZakFormCgiFormElementPrivate *priv; + + priv = ZAK_FORM_CGI_FORM_ELEMENT_GET_PRIVATE (element); + + return priv->ht_attrs; +} + +void +zak_form_cgi_form_element_set_attrs (ZakFormCgiFormElement *element, GHashTable *ht_attrs) +{ + ZakFormCgiFormElementPrivate *priv; + + priv = ZAK_FORM_CGI_FORM_ELEMENT_GET_PRIVATE (element); + + if (priv->ht_attrs != NULL) + { + g_hash_table_destroy (priv->ht_attrs); + } + + priv->ht_attrs = g_hash_table_ref (ht_attrs); +} + +gchar +*zak_form_cgi_form_element_get_attr (ZakFormCgiFormElement *element, const gchar *attr) +{ + gchar *ret; + + ZakFormCgiFormElementPrivate *priv; + + priv = ZAK_FORM_CGI_FORM_ELEMENT_GET_PRIVATE (element); + + ret = NULL; + if (priv->ht_attrs != NULL) + { + ret = g_hash_table_lookup (priv->ht_attrs, attr); + } + + return ret; +} + +void +zak_form_cgi_form_element_set_attr (ZakFormCgiFormElement *element, const gchar *attr, const gchar *value) +{ + ZakFormCgiFormElementPrivate *priv; + + g_return_if_fail (attr != NULL); + g_return_if_fail (value != NULL); + + priv = ZAK_FORM_CGI_FORM_ELEMENT_GET_PRIVATE (element); + + g_hash_table_replace (priv->ht_attrs, (gpointer)g_strdup (attr), (gpointer)g_strdup (value)); +} + /** * zak_form_cgi_form_element_bind: * @element: @@ -325,16 +379,6 @@ zak_form_cgi_form_element_construct (ZakFormCgiFormElement *element, return; } -static GHashTable -*zak_form_cgi_form_element_get_ht_attrs (ZakFormCgiFormElement *element) -{ - ZakFormCgiFormElementPrivate *priv; - - priv = ZAK_FORM_CGI_FORM_ELEMENT_GET_PRIVATE (element); - - return priv->ht_attrs; -} - static GHashTable *zak_form_cgi_form_element_get_ht_label_attrs (ZakFormCgiFormElement *element) { diff --git a/src/formelement.h b/src/formelement.h index 7908571..eb216d1 100644 --- a/src/formelement.h +++ b/src/formelement.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -36,7 +36,6 @@ struct _ZakFormCgiFormElementClass ZakFormElementClass parent_class; void (*construct) (ZakFormCgiFormElement *element, const gchar *id, GHashTable *ht_attrs); - GHashTable *(*get_ht_attrs) (ZakFormCgiFormElement *element); GHashTable *(*get_ht_label_attrs) (ZakFormCgiFormElement *element); @@ -50,6 +49,12 @@ gchar *zak_form_cgi_form_element_get_id (ZakFormCgiFormElement *element); void zak_form_cgi_form_element_set_label (ZakFormCgiFormElement *element, const gchar *label, ...); +GHashTable *zak_form_cgi_form_element_get_attrs (ZakFormCgiFormElement *element); +void zak_form_cgi_form_element_set_attrs (ZakFormCgiFormElement *element, GHashTable *ht_attrs); + +gchar *zak_form_cgi_form_element_get_attr (ZakFormCgiFormElement *element, const gchar *attr); +void zak_form_cgi_form_element_set_attr (ZakFormCgiFormElement *element, const gchar *attr, const gchar *value); + void zak_form_cgi_form_element_bind (ZakFormCgiFormElement *element, GValue *value); gchar *zak_form_cgi_form_element_render (ZakFormCgiFormElement *element); diff --git a/src/formelementcheck.c b/src/formelementcheck.c index 157b23b..c7691d1 100644 --- a/src/formelementcheck.c +++ b/src/formelementcheck.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -240,7 +240,7 @@ static gchar klass = (ZakFormCgiFormElementClass *)g_type_class_peek_parent (ZAK_FORM_CGI_FORM_ELEMENT_CHECK_GET_CLASS (ZAK_FORM_CGI_FORM_ELEMENT_CHECK (element))); - ht_attrs = klass->get_ht_attrs (element); + ht_attrs = zak_form_cgi_form_element_get_attrs (ZAK_FORM_CGI_FORM_ELEMENT (element)); ht_label_attrs = klass->get_ht_label_attrs (element); if (ht_label_attrs != NULL) diff --git a/src/formelementemail.c b/src/formelementemail.c index 96160e0..3aaaa80 100644 --- a/src/formelementemail.c +++ b/src/formelementemail.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016-2017 Andrea Zagli + * Copyright (C) 2016-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -175,11 +175,7 @@ static gchar gchar *value; - ZakFormCgiFormElementClass *klass; - - klass = (ZakFormCgiFormElementClass *)g_type_class_peek_parent (ZAK_FORM_CGI_FORM_ELEMENT_EMAIL_GET_CLASS (ZAK_FORM_CGI_FORM_ELEMENT_EMAIL (element))); - - ht_attrs = klass->get_ht_attrs (element); + ht_attrs = zak_form_cgi_form_element_get_attrs (ZAK_FORM_CGI_FORM_ELEMENT (element)); value = zak_form_element_get_value (ZAK_FORM_ELEMENT (element)); if (value != NULL) diff --git a/src/formelementfile.c b/src/formelementfile.c index caa1d4f..7cacfa2 100644 --- a/src/formelementfile.c +++ b/src/formelementfile.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Andrea Zagli + * Copyright (C) 2017-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -299,11 +299,7 @@ static gchar gchar *value; - ZakFormCgiFormElementClass *klass; - - klass = (ZakFormCgiFormElementClass *)g_type_class_peek_parent (ZAK_FORM_CGI_FORM_ELEMENT_FILE_GET_CLASS (ZAK_FORM_CGI_FORM_ELEMENT_FILE (element))); - - ht_attrs = klass->get_ht_attrs (element); + ht_attrs = zak_form_cgi_form_element_get_attrs (ZAK_FORM_CGI_FORM_ELEMENT (element)); value = zak_form_element_get_value (ZAK_FORM_ELEMENT (element)); if (value != NULL) diff --git a/src/formelementhidden.c b/src/formelementhidden.c index 1e1b728..73979cb 100644 --- a/src/formelementhidden.c +++ b/src/formelementhidden.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -171,11 +171,7 @@ static gchar gchar *value; - ZakFormCgiFormElementClass *klass; - - klass = (ZakFormCgiFormElementClass *)g_type_class_peek_parent (ZAK_FORM_CGI_FORM_ELEMENT_HIDDEN_GET_CLASS (ZAK_FORM_CGI_FORM_ELEMENT_HIDDEN (element))); - - ht_attrs = klass->get_ht_attrs (element); + ht_attrs = zak_form_cgi_form_element_get_attrs (ZAK_FORM_CGI_FORM_ELEMENT (element)); value = zak_form_element_get_value (ZAK_FORM_ELEMENT (element)); if (value != NULL) diff --git a/src/formelementpassword.c b/src/formelementpassword.c index 8a21d2d..b8a9c78 100644 --- a/src/formelementpassword.c +++ b/src/formelementpassword.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -175,11 +175,7 @@ static gchar gchar *value; - ZakFormCgiFormElementClass *klass; - - klass = (ZakFormCgiFormElementClass *)g_type_class_peek_parent (ZAK_FORM_CGI_FORM_ELEMENT_PASSWORD_GET_CLASS (ZAK_FORM_CGI_FORM_ELEMENT_PASSWORD (element))); - - ht_attrs = klass->get_ht_attrs (element); + ht_attrs = zak_form_cgi_form_element_get_attrs (ZAK_FORM_CGI_FORM_ELEMENT (element)); value = zak_form_element_get_value (ZAK_FORM_ELEMENT (element)); if (value != NULL) diff --git a/src/formelementradio.c b/src/formelementradio.c index 49c18ce..d8f5264 100644 --- a/src/formelementradio.c +++ b/src/formelementradio.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2017 Andrea Zagli + * Copyright (C) 2017-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -244,7 +244,7 @@ static gchar klass = (ZakFormCgiFormElementClass *)g_type_class_peek_parent (ZAK_FORM_CGI_FORM_ELEMENT_RADIO_GET_CLASS (ZAK_FORM_CGI_FORM_ELEMENT_RADIO (element))); - ht_attrs = klass->get_ht_attrs (element); + ht_attrs = zak_form_cgi_form_element_get_attrs (ZAK_FORM_CGI_FORM_ELEMENT (element)); ht_label_attrs = klass->get_ht_label_attrs (element); if (ht_label_attrs != NULL) diff --git a/src/formelementselect.c b/src/formelementselect.c index 3cb9d0e..1d0c8e3 100644 --- a/src/formelementselect.c +++ b/src/formelementselect.c @@ -210,12 +210,8 @@ static gchar gchar *gval; - ZakFormCgiFormElementClass *klass; - ZakFormCgiFormElementSelectPrivate *priv = ZAK_FORM_CGI_FORM_ELEMENT_SELECT_GET_PRIVATE (element); - klass = (ZakFormCgiFormElementClass *)g_type_class_peek_parent (ZAK_FORM_CGI_FORM_ELEMENT_SELECT_GET_CLASS (ZAK_FORM_CGI_FORM_ELEMENT_SELECT (element))); - gval = zak_form_element_get_value (ZAK_FORM_ELEMENT (element)); /* list options */ @@ -238,7 +234,7 @@ static gchar g_string_append (options, "\n"); } - ht_attrs = klass->get_ht_attrs (element); + ht_attrs = zak_form_cgi_form_element_get_attrs (ZAK_FORM_CGI_FORM_ELEMENT (element)); if (!zak_form_element_get_editable (ZAK_FORM_ELEMENT (element))) { diff --git a/src/formelementsubmit.c b/src/formelementsubmit.c index 67f091d..9a57126 100644 --- a/src/formelementsubmit.c +++ b/src/formelementsubmit.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -170,11 +170,7 @@ static gchar GString *str_attr_class; gchar *form_control; - ZakFormCgiFormElementClass *klass; - - klass = (ZakFormCgiFormElementClass *)g_type_class_peek_parent (ZAK_FORM_CGI_FORM_ELEMENT_SUBMIT_GET_CLASS (ZAK_FORM_CGI_FORM_ELEMENT_SUBMIT (element))); - - ht_attrs = klass->get_ht_attrs (element); + ht_attrs = zak_form_cgi_form_element_get_attrs (ZAK_FORM_CGI_FORM_ELEMENT (element)); attr_class = g_hash_table_lookup (ht_attrs, "class"); if (attr_class != NULL) diff --git a/src/formelementtext.c b/src/formelementtext.c index abb7712..71a1192 100644 --- a/src/formelementtext.c +++ b/src/formelementtext.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -169,11 +169,7 @@ static gchar gchar *value; - ZakFormCgiFormElementClass *klass; - - klass = (ZakFormCgiFormElementClass *)g_type_class_peek_parent (ZAK_FORM_CGI_FORM_ELEMENT_TEXT_GET_CLASS (ZAK_FORM_CGI_FORM_ELEMENT_TEXT (element))); - - ht_attrs = klass->get_ht_attrs (element); + ht_attrs = zak_form_cgi_form_element_get_attrs (ZAK_FORM_CGI_FORM_ELEMENT (element)); value = zak_form_element_get_value (ZAK_FORM_ELEMENT (element)); if (value != NULL) diff --git a/src/formelementtextarea.c b/src/formelementtextarea.c index a41efcd..70f8343 100644 --- a/src/formelementtextarea.c +++ b/src/formelementtextarea.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-2019 Andrea Zagli * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -169,11 +169,7 @@ static gchar gchar *value; - ZakFormCgiFormElementClass *klass; - - klass = (ZakFormCgiFormElementClass *)g_type_class_peek_parent (ZAK_FORM_CGI_FORM_ELEMENT_TEXT_AREA_GET_CLASS (ZAK_FORM_CGI_FORM_ELEMENT_TEXT_AREA (element))); - - ht_attrs = klass->get_ht_attrs (element); + ht_attrs = zak_form_cgi_form_element_get_attrs (ZAK_FORM_CGI_FORM_ELEMENT (element)); value = zak_form_element_get_value (ZAK_FORM_ELEMENT (element)); if (value != NULL)