From cd9adac7a244bc950c2e1e9c5d91ec359a3b75c7 Mon Sep 17 00:00:00 2001 From: Andrea Zagli Date: Tue, 1 Sep 2009 15:50:40 +0200 Subject: [PATCH] Added GtkForm::set_sensitive_by_name. --- src/form.c | 45 +++++++++++++++++++++++++++++++++++++++++++-- src/form.h | 2 ++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/form.c b/src/form.c index f6faca1..646e057 100644 --- a/src/form.c +++ b/src/form.c @@ -929,7 +929,7 @@ gtk_form_is_changed (GtkForm *form) /** * gtk_form_set_sensitive: * @form: a #GtkForm object. - * @sensitive: whether to set every #GtkForm's widget sensitive or not. + * @sensitive: whether to set every #GtkFormWidget's sensitive or not. * */ void @@ -953,10 +953,51 @@ gtk_form_set_sensitive (GtkForm *form, gboolean sensitive) } } +/** + * gtk_form_set_sensitive_by_name: + * @form: a #GtkForm object. + * @sensitive: whether to set #GtkWidget's sensitive or not. + * @...: + * + */ +void +gtk_form_set_sensitive_by_name (GtkForm *form, gboolean sensitive, ...) +{ + GtkFormPrivate *priv; + + va_list vargs; + gchar *object_name; + + GObject *object; + + g_return_val_if_fail (IS_GTK_FORM (form), NULL); + + priv = GTK_FORM_GET_PRIVATE (form); + + g_return_val_if_fail (GTK_IS_BUILDER (priv->gtkbuilder), NULL); + + va_start (vargs, form); + + while ((object_name = va_arg (vargs, gchar *)) != NULL) + { + object = gtk_builder_get_object (priv->gtkbuilder, object_name); + if (GTK_IS_WIDGET (object)) + { + gtk_widget_set_sensitive (GTK_WIDGET (object), sensitive); + } + else + { + g_warning ("Object «%s» not found.", object_name); + } + } + + va_end (vargs); +} + /** * gtk_form_set_editable: * @form: a #GtkForm object. - * @editable: whether to set every #GtkForm's widget editable or not. + * @editable: whether to set every #GtkFormWidget's editable or not. * */ void diff --git a/src/form.h b/src/form.h index 63b6320..31d63e3 100644 --- a/src/form.h +++ b/src/form.h @@ -87,6 +87,8 @@ gboolean gtk_form_check (GtkForm *form, gboolean with_key, gboolean gtk_form_is_changed (GtkForm *form); void gtk_form_set_sensitive (GtkForm *form, gboolean sensitive); +void gtk_form_set_sensitive_by_name (GtkForm *form, gboolean sensitive, ...); + void gtk_form_set_editable (GtkForm *form, gboolean editable); typedef enum -- 2.49.0