From 47e2181f6a0958d997074b923f03da76345d0b88 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Mon, 13 Apr 2020 13:58:54 +0200 Subject: [PATCH] Added function ZakFormElement::set_messages. --- src/formelement.c | 43 +++++++++++++++++++++++++++++++++++++++++-- src/formelement.h | 3 ++- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/src/formelement.c b/src/formelement.c index 824952f..857ed31 100644 --- a/src/formelement.c +++ b/src/formelement.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-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 @@ -1386,6 +1386,26 @@ zak_form_element_is_valid (ZakFormElement *element) return ret; } +static gpointer +copy_ar_func (gconstpointer src, gpointer data) +{ + GPtrArray *ret; + GPtrArray *ar_src; + + guint i; + + ar_src = (GPtrArray *)src; + + ret = g_ptr_array_new (); + + for (i = 0; i < ar_src->len; i++) + { + g_ptr_array_add (ret, g_strdup ((gchar *)g_ptr_array_index (ar_src, i))); + } + + return ret; +} + /** * zak_form_element_get_messages: * @element: @@ -1396,7 +1416,26 @@ GPtrArray { ZakFormElementPrivate *priv = zak_form_element_get_instance_private (element); - return priv->pa_messages; + return g_ptr_array_copy (priv->pa_messages, copy_ar_func, NULL); +} + +/** + * zak_form_element_set_messages: + * @element: + * @messages: + * + * Sets element's messages. + */ +void +zak_form_element_set_messages (ZakFormElement *element, GPtrArray *messages) +{ + ZakFormElementPrivate *priv = zak_form_element_get_instance_private (element); + + if (priv->pa_messages != NULL) + { + g_ptr_array_free (priv->pa_messages, TRUE); + priv->pa_messages = g_ptr_array_copy (messages, copy_ar_func, NULL); + } } /** diff --git a/src/formelement.h b/src/formelement.h index 22bcbc1..41057bb 100644 --- a/src/formelement.h +++ b/src/formelement.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2015-2017 Andrea Zagli + * Copyright (C) 2015-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 @@ -134,6 +134,7 @@ GPtrArray *zak_form_element_get_filters_by_type (ZakFormElement *element, GType void zak_form_element_add_validator (ZakFormElement *element, ZakFormElementValidator *validator); gboolean zak_form_element_is_valid (ZakFormElement *element); GPtrArray *zak_form_element_get_messages (ZakFormElement *element); +void zak_form_element_set_messages (ZakFormElement *element, GPtrArray *messages); GPtrArray *zak_form_element_get_validators (ZakFormElement *element); ZakFormElementValidator *zak_form_element_get_validator_by_id (ZakFormElement *element, const gchar *id); -- 2.49.0