From db145cb919be1242260d06095660405f415774d6 Mon Sep 17 00:00:00 2001 From: Stefano Karapetsas Date: Wed, 5 Sep 2012 20:21:31 +0200 Subject: add eel_g_settings_add_auto_strv --- eel/eel-glib-extensions.c | 26 ++++++++++++++++++++++++++ eel/eel-glib-extensions.h | 3 +++ 2 files changed, 29 insertions(+) (limited to 'eel') diff --git a/eel/eel-glib-extensions.c b/eel/eel-glib-extensions.c index e0aa93cb..67986b32 100644 --- a/eel/eel-glib-extensions.c +++ b/eel/eel-glib-extensions.c @@ -1118,6 +1118,32 @@ update_auto_strv_as_quarks (GSettings *settings, g_strfreev (value); } +static void +update_auto_strv (GSettings *settings, + const gchar *key, + gpointer user_data) +{ + char ***storage = user_data; + + g_free (*storage); + *storage = g_settings_get_strv (settings, key); +} + +void +eel_g_settings_add_auto_strv (GSettings *settings, + const char *key, + char ***storage) +{ + char *signal; + + *storage = NULL; + update_auto_strv (settings, key, storage); + signal = g_strconcat ("changed::", key, NULL); + g_signal_connect (settings, signal, + G_CALLBACK(update_auto_strv), + storage); +} + void eel_g_settings_add_auto_strv_as_quarks (GSettings *settings, const char *key, diff --git a/eel/eel-glib-extensions.h b/eel/eel-glib-extensions.h index fee8a573..1093e319 100644 --- a/eel/eel-glib-extensions.h +++ b/eel/eel-glib-extensions.h @@ -134,6 +134,9 @@ void eel_g_settings_add_auto_int (GSettings *settings, void eel_g_settings_add_auto_boolean (GSettings *settings, const char *key, gboolean *storage); +void eel_g_settings_add_auto_strv (GSettings *settings, + const char *key, + char ***storage); void eel_g_settings_add_auto_strv_as_quarks (GSettings *settings, const char *key, GQuark **storage); -- cgit v1.2.1