GIO Reference Manual | ||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Signals |
GSettings; GSettings * g_settings_new (const gchar *schema
); GSettings * g_settings_new_with_path (const gchar *schema
,const gchar *path
); GSettings * g_settings_new_with_backend (const gchar *schema
,GSettingsBackend *backend
); GSettings * g_settings_new_with_backend_and_path (const gchar *schema
,GSettingsBackend *backend
,const gchar *path
); void g_settings_sync (void
); GVariant * g_settings_get_value (GSettings *settings
,const gchar *key
); gboolean g_settings_set_value (GSettings *settings
,const gchar *key
,GVariant *value
); gboolean g_settings_is_writable (GSettings *settings
,const gchar *name
); void g_settings_delay (GSettings *settings
); void g_settings_apply (GSettings *settings
); void g_settings_revert (GSettings *settings
); gboolean g_settings_get_has_unapplied (GSettings *settings
); GSettings * g_settings_get_child (GSettings *settings
,const gchar *name
); void g_settings_reset (GSettings *settings
,const gchar *key
); const gchar * const * g_settings_list_schemas (void
); const gchar * const * g_settings_list_relocatable_schemas (void
); gchar ** g_settings_list_keys (GSettings *settings
); gchar ** g_settings_list_children (GSettings *settings
); GVariant * g_settings_get_range (GSettings *settings
,const gchar *key
); gboolean g_settings_range_check (GSettings *settings
,const gchar *key
,GVariant *value
); void g_settings_get (GSettings *settings
,const gchar *key
,const gchar *format
,...
); gboolean g_settings_set (GSettings *settings
,const gchar *key
,const gchar *format
,...
); gboolean g_settings_get_boolean (GSettings *settings
,const gchar *key
); gboolean g_settings_set_boolean (GSettings *settings
,const gchar *key
,gboolean value
); gint g_settings_get_int (GSettings *settings
,const gchar *key
); gboolean g_settings_set_int (GSettings *settings
,const gchar *key
,gint value
); gdouble g_settings_get_double (GSettings *settings
,const gchar *key
); gboolean g_settings_set_double (GSettings *settings
,const gchar *key
,gdouble value
); gchar * g_settings_get_string (GSettings *settings
,const gchar *key
); gboolean g_settings_set_string (GSettings *settings
,const gchar *key
,const gchar *value
); gchar ** g_settings_get_strv (GSettings *settings
,const gchar *key
); gboolean g_settings_set_strv (GSettings *settings
,const gchar *key
,const gchar *const *value
); gint g_settings_get_enum (GSettings *settings
,const gchar *key
); gboolean g_settings_set_enum (GSettings *settings
,const gchar *key
,gint value
); guint g_settings_get_flags (GSettings *settings
,const gchar *key
); gboolean g_settings_set_flags (GSettings *settings
,const gchar *key
,guint value
); gboolean (*GSettingsGetMapping) (GVariant *value
,gpointer *result
,gpointer user_data
); gpointer g_settings_get_mapped (GSettings *settings
,const gchar *key
,GSettingsGetMapping mapping
,gpointer user_data
); enum GSettingsBindFlags; void g_settings_bind (GSettings *settings
,const gchar *key
,gpointer object
,const gchar *property
,GSettingsBindFlags flags
); void g_settings_bind_with_mapping (GSettings *settings
,const gchar *key
,gpointer object
,const gchar *property
,GSettingsBindFlags flags
,GSettingsBindGetMapping get_mapping
,GSettingsBindSetMapping set_mapping
,gpointer user_data
,GDestroyNotify destroy
); void g_settings_bind_writable (GSettings *settings
,const gchar *key
,gpointer object
,const gchar *property
,gboolean inverted
); void g_settings_unbind (gpointer object
,const gchar *property
); GVariant * (*GSettingsBindSetMapping) (const GValue *value
,const GVariantType *expected_type
,gpointer user_data
); gboolean (*GSettingsBindGetMapping) (GValue *value
,GVariant *variant
,gpointer user_data
);
"backend" GSettingsBackend* : Read / Write / Construct Only "delay-apply" gboolean : Read "has-unapplied" gboolean : Read "path" gchar* : Read / Write / Construct Only "schema" gchar* : Read / Write / Construct Only
"change-event" :Run Last
"changed" :Has Details
"writable-change-event" :Run Last
"writable-changed" :Has Details
The GSettings class provides a convenient API for storing and retrieving application settings.
Reads and writes can be considered to be non-blocking. Reading
settings with GSettings is typically extremely fast: on
approximately the same order of magnitude (but slower than) a
GHashTable lookup. Writing settings is also extremely fast in terms
of time to return to your application, but can be extremely expensive
for other threads and other processes. Many settings backends
(including dconf) have lazy initialisation which means in the common
case of the user using their computer without modifying any settings
a lot of work can be avoided. For dconf, the D-Bus service doesn't
even need to be started in this case. For this reason, you should
only ever modify GSettings keys in response to explicit user action.
Particular care should be paid to ensure that modifications are not
made during startup -- for example, when settings the initial value
of preferences widgets. The built-in g_settings_bind()
functionality
is careful not to write settings in response to notify signals as a
result of modifications that it makes to widgets.
When creating a GSettings instance, you have to specify a schema that describes the keys in your settings and their types and default values, as well as some other information.
Normally, a schema has as fixed path that determines where the settings are stored in the conceptual global tree of settings. However, schemas can also be 'relocatable', i.e. not equipped with a fixed path. This is useful e.g. when the schema describes an 'account', and you want to be able to store a arbitrary number of accounts.
Unlike other configuration systems (like GConf), GSettings does not restrict keys to basic types like strings and numbers. GSettings stores values as GVariant, and allows any GVariantType for keys. Key names are restricted to lowercase characters, numbers and '-'. Furthermore, the names must begin with a lowercase character, must not end with a '-', and must not contain consecutive dashes. Key names can be up to 32 characters long.
Similar to GConf, the default values in GSettings schemas can be
localized, but the localized values are stored in gettext catalogs
and looked up with the domain that is specified in the
gettext-domain
attribute of the
<schemalist>
or <schema>
elements and the category that is specified in the l10n attribute of the
<key>
element.
GSettings uses schemas in a compact binary form that is created by the glib-compile-schemas utility. The input is a schema description in an XML format that can be described by the following DTD:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
<!ELEMENT schemalist (schema|enum)* > <!ATTLIST schemalist gettext-domain #IMPLIED > <!ELEMENT schema (key|child|override)* > <!ATTLIST schema id CDATA #REQUIRED path CDATA #IMPLIED gettext-domain CDATA #IMPLIED extends CDATA #IMPLIED list-of CDATA #IMPLIED > <!-- enumerated and flags types --> <!-- each value element maps a nick to a numeric value --> <!ELEMENT enum (value*) > <!ATTLIST enum id CDATA #REQUIRED > <!ELEMENT flags (value*) > <!ATTLIST flags id CDATA #REQUIRED > <!ELEMENT value EMPTY > <!-- nick must be at least 2 characters long --> <!-- value must be parsable as a 32-bit integer --> <!ELEMENT value nick #REQUIRED value #REQUIRED > <!ELEMENT key (default|summary?|description?|range?|choices?|aliases?) > <!-- name can only contain lowercase letters, numbers and '-' --> <!-- type must be a GVariant type string --> <!-- enum must be the id of an enum type that has been defined earlier --> <!-- flags must be the id of a flags type that has been defined earlier --> <!-- exactly one of type, enum or flags must be given --> <!ATTLIST key name CDATA #REQUIRED type CDATA #IMPLIED enum CDATA #IMPLIED flags CDATA #IMPLIED > <!-- the default value is specified a a serialized GVariant, i.e. you have to include the quotes when specifying a string --> <!ELEMENT default (#PCDATA) > <!-- the presence of the l10n attribute marks a default value for translation, its value is the gettext category to use --> <!-- if context is present, it specifies msgctxt to use --> <!ATTLIST default l10n (messages|time) #IMPLIED context CDATA #IMPLIED > <!ELEMENT summary (#PCDATA) > <!ELEMENT description (#PCDATA) > <!-- range is only allowed for keys with numeric type --> <!ELEMENT range EMPTY > <!-- min and max must be parseable as values of the key type and min < max --> <!ATTLIST range min CDATA #REQUIRED max CDATA #REQUIRED > <!-- choices is only allowed for keys with string or string array type --> <!ELEMENT choices (choice+) > <!-- each choice element specifies one possible value --> <!ELEMENT choice EMPTY > <!ATTLIST choice value CDATA #REQUIRED > <!-- aliases is only allowed for keys with enumerated type or with choices --> <!ELEMENT aliases (alias+) > <!-- each alias element specifies an alias for one of the possible values --> <!ELEMENT alias EMPTY > <!ATTLIST alias value CDATA #REQUIRED > <!ELEMENT child EMPTY > <!ATTLIST child name CDATA #REQUIRED schema CDATA #REQUIRED > <!ELEMENT override (#PCDATA) > <!ATTLIST override name CDATA #REQUIRED l10n CDATA #IMPLIED context CDATA #IMPLIED > |
glib-compile-schemas expects schema files to have the extension .gschema.xml
At runtime, schemas are identified by their id (as specified
in the id
attribute of the
<schema>
element). The
convention for schema ids is to use a dotted name, similar in
style to a D-Bus bus name, e.g. "org.gnome.SessionManager". In particular,
if the settings are for a specific service that owns a D-Bus bus name,
the D-Bus bus name and schema id should match. For schemas which deal
with settings not associated with one named application, the id should
not use StudlyCaps, e.g. "org.gnome.font-rendering".
In addition to GVariant types, keys can have types that have enumerated
types. These can be described by a <choice>
,
<enum>
or <flags>
element, see
Example 12, “Ranges, choices and enumerated types”. The underlying type of
such a key is string, but you can use g_settings_get_enum()
,
g_settings_set_enum()
, g_settings_get_flags()
, g_settings_set_flags()
access the numeric values corresponding to the string value of enum
and flags keys.
Example 11. Default values
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<schemalist> <schema id="org.gtk.Test" path="/tests/" gettext-domain="test"> <key name="greeting" type="s"> <default l10n="messages">"Hello, earthlings"</default> <summary>A greeting</summary> <description> Greeting of the invading martians </description> </key> <key name="box" type="(ii)"> <default>(20,30)</default> </key> </schema> </schemalist> |
Example 12. Ranges, choices and enumerated types
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<schemalist> <enum id="myenum"> <value nick="first" value="1"/> <value nick="second" value="2"/> </enum> <enum id="myflags"> <value nick="flag1" value="1"/> <value nick="flag2" value="2"/> <value nick="flag3" value="4"/> </enum> <schema id="org.gtk.Test"> <key name="key-with-range" type="i"> <range min="1" max="100"/> <default>10</default> </key> <key name="key-with-choices" type="s"> <choices> <choice value='Elisabeth'/> <choice value='Annabeth'/> <choice value='Joe'/> </choices> <aliases> <alias value='Anna' target='Annabeth'/> <alias value='Beth' target='Elisabeth'/> </aliases> <default>'Joe'</default> </key> <key name='enumerated-key' enum='myenum'> <default>'first'</default> </key> <key name='flags-key' flags='myflags'> <default>["flag1",flag2"]</default> </key> </schema> </schemalist> |
Default values are defined in the schemas that get installed by an application. Sometimes, it is necessary for a vendor or distributor to adjust these defaults. Since patching the XML source for the schema is inconvenient and error-prone, glib-compile-schemas reads so-called 'vendor override' files. These are keyfiles in the same directory as the XML schema sources which can override default values. The schema id serves as the group name in the key file, and the values are expected in serialized GVariant form, as in the following example:
1 2 3 |
[org.gtk.Example] key1='string' key2=1.5 |
glib-compile-schemas expects schema files to have the extension
.gschema.override
A very convenient feature of GSettings lets you bind GObject properties
directly to settings, using g_settings_bind()
. Once a GObject property
has been bound to a setting, changes on either side are automatically
propagated to the other side. GSettings handles details like
mapping between GObject and GVariant types, and preventing infinite
cycles.
This makes it very easy to hook up a preferences dialog to the underlying settings. To make this even more convenient, GSettings looks for a boolean property with the name "sensitivity" and automatically binds it to the writability of the bound setting. If this 'magic' gets in the way, it can be suppressed with the G_SETTINGS_BIND_NO_SENSITIVITY flag.
GSettings * g_settings_new (const gchar *schema
);
Creates a new GSettings object with a given schema.
Signals on the newly created GSettings object will be dispatched
via the thread-default GMainContext in effect at the time of the
call to g_settings_new()
. The new GSettings will hold a reference
on the context. See g_main_context_push_thread_default()
.
|
the name of the schema |
Returns : |
a new GSettings object |
Since 2.26
GSettings * g_settings_new_with_path (const gchar *schema
,const gchar *path
);
Creates a new GSettings object with a given schema and path.
You only need to do this if you want to directly create a settings object with a schema that doesn't have a specified path of its own. That's quite rare.
It is a programmer error to call this function for a schema that has an explicitly specified path.
|
the name of the schema |
|
the path to use |
Returns : |
a new GSettings object |
Since 2.26
GSettings * g_settings_new_with_backend (const gchar *schema
,GSettingsBackend *backend
);
Creates a new GSettings object with a given schema and backend.
Creating settings objects with an different backend allows accessing settings from a database other than the usual one. For example, it may make sense to pass a backend corresponding to the "defaults" settings database on the system to get a settings object that modifies the system default settings instead of the settings for this user.
|
the name of the schema |
|
the GSettingsBackend to use |
Returns : |
a new GSettings object |
Since 2.26
GSettings * g_settings_new_with_backend_and_path (const gchar *schema
,GSettingsBackend *backend
,const gchar *path
);
Creates a new GSettings object with a given schema, backend and path.
This is a mix of g_settings_new_with_backend()
and
g_settings_new_with_path()
.
|
the name of the schema |
|
the GSettingsBackend to use |
|
the path to use |
Returns : |
a new GSettings object |
Since 2.26
void g_settings_sync (void
);
Ensures that all pending operations for the given are complete for the default backend.
Writes made to a GSettings are handled asynchronously. For this
reason, it is very unlikely that the changes have it to disk by the
time g_settings_set()
returns.
This call will block until all of the writes have made it to the backend. Since the mainloop is not running, no change notifications will be dispatched during this call (but some may be queued by the time the call is done).
GVariant * g_settings_get_value (GSettings *settings
,const gchar *key
);
Gets the value that is stored in settings
for key
.
It is a programmer error to give a key
that isn't contained in the
schema for settings
.
Since 2.26
gboolean g_settings_set_value (GSettings *settings
,const gchar *key
,GVariant *value
);
Sets key
in settings
to value
.
It is a programmer error to give a key
that isn't contained in the
schema for settings
or for value
to have the incorrect type, per
the schema.
If value
is floating then this function consumes the reference.
|
a GSettings object |
|
the name of the key to set |
|
a GVariant of the correct type |
Returns : |
TRUE if setting the key succeeded,
FALSE if the key was not writable |
Since 2.26
gboolean g_settings_is_writable (GSettings *settings
,const gchar *name
);
Finds out if a key can be written or not
Since 2.26
void g_settings_delay (GSettings *settings
);
Changes the GSettings object into 'delay-apply' mode. In this
mode, changes to settings
are not immediately propagated to the
backend, but kept locally until g_settings_apply()
is called.
|
a GSettings object |
Since 2.26
void g_settings_apply (GSettings *settings
);
Applies any changes that have been made to the settings. This
function does nothing unless settings
is in 'delay-apply' mode;
see g_settings_delay()
. In the normal case settings are always
applied immediately.
|
a GSettings instance |
void g_settings_revert (GSettings *settings
);
Reverts all non-applied changes to the settings. This function
does nothing unless settings
is in 'delay-apply' mode; see
g_settings_delay()
. In the normal case settings are always applied
immediately.
Change notifications will be emitted for affected keys.
|
a GSettings instance |
gboolean g_settings_get_has_unapplied (GSettings *settings
);
Returns whether the GSettings object has any unapplied changes. This can only be the case if it is in 'delayed-apply' mode.
Since 2.26
GSettings * g_settings_get_child (GSettings *settings
,const gchar *name
);
Creates a 'child' settings object which has a base path of
base-path
/name
, where
base-path
is the base path of settings
.
The schema for the child settings object must have been declared
in the schema of settings
using a <child>
element.
|
a GSettings object |
|
the name of the 'child' schema |
Returns : |
a 'child' settings object. [transfer full] |
Since 2.26
void g_settings_reset (GSettings *settings
,const gchar *key
);
Resets key
to its default value.
This call resets the key, as much as possible, to its default value. That might the value specified in the schema or the one set by the administrator.
|
a GSettings object |
|
the name of a key |
const gchar * const * g_settings_list_schemas (void
);
Gets a list of the GSettings schemas installed on the system. The
returned list is exactly the list of schemas for which you may call
g_settings_new()
without adverse effects.
This function does not list the schemas that do not provide their own
paths (ie: schemas for which you must use
g_settings_new_with_path()
). See
g_settings_list_relocatable_schemas()
for that.
Returns : |
a list of GSettings schemas that are available. The list must not be modified or freed. [element-type utf8][transfer none] |
Since 2.26
const gchar * const * g_settings_list_relocatable_schemas
(void
);
Gets a list of the relocatable GSettings schemas installed on the
system. These are schemas that do not provide their own path. It is
usual to instantiate these schemas directly, but if you want to you
can use g_settings_new_with_path()
to specify the path.
The output of this function, tTaken together with the output of
g_settings_list_schemas()
represents the complete list of all
installed schemas.
Returns : |
a list of relocatable GSettings schemas that are available. The list must not be modified or freed. [element-type utf8][transfer none] |
Since 2.28
gchar ** g_settings_list_keys (GSettings *settings
);
Introspects the list of keys on settings
.
You should probably not be calling this function from "normal" code (since you should already know what keys are in your schema). This function is intended for introspection reasons.
You should free the return value with g_strfreev()
when you are done
with it.
|
a GSettings object |
Returns : |
a list of the keys on settings . [transfer full][element-type utf8]
|
gchar ** g_settings_list_children (GSettings *settings
);
Gets the list of children on settings
.
The list is exactly the list of strings for which it is not an error
to call g_settings_get_child()
.
For GSettings objects that are lists, this value can change at any
time and you should connect to the "children-changed" signal to watch
for those changes. Note that there is a race condition here: you may
request a child after listing it only for it to have been destroyed
in the meantime. For this reason, g_settings_get_child()
may return
NULL
even for a child that was listed by this function.
For GSettings objects that are not lists, you should probably not be calling this function from "normal" code (since you should already know what children are in your schema). This function may still be useful there for introspection reasons, however.
You should free the return value with g_strfreev()
when you are done
with it.
|
a GSettings object |
Returns : |
a list of the children on settings . [transfer full][element-type utf8]
|
GVariant * g_settings_get_range (GSettings *settings
,const gchar *key
);
Queries the range of a key.
This function will return a GVariant that fully describes the range
of values that are valid for key
.
The type of GVariant returned is (sv)
. The
string describes the type of range restriction in effect. The type
and meaning of the value contained in the variant depends on the
string.
If the string is 'type'
then the variant contains
an empty array. The element type of that empty array is the expected
type of value and all values of that type are valid.
If the string is 'enum'
then the variant contains
an array enumerating the possible values. Each item in the array is
a possible valid value and no other values are valid.
If the string is 'flags'
then the variant contains
an array. Each item in the array is a value that may appear zero or
one times in an array to be used as the value for this key. For
example, if the variant contained the array ['x',
'y']
then the valid values for the key would be
[]
, ['x']
,
['y']
, ['x', 'y']
and
['y', 'x']
.
Finally, if the string is 'range'
then the variant
contains a pair of like-typed values -- the minimum and maximum
permissible values for this key.
This information should not be used by normal programs. It is considered to be a hint for introspection purposes. Normal programs should already know what is permitted by their own schema. The format may change in any way in the future -- but particularly, new forms may be added to the possibilities described above.
It is a programmer error to give a key
that isn't contained in the
schema for settings
.
You should free the returned value with g_variant_unref()
when it is
no longer needed.
|
a GSettings |
|
the key to query the range of |
Returns : |
a GVariant describing the range |
Since 2.28
gboolean g_settings_range_check (GSettings *settings
,const gchar *key
,GVariant *value
);
Checks if the given value
is of the correct type and within the
permitted range for key
.
This API is not intended to be used by normal programs -- they should already know what is permitted by their own schemas. This API is meant to be used by programs such as editors or commandline tools.
It is a programmer error to give a key
that isn't contained in the
schema for settings
.
|
a GSettings |
|
the key to check |
|
the value to check |
Returns : |
TRUE if value is valid for key
|
Since 2.28
void g_settings_get (GSettings *settings
,const gchar *key
,const gchar *format
,...
);
Gets the value that is stored at key
in settings
.
A convenience function that combines g_settings_get_value()
with
g_variant_get()
.
It is a programmer error to give a key
that isn't contained in the
schema for settings
or for the GVariantType of format
to mismatch
the type given in the schema.
|
a GSettings object |
|
the key to get the value for |
|
a GVariant format string |
|
arguments as per format
|
Since 2.26
gboolean g_settings_set (GSettings *settings
,const gchar *key
,const gchar *format
,...
);
Sets key
in settings
to value
.
A convenience function that combines g_settings_set_value()
with
g_variant_new()
.
It is a programmer error to give a key
that isn't contained in the
schema for settings
or for the GVariantType of format
to mismatch
the type given in the schema.
|
a GSettings object |
|
the name of the key to set |
|
a GVariant format string |
|
arguments as per format
|
Returns : |
TRUE if setting the key succeeded,
FALSE if the key was not writable |
Since 2.26
gboolean g_settings_get_boolean (GSettings *settings
,const gchar *key
);
Gets the value that is stored at key
in settings
.
A convenience variant of g_settings_get()
for booleans.
It is a programmer error to give a key
that isn't specified as
having a boolean type in the schema for settings
.
|
a GSettings object |
|
the key to get the value for |
Returns : |
a boolean |
Since 2.26
gboolean g_settings_set_boolean (GSettings *settings
,const gchar *key
,gboolean value
);
Sets key
in settings
to value
.
A convenience variant of g_settings_set()
for booleans.
It is a programmer error to give a key
that isn't specified as
having a boolean type in the schema for settings
.
|
a GSettings object |
|
the name of the key to set |
|
the value to set it to |
Returns : |
TRUE if setting the key succeeded,
FALSE if the key was not writable |
Since 2.26
gint g_settings_get_int (GSettings *settings
,const gchar *key
);
Gets the value that is stored at key
in settings
.
A convenience variant of g_settings_get()
for 32-bit integers.
It is a programmer error to give a key
that isn't specified as
having a int32 type in the schema for settings
.
|
a GSettings object |
|
the key to get the value for |
Returns : |
an integer |
Since 2.26
gboolean g_settings_set_int (GSettings *settings
,const gchar *key
,gint value
);
Sets key
in settings
to value
.
A convenience variant of g_settings_set()
for 32-bit integers.
It is a programmer error to give a key
that isn't specified as
having a int32 type in the schema for settings
.
|
a GSettings object |
|
the name of the key to set |
|
the value to set it to |
Returns : |
TRUE if setting the key succeeded,
FALSE if the key was not writable |
Since 2.26
gdouble g_settings_get_double (GSettings *settings
,const gchar *key
);
Gets the value that is stored at key
in settings
.
A convenience variant of g_settings_get()
for doubles.
It is a programmer error to give a key
that isn't specified as
having a 'double' type in the schema for settings
.
|
a GSettings object |
|
the key to get the value for |
Returns : |
a double |
Since 2.26
gboolean g_settings_set_double (GSettings *settings
,const gchar *key
,gdouble value
);
Sets key
in settings
to value
.
A convenience variant of g_settings_set()
for doubles.
It is a programmer error to give a key
that isn't specified as
having a 'double' type in the schema for settings
.
|
a GSettings object |
|
the name of the key to set |
|
the value to set it to |
Returns : |
TRUE if setting the key succeeded,
FALSE if the key was not writable |
Since 2.26
gchar * g_settings_get_string (GSettings *settings
,const gchar *key
);
Gets the value that is stored at key
in settings
.
A convenience variant of g_settings_get()
for strings.
It is a programmer error to give a key
that isn't specified as
having a string type in the schema for settings
.
|
a GSettings object |
|
the key to get the value for |
Returns : |
a newly-allocated string |
Since 2.26
gboolean g_settings_set_string (GSettings *settings
,const gchar *key
,const gchar *value
);
Sets key
in settings
to value
.
A convenience variant of g_settings_set()
for strings.
It is a programmer error to give a key
that isn't specified as
having a string type in the schema for settings
.
|
a GSettings object |
|
the name of the key to set |
|
the value to set it to |
Returns : |
TRUE if setting the key succeeded,
FALSE if the key was not writable |
Since 2.26
gchar ** g_settings_get_strv (GSettings *settings
,const gchar *key
);
A convenience variant of g_settings_get()
for string arrays.
It is a programmer error to give a key
that isn't specified as
having an array of strings type in the schema for settings
.
|
a GSettings object |
|
the key to get the value for |
Returns : |
a
newly-allocated, NULL -terminated array of strings, the value that
is stored at key in settings . [array zero-terminated=1][transfer full]
|
Since 2.26
gboolean g_settings_set_strv (GSettings *settings
,const gchar *key
,const gchar *const *value
);
Sets key
in settings
to value
.
A convenience variant of g_settings_set()
for string arrays. If
value
is NULL
, then key
is set to be the empty array.
It is a programmer error to give a key
that isn't specified as
having an array of strings type in the schema for settings
.
|
a GSettings object |
|
the name of the key to set |
|
the value to set it to, or NULL . [allow-none][array zero-terminated=1]
|
Returns : |
TRUE if setting the key succeeded,
FALSE if the key was not writable |
Since 2.26
gint g_settings_get_enum (GSettings *settings
,const gchar *key
);
Gets the value that is stored in settings
for key
and converts it
to the enum value that it represents.
In order to use this function the type of the value must be a string and it must be marked in the schema file as an enumerated type.
It is a programmer error to give a key
that isn't contained in the
schema for settings
or is not marked as an enumerated type.
If the value stored in the configuration database is not a valid value for the enumerated type then this function will return the default value.
|
a GSettings object |
|
the key to get the value for |
Returns : |
the enum value |
Since 2.26
gboolean g_settings_set_enum (GSettings *settings
,const gchar *key
,gint value
);
Looks up the enumerated type nick for value
and writes it to key
,
within settings
.
It is a programmer error to give a key
that isn't contained in the
schema for settings
or is not marked as an enumerated type, or for
value
not to be a valid value for the named type.
After performing the write, accessing key
directly with
g_settings_get_string()
will return the 'nick' associated with
value
.
guint g_settings_get_flags (GSettings *settings
,const gchar *key
);
Gets the value that is stored in settings
for key
and converts it
to the flags value that it represents.
In order to use this function the type of the value must be an array of strings and it must be marked in the schema file as an flags type.
It is a programmer error to give a key
that isn't contained in the
schema for settings
or is not marked as a flags type.
If the value stored in the configuration database is not a valid value for the flags type then this function will return the default value.
|
a GSettings object |
|
the key to get the value for |
Returns : |
the flags value |
Since 2.26
gboolean g_settings_set_flags (GSettings *settings
,const gchar *key
,guint value
);
Looks up the flags type nicks for the bits specified by value
, puts
them in an array of strings and writes the array to key
, withing
settings
.
It is a programmer error to give a key
that isn't contained in the
schema for settings
or is not marked as a flags type, or for value
to contain any bits that are not value for the named type.
After performing the write, accessing key
directly with
g_settings_get_strv()
will return an array of 'nicks'; one for each
bit in value
.
gboolean (*GSettingsGetMapping) (GVariant *value
,gpointer *result
,gpointer user_data
);
The type of the function that is used to convert from a value stored in a GSettings to a value that is useful to the application.
If the value is successfully mapped, the result should be stored at
result
and TRUE
returned. If mapping fails (for example, if value
is not in the right format) then FALSE
should be returned.
If value
is NULL
then it means that the mapping function is being
given a "last chance" to successfully return a valid value. TRUE
must be returned in this case.
|
the GVariant to map, or NULL
|
|
the result of the mapping. [out] |
|
the user data that was passed to
g_settings_get_mapped() . [closure]
|
Returns : |
TRUE if the conversion succeeded, FALSE in case of an error |
gpointer g_settings_get_mapped (GSettings *settings
,const gchar *key
,GSettingsGetMapping mapping
,gpointer user_data
);
Gets the value that is stored at key
in settings
, subject to
application-level validation/mapping.
You should use this function when the application needs to perform
some processing on the value of the key (for example, parsing). The
mapping
function performs that processing. If the function
indicates that the processing was unsuccessful (due to a parse error,
for example) then the mapping is tried again with another value.
This allows a robust 'fall back to defaults' behaviour to be implemented somewhat automatically.
The first value that is tried is the user's setting for the key. If the mapping function fails to map this value, other values may be tried in an unspecified order (system or site defaults, translated schema default values, untranslated schema default values, etc).
If the mapping function fails for all possible values, one additional
attempt is made: the mapping function is called with a NULL
value.
If the mapping function still indicates failure at this point then
the application will be aborted.
The result parameter for the mapping
function is pointed to a
gpointer which is initially set to NULL
. The same pointer is given
to each invocation of mapping
. The final value of that gpointer is
what is returned by this function. NULL
is valid; it is returned
just as any other value would be.
typedef enum { G_SETTINGS_BIND_DEFAULT, G_SETTINGS_BIND_GET = (1<<0), G_SETTINGS_BIND_SET = (1<<1), G_SETTINGS_BIND_NO_SENSITIVITY = (1<<2), G_SETTINGS_BIND_GET_NO_CHANGES = (1<<3), G_SETTINGS_BIND_INVERT_BOOLEAN = (1<<4) } GSettingsBindFlags;
Flags used when creating a binding. These flags determine in which direction the binding works. The default is to synchronize in both directions.
Equivalent to G_SETTINGS_BIND_GET|G_SETTINGS_BIND_SET
|
|
Update the GObject property when the setting changes. It is an error to use this flag if the property is not writable. | |
Update the setting when the GObject property changes. It is an error to use this flag if the property is not readable. | |
Do not try to bind a "sensitivity" property to the writability of the setting | |
When set in addition to G_SETTINGS_BIND_GET, set the GObject property value initially from the setting, but do not listen for changes of the setting | |
When passed to g_settings_bind() , uses a pair of mapping functions that invert
the boolean value when mapping between the setting and the property. The setting and property must both
be booleans. You can not pass this flag to g_settings_bind_with_mapping() .
|
void g_settings_bind (GSettings *settings
,const gchar *key
,gpointer object
,const gchar *property
,GSettingsBindFlags flags
);
Create a binding between the key
in the settings
object
and the property property
of object
.
The binding uses the default GIO mapping functions to map
between the settings and property values. These functions
handle booleans, numeric types and string types in a
straightforward way. Use g_settings_bind_with_mapping()
if
you need a custom mapping, or map between types that are not
supported by the default mapping functions.
Unless the flags
include G_SETTINGS_BIND_NO_SENSITIVITY
, this
function also establishes a binding between the writability of
key
and the "sensitive" property of object
(if object
has
a boolean property by that name). See g_settings_bind_writable()
for more details about writable bindings.
Note that the lifecycle of the binding is tied to the object, and that you can have only one binding per object property. If you bind the same property twice on the same object, the second binding overrides the first one.
|
a GSettings object |
|
the key to bind |
|
a GObject. [type GObject.Object] |
|
the name of the property to bind |
|
flags for the binding |
Since 2.26
void g_settings_bind_with_mapping (GSettings *settings
,const gchar *key
,gpointer object
,const gchar *property
,GSettingsBindFlags flags
,GSettingsBindGetMapping get_mapping
,GSettingsBindSetMapping set_mapping
,gpointer user_data
,GDestroyNotify destroy
);
Create a binding between the key
in the settings
object
and the property property
of object
.
The binding uses the provided mapping functions to map between settings and property values.
Note that the lifecycle of the binding is tied to the object, and that you can have only one binding per object property. If you bind the same property twice on the same object, the second binding overrides the first one.
|
a GSettings object |
|
the key to bind |
|
a GObject. [type GObject.Object] |
|
the name of the property to bind |
|
flags for the binding |
|
a function that gets called to convert values
from settings to object , or NULL to use the default GIO mapping |
|
a function that gets called to convert values
from object to settings , or NULL to use the default GIO mapping |
|
data that gets passed to get_mapping and set_mapping
|
|
GDestroyNotify function for user_data
|
Since 2.26
void g_settings_bind_writable (GSettings *settings
,const gchar *key
,gpointer object
,const gchar *property
,gboolean inverted
);
Create a binding between the writability of key
in the
settings
object and the property property
of object
.
The property must be boolean; "sensitive" or "visible"
properties of widgets are the most likely candidates.
Writable bindings are always uni-directional; changes of the writability of the setting will be propagated to the object property, not the other way.
When the inverted
argument is TRUE
, the binding inverts the
value as it passes from the setting to the object, i.e. property
will be set to TRUE
if the key is not
writable.
Note that the lifecycle of the binding is tied to the object, and that you can have only one binding per object property. If you bind the same property twice on the same object, the second binding overrides the first one.
|
a GSettings object |
|
the key to bind |
|
a GObject. [type GObject.Object] |
|
the name of a boolean property to bind |
|
whether to 'invert' the value |
Since 2.26
void g_settings_unbind (gpointer object
,const gchar *property
);
Removes an existing binding for property
on object
.
Note that bindings are automatically removed when the object is finalized, so it is rarely necessary to call this function.
|
the object |
|
the property whose binding is removed |
Since 2.26
GVariant * (*GSettingsBindSetMapping) (const GValue *value
,const GVariantType *expected_type
,gpointer user_data
);
The type for the function that is used to convert an object property value to a GVariant for storing it in GSettings.
|
a GValue containing the property value to map |
|
the GVariantType to create |
|
user data that was specified when the binding was created |
Returns : |
a new GVariant holding the data from value ,
or NULL in case of an error |
"backend"
property"backend" GSettingsBackend* : Read / Write / Construct Only
The GSettingsBackend for this settings object.
"delay-apply"
property"delay-apply" gboolean : Read
Whether the GSettings object is in 'delay-apply' mode. See
g_settings_delay()
for details.
Default value: FALSE
Since 2.28
"has-unapplied"
property"has-unapplied" gboolean : Read
If this property is TRUE
, the GSettings object has outstanding
changes that will be applied when g_settings_apply()
is called.
Default value: FALSE
"path"
property"path" gchar* : Read / Write / Construct Only
The path within the backend where the settings are stored.
Default value: NULL
"change-event"
signalgboolean user_function (GSettings *settings,
gpointer keys,
gint n_keys,
gpointer user_data) : Run Last
The "change-event" signal is emitted once per change event that affects this settings object. You should connect to this signal only if you are interested in viewing groups of changes before they are split out into multiple emissions of the "changed" signal. For most use cases it is more appropriate to use the "changed" signal.
In the event that the change event applies to one or more specified
keys, keys
will be an array of GQuark of length n_keys
. In the
event that the change event applies to the GSettings object as a
whole (ie: potentially every key has been changed) then keys
will
be NULL
and n_keys
will be 0.
The default handler for this signal invokes the "changed" signal
for each affected key. If any other connected handler returns
TRUE
then this default functionality will be supressed.
|
the object on which the signal was emitted |
|
an array of GQuarks for the changed keys, or NULL . [array length=n_keys][element-type GQuark][allow-none]
|
|
the length of the keys array, or 0 |
|
TRUE to stop other handlers from being invoked for the
event. FALSE to propagate the event further. |
|
user data set when the signal handler was connected. |
"changed"
signalvoid user_function (GSettings *settings,
gchar *key,
gpointer user_data) : Has Details
The "changed" signal is emitted when a key has potentially changed.
You should call one of the g_settings_get()
calls to check the new
value.
This signal supports detailed connections. You can connect to the detailed signal "changed::x" in order to only receive callbacks when key "x" changes.
|
the object on which the signal was emitted |
|
the name of the key that changed |
|
user data set when the signal handler was connected. |
"writable-change-event"
signalgboolean user_function (GSettings *settings,
guint key,
gpointer user_data) : Run Last
The "writable-change-event" signal is emitted once per writability change event that affects this settings object. You should connect to this signal if you are interested in viewing groups of changes before they are split out into multiple emissions of the "writable-changed" signal. For most use cases it is more appropriate to use the "writable-changed" signal.
In the event that the writability change applies only to a single
key, key
will be set to the GQuark for that key. In the event
that the writability change affects the entire settings object,
key
will be 0.
The default handler for this signal invokes the "writable-changed"
and "changed" signals for each affected key. This is done because
changes in writability might also imply changes in value (if for
example, a new mandatory setting is introduced). If any other
connected handler returns TRUE
then this default functionality
will be supressed.
|
the object on which the signal was emitted |
|
the quark of the key, or 0 |
|
TRUE to stop other handlers from being invoked for the
event. FALSE to propagate the event further. |
|
user data set when the signal handler was connected. |
"writable-changed"
signalvoid user_function (GSettings *settings,
gchar *key,
gpointer user_data) : Has Details
The "writable-changed" signal is emitted when the writability of a
key has potentially changed. You should call
g_settings_is_writable()
in order to determine the new status.
This signal supports detailed connections. You can connect to the detailed signal "writable-changed::x" in order to only receive callbacks when the writability of "x" changes.
|
the object on which the signal was emitted |
|
the key |
|
user data set when the signal handler was connected. |