]> saetta.ns0.it Git - zakform/cgi/commitdiff
Added FormElement::[gs]et_attr[s].
authorAndrea Zagli <azagli@libero.it>
Tue, 10 Sep 2019 21:27:30 +0000 (23:27 +0200)
committerAndrea Zagli <azagli@libero.it>
Tue, 10 Sep 2019 21:27:30 +0000 (23:27 +0200)
12 files changed:
src/formelement.c
src/formelement.h
src/formelementcheck.c
src/formelementemail.c
src/formelementfile.c
src/formelementhidden.c
src/formelementpassword.c
src/formelementradio.c
src/formelementselect.c
src/formelementsubmit.c
src/formelementtext.c
src/formelementtextarea.c

index 7ee4a2fdc65167ea78405219e623d56762e9b805..3c348d996e2934dad376583d6c69d7ac622f5e94 100644 (file)
@@ -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)
 {
index 79085710218308e7e5c31ce2ba2fb3167fa1510a..eb216d13a796bfc94783183564b6ed44f9b77029 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2019 Andrea Zagli <azagli@libero.it>
  *
  * 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);
index 157b23bf24e999cb69de4cac7a4336c9987c9b7b..c7691d1eacd87a3336fb7f491f3f7c60bae1ae97 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2019 Andrea Zagli <azagli@libero.it>
  *
  * 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)
index 96160e08bc03183dff982c67c1048b1ab2862d8a..3aaaa80f2132ace4e23b976e00cbd296bb0c5531 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2016-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2016-2019 Andrea Zagli <azagli@libero.it>
  *
  * 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)
index caa1d4f0baf592253e10d1eb3e8d1b03a835c28e..7cacfa2d13e7be6580b1306f4fa3a1f092a64f9b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2017-2019 Andrea Zagli <azagli@libero.it>
  *
  * 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)
index 1e1b7285b3d28404d943488d23a9c9f44421d85c..73979cb712027c5882addcd2214a0b2956e35464 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2019 Andrea Zagli <azagli@libero.it>
  *
  * 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)
index 8a21d2dfc38b6d66441bdf902fe24c8958760496..b8a9c789eacd8aa392046be71e3a825a84446da8 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2019 Andrea Zagli <azagli@libero.it>
  *
  * 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)
index 49c18ce4a04f893cf956e0bd1abd5820a81f98e6..d8f52645455032a49df8bd7b470fa439d2f0f6d3 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2017-2019 Andrea Zagli <azagli@libero.it>
  *
  * 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)
index 3cb9d0e7400ee550813e255b5008943e2eb820ae..1d0c8e3cc568b0eec2556756a9a0a3beb3feb576 100644 (file)
@@ -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)))
                {
index 67f091d14a480ce3efc089d5dd079e41d73112b9..9a571266183bb5671e4f7db826739ac3b6b283b9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2019 Andrea Zagli <azagli@libero.it>
  *
  * 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)
index abb771286d288b33ccd4e48d8b2aea211e676f79..71a1192d1c7726930ea6e8d4fa10e9b732cb6763 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2019 Andrea Zagli <azagli@libero.it>
  *
  * 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)
index a41efcdd379f78ded825c826e0a040b852b0a304..70f83431cae8ff4a018f50878af61e7a45985f28 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2017 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2019 Andrea Zagli <azagli@libero.it>
  *
  * 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)