Add g_settings_new_full() taking GSettingsSchema
authorRyan Lortie <desrt@desrt.ca>
Tue, 15 Nov 2011 12:38:01 +0000 (12:38 +0000)
committerRyan Lortie <desrt@desrt.ca>
Thu, 17 Nov 2011 14:03:39 +0000 (14:03 +0000)
gio/gio.symbols
gio/gsettings.c
gio/gsettings.h

index a370a6e..ed9d87c 100644 (file)
@@ -1125,6 +1125,7 @@ g_settings_new
 g_settings_new_with_backend
 g_settings_new_with_backend_and_path
 g_settings_new_with_path
+g_settings_new_full
 g_settings_revert
 g_settings_reset
 g_settings_set
index f8be1b4..72e49d5 100644 (file)
@@ -937,6 +937,43 @@ g_settings_new_with_backend_and_path (const gchar      *schema,
                        NULL);
 }
 
+/**
+ * g_settings_new_full:
+ * @schema: a #GSettingsSchema
+ * @backend: a #GSettingsBackend
+ * @path: the path to use
+ * @returns: a new #GSettings object
+ *
+ * Creates a new #GSettings object with a given schema, backend and
+ * path.
+ *
+ * It should be extremely rare that you ever want to use this function.
+ * It is made available for advanced use-cases (such as plugin systems
+ * that want to provide access to schemas loaded from custom locations,
+ * etc).
+ *
+ * At the most basic level, a #GSettings object is a pure composition of
+ * 4 things: a #GSettingsSchema, a #GSettingsBackend, a path within that
+ * backend, and a #GMainContext to which signals are dispatched.
+ *
+ * This constructor therefore gives you full control over constructing
+ * #GSettings instances.  The first 4 parameters are given directly as
+ * @schema, @backend and @path, and the main context is taken from the
+ * thread-default (as per g_settings_new()).
+ *
+ * Since: 2.32
+ */
+GSettings *
+g_settings_new_full (GSettingsSchema  *schema,
+                     GSettingsBackend *backend,
+                     const gchar      *path)
+{
+  return g_object_new (G_TYPE_SETTINGS,
+                       "settings-schema", schema,
+                       "backend", backend,
+                       "path", path);
+}
+
 /* Internal read/write utilities {{{1 */
 static gboolean
 g_settings_write_to_backend (GSettings          *settings,
index 8db2f75..d06a60e 100644 (file)
@@ -26,6 +26,7 @@
 #ifndef __G_SETTINGS_H__
 #define __G_SETTINGS_H__
 
+#include <gio/gsettingsschema.h>
 #include <gio/giotypes.h>
 
 G_BEGIN_DECLS
@@ -80,6 +81,9 @@ GSettings *             g_settings_new_with_backend                     (const g
 GSettings *             g_settings_new_with_backend_and_path            (const gchar        *schema,
                                                                          GSettingsBackend   *backend,
                                                                          const gchar        *path);
+GSettings *             g_settings_new_full                             (GSettingsSchema    *schema,
+                                                                         GSettingsBackend   *backend,
+                                                                         const gchar        *path);
 gchar **                g_settings_list_children                        (GSettings          *settings);
 gchar **                g_settings_list_keys                            (GSettings          *settings);
 GVariant *              g_settings_get_range                            (GSettings          *settings,