Add g_settings_new_full() taking GSettingsSchema

This commit is contained in:
Ryan Lortie 2011-11-15 12:38:01 +00:00
parent 1c8ae819ed
commit 1e70072065
3 changed files with 42 additions and 0 deletions

View File

@ -1125,6 +1125,7 @@ g_settings_new
g_settings_new_with_backend g_settings_new_with_backend
g_settings_new_with_backend_and_path g_settings_new_with_backend_and_path
g_settings_new_with_path g_settings_new_with_path
g_settings_new_full
g_settings_revert g_settings_revert
g_settings_reset g_settings_reset
g_settings_set g_settings_set

View File

@ -937,6 +937,43 @@ g_settings_new_with_backend_and_path (const gchar *schema,
NULL); 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 */ /* Internal read/write utilities {{{1 */
static gboolean static gboolean
g_settings_write_to_backend (GSettings *settings, g_settings_write_to_backend (GSettings *settings,

View File

@ -26,6 +26,7 @@
#ifndef __G_SETTINGS_H__ #ifndef __G_SETTINGS_H__
#define __G_SETTINGS_H__ #define __G_SETTINGS_H__
#include <gio/gsettingsschema.h>
#include <gio/giotypes.h> #include <gio/giotypes.h>
G_BEGIN_DECLS 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, GSettings * g_settings_new_with_backend_and_path (const gchar *schema,
GSettingsBackend *backend, GSettingsBackend *backend,
const gchar *path); 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_children (GSettings *settings);
gchar ** g_settings_list_keys (GSettings *settings); gchar ** g_settings_list_keys (GSettings *settings);
GVariant * g_settings_get_range (GSettings *settings, GVariant * g_settings_get_range (GSettings *settings,