]> saetta.ns0.it Git - zakform/libzakform/commitdiff
Added functions ZakFormForm::get_elements and ::get_elements_by_type (closes #1105).
authorAndrea Zagli <azagli@libero.it>
Sat, 28 Jan 2017 09:42:14 +0000 (10:42 +0100)
committerAndrea Zagli <azagli@libero.it>
Sat, 28 Jan 2017 09:42:14 +0000 (10:42 +0100)
src/form.c
src/form.h

index a1730973c6f687b4eee2d9c2d3acb2a84730849c..f9d2c81928b1c5b5414e937c973482fdc1de8932 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015-2016 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2017 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
@@ -58,7 +58,6 @@ static void zak_form_form_dispose (GObject *gobject);
 static void zak_form_form_finalize (GObject *gobject);
 
 static void zak_form_form_load_modules (ZakFormForm *zakform);
-static GPtrArray *zak_form_form_get_elements (ZakFormForm *zakform);
 
 typedef struct
        {
@@ -508,6 +507,50 @@ ZakFormElement
        return ret;
 }
 
+/**
+ * zak_form_form_get_elements:
+ * @zakform:
+ *
+ * Returns: a #GPtrArray with the list of ZakFormElement's in the form.
+ */
+GPtrArray
+*zak_form_form_get_elements (ZakFormForm *zakform)
+{
+       ZakFormFormPrivate *priv = zak_form_form_get_instance_private (zakform);
+
+       return priv->ar_elements;
+}
+
+/**
+ * zak_form_form_get_elements_by_type:
+ * @zakform:
+ * @type:
+ *
+ * Returns: a #GPtrArray with the list of ZakFormElement's in the form filtered by @type.
+ */
+GPtrArray
+*zak_form_form_get_elements_by_type (ZakFormForm *zakform, GType type)
+{
+       GPtrArray *ar;
+       ZakFormElement *element;
+
+       guint i;
+
+       ZakFormFormPrivate *priv = zak_form_form_get_instance_private (zakform);
+
+       ar = g_ptr_array_new ();
+       for (i = 0; i < priv->ar_elements->len; i++)
+               {
+                       element = (ZakFormElement *)g_ptr_array_index (priv->ar_elements, i);
+                       if (G_OBJECT_TYPE (element) == type)
+                               {
+                                       g_ptr_array_add (ar, element);
+                               }
+               }
+
+       return ar;
+}
+
 /**
  * zak_form_form_add_validator:
  * @zakform:
@@ -913,11 +956,3 @@ zak_form_form_load_modules (ZakFormForm* zakform)
                        g_warning (_("Modules not supported by this operating system."));
                }
 }
-
-static GPtrArray
-*zak_form_form_get_elements (ZakFormForm *zakform)
-{
-       ZakFormFormPrivate *priv = zak_form_form_get_instance_private (zakform);
-
-       return priv->ar_elements;
-}
index e97ca2a36807235088187463927595ed1dafff27..88c4cfd6459a93283a18493def04b047a0fcd530 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2015 Andrea Zagli <azagli@libero.it>
+ * Copyright (C) 2015-2017 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
@@ -50,6 +50,8 @@ gboolean zak_form_form_load_from_file (ZakFormForm *zakform, const gchar *filena
 
 gboolean zak_form_form_add_element (ZakFormForm *zakform, ZakFormElement *element);
 ZakFormElement *zak_form_form_get_element_by_id (ZakFormForm *zakform, const gchar *id);
+GPtrArray *zak_form_form_get_elements (ZakFormForm *zakform);
+GPtrArray *zak_form_form_get_elements_by_type (ZakFormForm *zakform, GType type);
 
 gboolean zak_form_form_add_validator (ZakFormForm *zakform, ZakFormValidator *validator);