From: Andrea Zagli Date: Sun, 29 Nov 2020 12:05:57 +0000 (+0100) Subject: Added functions FormElement::*_attr. X-Git-Url: https://saetta.ns0.it/gitweb?a=commitdiff_plain;h=711473276b340495e4403edda4a0773983b41693;p=zakform%2Fcgi Added functions FormElement::*_attr. --- diff --git a/src/formelement.c b/src/formelement.c index 647a942..32a16b5 100644 --- a/src/formelement.c +++ b/src/formelement.c @@ -233,7 +233,7 @@ gchar if (!zak_form_element_get_editable (ZAK_FORM_ELEMENT (element))) { - g_hash_table_insert (priv->ht_attrs, (gpointer)"readonly", (gpointer)"readonly"); + zak_form_cgi_form_element_set_attr (element, "readonly", "readonly"); } g_string_append (str, ZAK_FORM_CGI_FORM_ELEMENT_GET_CLASS (element)->render (element)); @@ -305,6 +305,45 @@ gchar return ret; } +gchar +*zak_form_cgi_form_element_get_attr (ZakFormCgiFormElement *element, const gchar *attr) +{ + ZakFormCgiFormElementPrivate *priv; + + priv = ZAK_FORM_CGI_FORM_ELEMENT_GET_PRIVATE (element); + + if (priv->ht_attrs == NULL) + { + return NULL; + } + else + { + return g_hash_table_lookup (priv->ht_attrs, attr); + } +} + +void +zak_form_cgi_form_element_set_attr (ZakFormCgiFormElement *element, const gchar *attr, const gchar *value) +{ + ZakFormCgiFormElementPrivate *priv; + + priv = ZAK_FORM_CGI_FORM_ELEMENT_GET_PRIVATE (element); + + if (priv->ht_attrs == NULL) + { + priv->ht_attrs = g_hash_table_new (g_str_hash, g_str_equal); + } + + if (value == NULL) + { + g_hash_table_remove (priv->ht_attrs, attr); + } + else + { + g_hash_table_insert (priv->ht_attrs, g_strdup (attr), g_strdup (value)); + } +} + gboolean zak_form_cgi_form_element_has_class (ZakFormCgiFormElement *element, const gchar *class) { @@ -440,7 +479,7 @@ zak_form_cgi_form_element_construct (ZakFormCgiFormElement *element, if (g_hash_table_lookup (priv->ht_attrs, "name") == NULL) { - g_hash_table_insert (priv->ht_attrs, "name", g_strdup (id)); + zak_form_cgi_form_element_set_attr (element, "name", id); } zak_form_element_set_name (ZAK_FORM_ELEMENT (element), g_hash_table_lookup (priv->ht_attrs, "name")); diff --git a/src/formelement.h b/src/formelement.h index 9180114..03815b9 100644 --- a/src/formelement.h +++ b/src/formelement.h @@ -55,6 +55,9 @@ void zak_form_cgi_form_element_bind (ZakFormCgiFormElement *element, GValue *val gchar *zak_form_cgi_form_element_render (ZakFormCgiFormElement *element); gchar *zak_form_cgi_form_element_render_label (ZakFormCgiFormElement *element); +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); + gboolean zak_form_cgi_form_element_has_class (ZakFormCgiFormElement *element, const gchar *class); void zak_form_cgi_form_element_add_class (ZakFormCgiFormElement *element, const gchar *class); void zak_form_cgi_form_element_remove_class (ZakFormCgiFormElement *element, const gchar *class);