SF.net SVN: geany-plugins:[1870] trunk/geany-plugins/webhelper/src
colombanw at users.sourceforge.net
colombanw at xxxxx
Sun Jan 23 14:24:39 UTC 2011
Revision: 1870
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1870&view=rev
Author: colombanw
Date: 2011-01-23 14:24:39 +0000 (Sun, 23 Jan 2011)
Log Message:
-----------
WebHelper: add gwh_settings_widget_sync_v()
Modified Paths:
--------------
trunk/geany-plugins/webhelper/src/gwh-settings.c
trunk/geany-plugins/webhelper/src/gwh-settings.h
Modified: trunk/geany-plugins/webhelper/src/gwh-settings.c
===================================================================
--- trunk/geany-plugins/webhelper/src/gwh-settings.c 2011-01-23 14:24:16 UTC (rev 1869)
+++ trunk/geany-plugins/webhelper/src/gwh-settings.c 2011-01-23 14:24:39 UTC (rev 1870)
@@ -20,6 +20,7 @@
#include "gwh-settings.h"
#include <string.h>
+#include <stdarg.h>
#include <glib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
@@ -777,19 +778,18 @@
return gwh_settings_widget_new_full (self, prop_name, NULL, NULL, 0);
}
-void
-gwh_settings_widget_sync (GwhSettings *self,
- GtkWidget *widget)
+static gboolean
+gwh_settings_widget_sync_internal (GwhSettings *self,
+ GtkWidget *widget)
{
GParamSpec *pspec;
- g_return_if_fail (GWH_IS_SETTINGS (self));
- g_return_if_fail (G_IS_OBJECT (widget));
+ g_return_val_if_fail (G_IS_OBJECT (widget), FALSE);
widget = g_object_get_data (G_OBJECT (widget), KEY_WIDGET);
- g_return_if_fail (GTK_IS_WIDGET (widget));
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE);
pspec = g_object_get_data (G_OBJECT (widget), KEY_PSPEC);
- g_return_if_fail (G_IS_PARAM_SPEC (pspec));
+ g_return_val_if_fail (G_IS_PARAM_SPEC (pspec), FALSE);
switch (G_TYPE_FUNDAMENTAL (pspec->value_type)) {
#define HANDLE_TYPE(T, t) \
case G_TYPE_##T: \
@@ -807,4 +807,44 @@
g_critical ("Unsupported property type \"%s\"",
g_type_name (pspec->value_type));
}
+
+ return TRUE;
}
+
+/**
+ * gwh_settings_widget_sync_v:
+ * @self: A #GwhSettings object
+ * @...: a %NULL-terminated list of widgets to sync
+ *
+ * Same as gwh_settings_widget_sync() but emits notifications only after all
+ * widgets got synchronized.
+ */
+void
+gwh_settings_widget_sync_v (GwhSettings *self,
+ ...)
+{
+ GParamSpec *pspec;
+ GtkWidget *widget;
+ va_list ap;
+
+ g_return_if_fail (GWH_IS_SETTINGS (self));
+
+ g_object_freeze_notify (G_OBJECT (self));
+ va_start (ap, self);
+ while ((widget = va_arg (ap, GtkWidget*))) {
+ if (! gwh_settings_widget_sync_internal (self, widget)) {
+ break;
+ }
+ }
+ va_end (ap);
+ g_object_thaw_notify (G_OBJECT (self));
+}
+
+void
+gwh_settings_widget_sync (GwhSettings *self,
+ GtkWidget *widget)
+{
+ g_return_if_fail (GWH_IS_SETTINGS (self));
+
+ gwh_settings_widget_sync_internal (self, widget);
+}
Modified: trunk/geany-plugins/webhelper/src/gwh-settings.h
===================================================================
--- trunk/geany-plugins/webhelper/src/gwh-settings.h 2011-01-23 14:24:16 UTC (rev 1869)
+++ trunk/geany-plugins/webhelper/src/gwh-settings.h 2011-01-23 14:24:39 UTC (rev 1870)
@@ -20,6 +20,7 @@
#ifndef H_GWH_SETTINGS
#define H_GWH_SETTINGS
+#include <stdarg.h>
#include <glib.h>
#include <glib-object.h>
#include <gtk/gtk.h>
@@ -102,6 +103,9 @@
GtkWidget *gwh_settings_widget_new (GwhSettings *self,
const gchar *prop_name);
G_GNUC_INTERNAL
+void gwh_settings_widget_sync_v (GwhSettings *self,
+ ...) G_GNUC_NULL_TERMINATED;
+G_GNUC_INTERNAL
void gwh_settings_widget_sync (GwhSettings *self,
GtkWidget *widget);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list