[glib/new-gsettings] Add convenience get/set wrappers
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/new-gsettings] Add convenience get/set wrappers
- Date: Fri, 16 Apr 2010 18:30:51 +0000 (UTC)
commit 46ba0d3e8515391081f97c99ff4b4f0eddff62c7
Author: Ryan Lortie <desrt desrt ca>
Date: Fri Apr 16 12:21:16 2010 -0400
Add convenience get/set wrappers
gio/gsettings.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
gio/gsettings.h | 8 ++--
2 files changed, 129 insertions(+), 11 deletions(-)
---
diff --git a/gio/gsettings.c b/gio/gsettings.c
index a28e7f1..3c631d8 100644
--- a/gio/gsettings.c
+++ b/gio/gsettings.c
@@ -520,10 +520,11 @@ static void
g_settings_class_init (GSettingsClass *class)
{
GObjectClass *object_class = G_OBJECT_CLASS (class);
+/*
class->all_writable_changed = real_all_writable_changed;
class->all_changed = real_all_changed;
class->keys_changed = real_keys_changed;
-
+*/
object_class->set_property = g_settings_set_property;
object_class->get_property = g_settings_get_property;
object_class->constructed = g_settings_constructed;
@@ -531,6 +532,7 @@ g_settings_class_init (GSettingsClass *class)
g_type_class_add_private (object_class, sizeof (GSettingsPrivate));
+#if 0
/**
* GSettings::all-changed:
* @settings: the object on which the signal was emitted
@@ -618,7 +620,7 @@ g_settings_class_init (GSettingsClass *class)
NULL, NULL,
g_cclosure_marshal_VOID__STRING,
G_TYPE_NONE, 1, G_TYPE_STRING | G_SIGNAL_TYPE_STATIC_SCOPE);
-
+#endif
/**
* GSettings:context:
*
@@ -791,12 +793,13 @@ g_settings_get_value (GSettings *settings,
*
* Since: 2.26
**/
-void
+gboolean
g_settings_set_value (GSettings *settings,
const gchar *key,
GVariant *value)
{
gboolean correct_type;
+ gboolean result;
GVariant *sval;
gchar *path;
@@ -804,11 +807,14 @@ g_settings_set_value (GSettings *settings,
correct_type = g_variant_is_of_type (value, g_variant_get_type (sval));
g_variant_unref (sval);
- g_return_if_fail (correct_type);
+ g_return_val_if_fail (correct_type, FALSE);
path = g_strconcat (settings->priv->path, key, NULL);
- g_settings_backend_write (settings->priv->backend, path, value, NULL);
+ result = g_settings_backend_write (settings->priv->backend,
+ path, value, NULL);
g_free (path);
+
+ return result;
}
/**
@@ -865,7 +871,7 @@ g_settings_get (GSettings *settings,
*
* Since: 2.26
*/
-void
+gboolean
g_settings_set (GSettings *settings,
const gchar *key,
const gchar *format,
@@ -878,7 +884,7 @@ g_settings_set (GSettings *settings,
value = g_variant_new_va (format, NULL, &ap);
va_end (ap);
- g_settings_set_value (settings, key, value);
+ return g_settings_set_value (settings, key, value);
}
/**
@@ -1633,5 +1639,117 @@ g_settings_unbind (gpointer object,
g_object_set_qdata (object, binding_quark, NULL);
}
+gchar *
+g_settings_get_string (GSettings *settings,
+ const gchar *key)
+{
+ GVariant *value;
+ gchar *result;
+
+ value = g_settings_get_value (settings, key);
+ result = g_variant_dup_string (value, NULL);
+ g_variant_unref (value);
+
+ return result;
+}
+
+gboolean
+g_settings_set_string (GSettings *settings,
+ const gchar *key,
+ const gchar *value)
+{
+ return g_settings_set_value (settings, key, g_variant_new_string (value));
+}
+
+gint
+g_settings_get_int (GSettings *settings,
+ const gchar *key)
+{
+ GVariant *value;
+ gint result;
+
+ value = g_settings_get_value (settings, key);
+ result = g_variant_get_int32 (value);
+ g_variant_unref (value);
+
+ return result;
+}
+
+gboolean
+g_settings_set_int (GSettings *settings,
+ const gchar *key,
+ gint value)
+{
+ return g_settings_set_value (settings, key, g_variant_new_int32 (value));
+}
+
+gdouble
+g_settings_get_double (GSettings *settings,
+ const gchar *key)
+{
+ GVariant *value;
+ gdouble result;
+
+ value = g_settings_get_value (settings, key);
+ result = g_variant_get_double (value);
+ g_variant_unref (value);
+
+ return result;
+}
+
+gboolean
+g_settings_set_double (GSettings *settings,
+ const gchar *key,
+ gdouble value)
+{
+ return g_settings_set_value (settings, key, g_variant_new_double (value));
+}
+
+gboolean
+g_settings_get_boolean (GSettings *settings,
+ const gchar *key)
+{
+ GVariant *value;
+ gboolean result;
+
+ value = g_settings_get_value (settings, key);
+ result = g_variant_get_boolean (value);
+ g_variant_unref (value);
+
+ return result;
+}
+
+gboolean
+g_settings_set_boolean (GSettings *settings,
+ const gchar *key,
+ gboolean value)
+{
+ return g_settings_set_value (settings, key, g_variant_new_boolean (value));
+}
+
+gchar **
+g_settings_get_strv (GSettings *settings,
+ const gchar *key,
+ gsize *length)
+{
+ GVariant *value;
+ gchar **result;
+
+ value = g_settings_get_value (settings, key);
+ result = g_variant_dup_strv (value, length);
+ g_variant_unref (value);
+
+ return result;
+}
+
+gboolean
+g_settings_set_strv (GSettings *settings,
+ const gchar *key,
+ const gchar * const *value,
+ gssize length)
+{
+ return g_settings_set_value (settings, key, g_variant_new_strv (value, length));
+}
+
#define __G_SETTINGS_C__
#include "gioaliasdef.c"
diff --git a/gio/gsettings.h b/gio/gsettings.h
index e297505..26ed8de 100644
--- a/gio/gsettings.h
+++ b/gio/gsettings.h
@@ -74,13 +74,13 @@ GSettings * g_settings_new_with_context_and_path (const g
const gchar *context,
const gchar *path);
-void g_settings_set_value (GSettings *settings,
+gboolean g_settings_set_value (GSettings *settings,
const gchar *key,
GVariant *value);
GVariant * g_settings_get_value (GSettings *settings,
const gchar *key);
-void g_settings_set (GSettings *settings,
+gboolean g_settings_set (GSettings *settings,
const gchar *key,
const gchar *format_string,
...);
@@ -111,11 +111,11 @@ gboolean g_settings_set_double (GSettin
gdouble value);
gchar ** g_settings_get_strv (GSettings *settings,
const gchar *key,
- gint *length);
+ gsize *length);
gboolean g_settings_set_strv (GSettings *settings,
const gchar *key,
const gchar *const *value,
- gint length);
+ gssize length);
GSettings * g_settings_get_child (GSettings *settings,
const gchar *name);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]