gio

Struct Settings

Source
pub struct Settings { /* private fields */ }
Expand description

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 GLib::HashTable 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 setting the initial value of preferences widgets. The built-in SettingsExtManual::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 a 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.

Paths must start with and end with a forward slash character (/) and must not contain two sequential slash characters. Paths should be chosen based on a domain name associated with the program or library to which the settings belong. Examples of paths are /org/gtk/settings/file-chooser/ and /ca/desrt/dconf-editor/. Paths should not start with /apps/, /desktop/ or /system/ as they often did in GConf.

Unlike other configuration systems (like GConf), GSettings does not restrict keys to basic types like strings and numbers. GSettings stores values as glib::Variant, and allows any [type@GLib.VariantType] 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.

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 <default> element. The string which is translated includes all text in the <default> element, including any surrounding quotation marks.

The l10n attribute must be set to messages or time, and sets the locale category for translation. The messages category should be used by default; use time for translatable date or time formats. A translation comment can be added as an XML comment immediately above the <default> element — it is recommended to add these comments to aid translators understand the meaning and implications of the default value. An optional translation context attribute can be set on the <default> element to disambiguate multiple defaults which use the same string.

For example:

 <!-- Translators: A list of words which are not allowed to be typed, in
      GVariant serialization syntax.
      See: https://developer.gnome.org/glib/stable/gvariant-text.html -->
 <default l10n='messages' context='Banned words'>['bad', 'words']</default>

Translations of default values must remain syntactically valid serialized glib::Variants (e.g. retaining any surrounding quotation marks) or runtime errors will occur.

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.

A DTD for the gschema XML format can be found here: gschema.dtd

The glib-compile-schemas tool 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 glib::Variant types, keys can have types that have enumerated types. These can be described by a <choice>, <enum> or <flags> element, as seen in the second example below. The underlying type of such a key is string, but you can use SettingsExt::enum_(), SettingsExt::set_enum(), SettingsExt::flags(), SettingsExt::set_flags() access the numeric values corresponding to the string value of enum and flags keys.

An example for default value:

<schemalist>
  <schema id="org.gtk.Test" path="/org/gtk/Test/" 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>

    <key name="empty-string" type="s">
      <default>""</default>
      <summary>Empty strings have to be provided in GVariant form</summary>
    </key>

  </schema>
</schemalist>

An example for ranges, choices and enumerated types:

<schemalist>

  <enum id="org.gtk.Test.myenum">
    <value nick="first" value="1"/>
    <value nick="second" value="2"/>
  </enum>

  <flags id="org.gtk.Test.myflags">
    <value nick="flag1" value="1"/>
    <value nick="flag2" value="2"/>
    <value nick="flag3" value="4"/>
  </flags>

  <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='org.gtk.Test.myenum'>
      <default>'first'</default>
    </key>

    <key name='flags-key' flags='org.gtk.Test.myflags'>
      <default>["flag1","flag2"]</default>
    </key>
  </schema>
</schemalist>

§Vendor overrides

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 glib::Variant form, as in the following example:

[org.gtk.Example]
key1='string'
key2=1.5

glib-compile-schemas expects schema files to have the extension .gschema.override.

§Binding

A very convenient feature of GSettings lets you bind glib::Object properties directly to settings, using SettingsExtManual::bind(). Once a glib::Object property has been bound to a setting, changes on either side are automatically propagated to the other side. GSettings handles details like mapping between glib::Object and glib::Variant 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.

§Relocatable schemas

A relocatable schema is one with no path attribute specified on its <schema> element. By using with_path(), a GSettings object can be instantiated for a relocatable schema, assigning a path to the instance. Paths passed to with_path() will typically be constructed dynamically from a constant prefix plus some form of instance identifier; but they must still be valid GSettings paths. Paths could also be constant and used with a globally installed schema originating from a dependency library.

For example, a relocatable schema could be used to store geometry information for different windows in an application. If the schema ID was org.foo.MyApp.Window, it could be instantiated for paths /org/foo/MyApp/main/, /org/foo/MyApp/document-1/, /org/foo/MyApp/document-2/, etc. If any of the paths are well-known they can be specified as <child> elements in the parent schema, e.g.:

<schema id="org.foo.MyApp" path="/org/foo/MyApp/">
  <child name="main" schema="org.foo.MyApp.Window"/>
</schema>

§Build system integration

§Meson

GSettings is natively supported by Meson’s GNOME module.

You can install the schemas as any other data file:

install_data(
  'org.foo.MyApp.gschema.xml',
  install_dir: get_option('datadir') / 'glib-2.0/schemas',
)

You can use gnome.post_install() function to compile the schemas on installation:

gnome = import('gnome')
gnome.post_install(
  glib_compile_schemas: true,
)

If an enumerated type defined in a C header file is to be used in a GSettings schema, it can either be defined manually using an <enum> element in the schema XML, or it can be extracted automatically from the C header. This approach is preferred, as it ensures the two representations are always synchronised. To do so, you will need to use the gnome.mkenums() function with the following templates:

schemas_enums = gnome.mkenums('org.foo.MyApp.enums.xml',
  comments: '<!-- @comment@ -->',
  fhead: '<schemalist>',
  vhead: '  <@type@ id="org.foo.MyApp.@EnumName@">',
  vprod: '    <value nick="@valuenick@" value="@valuenum@"/>',
  vtail: '  </@type@>',
  ftail: '</schemalist>',
  sources: enum_sources,
  install_header: true,
  install_dir: get_option('datadir') / 'glib-2.0/schemas',
)

It is recommended to validate your schemas as part of the test suite for your application:

test('validate-schema',
  find_program('glib-compile-schemas'),
  args: ['--strict', '--dry-run', meson.current_source_dir()],
)

If your application allows running uninstalled, you should also use the gnome.compile_schemas() function to compile the schemas in the current build directory:

gnome.compile_schemas()

§Autotools

GSettings comes with autotools integration to simplify compiling and installing schemas. To add GSettings support to an application, add the following to your configure.ac:

GLIB_GSETTINGS

In the appropriate Makefile.am, use the following snippet to compile and install the named schema:

gsettings_SCHEMAS = org.foo.MyApp.gschema.xml
EXTRA_DIST = $(gsettings_SCHEMAS)

@GSETTINGS_RULES@

If an enumerated type defined in a C header file is to be used in a GSettings schema, it can either be defined manually using an <enum> element in the schema XML, or it can be extracted automatically from the C header. This approach is preferred, as it ensures the two representations are always synchronised. To do so, add the following to the relevant Makefile.am:

gsettings_ENUM_NAMESPACE = org.foo.MyApp
gsettings_ENUM_FILES = my-app-enums.h my-app-misc.h

gsettings_ENUM_NAMESPACE specifies the schema namespace for the enum files, which are specified in gsettings_ENUM_FILES. This will generate a org.foo.MyApp.enums.xml file containing the extracted enums, which will be automatically included in the schema compilation, install and uninstall rules. It should not be committed to version control or included in EXTRA_DIST.

§Localization

No changes are needed to the build system to mark a schema XML file for translation. Assuming it sets the gettext-domain attribute, a schema may be marked for translation by adding it to POTFILES.in, assuming gettext 0.19 or newer is in use (the preferred method for translation):

data/org.foo.MyApp.gschema.xml

Alternatively, if intltool 0.50.1 is in use:

[type: gettext/gsettings]data/org.foo.MyApp.gschema.xml

GSettings will use gettext to look up translations for the <summary> and <description> elements, and also any <default> elements which have a l10n attribute set.

Translations must not be included in the .gschema.xml file by the build system, for example by using a rule to generate the XML file from a template.

§Properties

§backend

The name of the context that the settings are stored in.

Readable | Writeable | Construct Only

§delay-apply

Whether the #GSettings object is in ‘delay-apply’ mode. See g_settings_delay() for details.

Readable

§has-unapplied

If this property is true, the #GSettings object has outstanding changes that will be applied when g_settings_apply() is called.

Readable

§path

The path within the backend where the settings are stored.

Readable | Writeable | Construct Only

§schema

The name of the schema that describes the types of keys for this #GSettings object.

The type of this property is not #GSettingsSchema. #GSettingsSchema has only existed since version 2.32 and unfortunately this name was used in previous versions to refer to the schema ID rather than the schema itself. Take care to use the ‘settings-schema’ property if you wish to pass in a #GSettingsSchema.

Readable | Writeable | Construct Only

§schema-id

The name of the schema that describes the types of keys for this #GSettings object.

Readable | Writeable | Construct Only

§settings-schema

The #GSettingsSchema describing the types of keys for this #GSettings object.

Ideally, this property would be called ‘schema’. #GSettingsSchema has only existed since version 2.32, however, and before then the ‘schema’ property was used to refer to the ID of the schema rather than the schema itself. Take care.

Readable | Writeable | Construct Only

§Signals

§change-event

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 None 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 suppressed.

§changed

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.

Note that @settings only emits this signal if you have read @key at least once while a signal handler was already connected for @key.

Detailed

§writable-change-event

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 suppressed.

§writable-changed

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.

Detailed

§Implements

SettingsExt, [trait@glib::ObjectExt], SettingsExtManual

GLib type: GObject with reference counted clone semantics.

Implementations§

Source§

impl Settings

Source

pub const NONE: Option<&'static Settings> = None

Source

pub fn new(schema_id: &str) -> Settings

Creates a new #GSettings object with the schema specified by @schema_id.

It is an error for the schema to not exist: schemas are an essential part of a program, as they provide type information. If schemas need to be dynamically loaded (for example, from an optional runtime dependency), g_settings_schema_source_lookup() can be used to test for their existence before loading them.

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().

§schema_id

the id of the schema

§Returns

a new #GSettings object

Source

pub fn new_full( schema: &SettingsSchema, backend: Option<&impl IsA<SettingsBackend>>, path: Option<&str>, ) -> Settings

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 3 parameters are given directly as @schema, @backend and @path, and the main context is taken from the thread-default (as per g_settings_new()).

If @backend is None then the default backend is used.

If @path is None then the path from the schema is used. It is an error if @path is None and the schema has no path of its own or if @path is non-None and not equal to the path that the schema does have.

§schema

a #GSettingsSchema

§backend

a #GSettingsBackend

§path

the path to use

§Returns

a new #GSettings object

Source

pub fn with_backend( schema_id: &str, backend: &impl IsA<SettingsBackend>, ) -> Settings

Creates a new #GSettings object with the schema specified by @schema_id and a given #GSettingsBackend.

Creating a #GSettings object with a 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.

§schema_id

the id of the schema

§backend

the #GSettingsBackend to use

§Returns

a new #GSettings object

Source

pub fn with_backend_and_path( schema_id: &str, backend: &impl IsA<SettingsBackend>, path: &str, ) -> Settings

Creates a new #GSettings object with the schema specified by @schema_id and a given #GSettingsBackend and path.

This is a mix of g_settings_new_with_backend() and g_settings_new_with_path().

§schema_id

the id of the schema

§backend

the #GSettingsBackend to use

§path

the path to use

§Returns

a new #GSettings object

Source

pub fn with_path(schema_id: &str, path: &str) -> Settings

Creates a new #GSettings object with the relocatable schema specified by @schema_id and a given 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.

It is a programmer error if @path is not a valid path. A valid path begins and ends with ‘/’ and does not contain two consecutive ‘/’ characters.

§schema_id

the id of the schema

§path

the path to use

§Returns

a new #GSettings object

Source

pub fn sync()

Ensures that all pending operations 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).

Source

pub fn unbind(object: &impl IsA<Object>, property: &str)

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.

§object

the object

§property

the property whose binding is removed

Trait Implementations§

Source§

impl Clone for Settings

Source§

fn clone(&self) -> Self

Makes a clone of this shared reference.

This increments the strong reference count of the object. Dropping the object will decrement it again.

1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Settings

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl HasParamSpec for Settings

Source§

type ParamSpec = ParamSpecObject

Source§

type SetValue = Settings

Preferred value to be used as setter for the associated ParamSpec.
Source§

type BuilderFn = fn(_: &str) -> ParamSpecObjectBuilder<'_, Settings>

Source§

fn param_spec_builder() -> Self::BuilderFn

Source§

impl Hash for Settings

Source§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Hashes the memory address of this object.

1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for Settings

Source§

fn cmp(&self, other: &Self) -> Ordering

Comparison for two GObjects.

Compares the memory addresses of the provided objects.

1.21.0 · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl ParentClassIs for Settings

Source§

impl<OT: ObjectType> PartialEq<OT> for Settings

Source§

fn eq(&self, other: &OT) -> bool

Equality for two GObjects.

Two GObjects are equal if their memory addresses are equal.

1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<OT: ObjectType> PartialOrd<OT> for Settings

Source§

fn partial_cmp(&self, other: &OT) -> Option<Ordering>

Partial comparison for two GObjects.

Compares the memory addresses of the provided objects.

1.0.0 · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl StaticType for Settings

Source§

fn static_type() -> Type

Returns the type identifier of Self.
Source§

impl Eq for Settings

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Cast for T
where T: ObjectType,

Source§

fn upcast<T>(self) -> T
where T: ObjectType, Self: IsA<T>,

Upcasts an object to a superclass or interface T. Read more
Source§

fn upcast_ref<T>(&self) -> &T
where T: ObjectType, Self: IsA<T>,

Upcasts an object to a reference of its superclass or interface T. Read more
Source§

fn downcast<T>(self) -> Result<T, Self>
where T: ObjectType, Self: MayDowncastTo<T>,

Tries to downcast to a subclass or interface implementor T. Read more
Source§

fn downcast_ref<T>(&self) -> Option<&T>
where T: ObjectType, Self: MayDowncastTo<T>,

Tries to downcast to a reference of its subclass or interface implementor T. Read more
Source§

fn dynamic_cast<T>(self) -> Result<T, Self>
where T: ObjectType,

Tries to cast to an object of type T. This handles upcasting, downcasting and casting between interface and interface implementors. All checks are performed at runtime, while upcast will do many checks at compile-time already. downcast will perform the same checks at runtime as dynamic_cast, but will also ensure some amount of compile-time safety. Read more
Source§

fn dynamic_cast_ref<T>(&self) -> Option<&T>
where T: ObjectType,

Tries to cast to reference to an object of type T. This handles upcasting, downcasting and casting between interface and interface implementors. All checks are performed at runtime, while downcast and upcast will do many checks at compile-time already. Read more
Source§

unsafe fn unsafe_cast<T>(self) -> T
where T: ObjectType,

Casts to T unconditionally. Read more
Source§

unsafe fn unsafe_cast_ref<T>(&self) -> &T
where T: ObjectType,

Casts to &T unconditionally. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

Source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

Source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

Source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

Source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

Source§

impl<T> FromGlibContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

Source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GList> for T

Source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GPtrArray> for T

Source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *const GSList> for T

Source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GList> for T

Source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GPtrArray> for T

Source§

impl<T> FromGlibPtrArrayContainerAsVec<<T as GlibPtrDefault>::GlibType, *mut GSList> for T

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoClosureReturnValue for T
where T: Into<Value>,

Source§

impl<U> IsSubclassableExt for U

Source§

impl<T> ObjectExt for T
where T: ObjectType,

Source§

fn is<U>(&self) -> bool
where U: StaticType,

Returns true if the object is an instance of (can be cast to) T.
Source§

fn type_(&self) -> Type

Returns the type of the object.
Source§

fn object_class(&self) -> &Class<Object>

Returns the ObjectClass of the object. Read more
Source§

fn class(&self) -> &Class<T>
where T: IsClass,

Returns the class of the object.
Source§

fn class_of<U>(&self) -> Option<&Class<U>>
where U: IsClass,

Returns the class of the object in the given type T. Read more
Source§

fn interface<U>(&self) -> Option<InterfaceRef<'_, U>>
where U: IsInterface,

Returns the interface T of the object. Read more
Source§

fn set_property(&self, property_name: &str, value: impl Into<Value>)

Sets the property property_name of the object to value value. Read more
Source§

fn set_property_from_value(&self, property_name: &str, value: &Value)

Sets the property property_name of the object to value value. Read more
Source§

fn set_properties(&self, property_values: &[(&str, &dyn ToValue)])

Sets multiple properties of the object at once. Read more
Source§

fn set_properties_from_value(&self, property_values: &[(&str, Value)])

Sets multiple properties of the object at once. Read more
Source§

fn property<V>(&self, property_name: &str) -> V
where V: for<'b> FromValue<'b> + 'static,

Gets the property property_name of the object and cast it to the type V. Read more
Source§

fn property_value(&self, property_name: &str) -> Value

Gets the property property_name of the object. Read more
Source§

fn has_property(&self, property_name: &str, type_: Option<Type>) -> bool

Check if the object has a property property_name of the given type_. Read more
Source§

fn property_type(&self, property_name: &str) -> Option<Type>

Get the type of the property property_name of this object. Read more
Source§

fn find_property(&self, property_name: &str) -> Option<ParamSpec>

Get the ParamSpec of the property property_name of this object.
Source§

fn list_properties(&self) -> PtrSlice<ParamSpec>

Return all ParamSpec of the properties of this object.
Source§

fn freeze_notify(&self) -> PropertyNotificationFreezeGuard

Freeze all property notifications until the return guard object is dropped. Read more
Source§

unsafe fn set_qdata<QD>(&self, key: Quark, value: QD)
where QD: 'static,

Set arbitrary data on this object with the given key. Read more
Source§

unsafe fn qdata<QD>(&self, key: Quark) -> Option<NonNull<QD>>
where QD: 'static,

Return previously set arbitrary data of this object with the given key. Read more
Source§

unsafe fn steal_qdata<QD>(&self, key: Quark) -> Option<QD>
where QD: 'static,

Retrieve previously set arbitrary data of this object with the given key. Read more
Source§

unsafe fn set_data<QD>(&self, key: &str, value: QD)
where QD: 'static,

Set arbitrary data on this object with the given key. Read more
Source§

unsafe fn data<QD>(&self, key: &str) -> Option<NonNull<QD>>
where QD: 'static,

Return previously set arbitrary data of this object with the given key. Read more
Source§

unsafe fn steal_data<QD>(&self, key: &str) -> Option<QD>
where QD: 'static,

Retrieve previously set arbitrary data of this object with the given key. Read more
Source§

fn block_signal(&self, handler_id: &SignalHandlerId)

Block a given signal handler. Read more
Source§

fn unblock_signal(&self, handler_id: &SignalHandlerId)

Unblock a given signal handler.
Source§

fn stop_signal_emission(&self, signal_id: SignalId, detail: Option<Quark>)

Stop emission of the currently emitted signal.
Source§

fn stop_signal_emission_by_name(&self, signal_name: &str)

Stop emission of the currently emitted signal by the (possibly detailed) signal name.
Source§

fn connect<F>( &self, signal_name: &str, after: bool, callback: F, ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,

Connect to the signal signal_name on this object. Read more
Source§

fn connect_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F, ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + Send + Sync + 'static,

Connect to the signal signal_id on this object. Read more
Source§

fn connect_local<F>( &self, signal_name: &str, after: bool, callback: F, ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + 'static,

Connect to the signal signal_name on this object. Read more
Source§

fn connect_local_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F, ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value> + 'static,

Connect to the signal signal_id on this object. Read more
Source§

unsafe fn connect_unsafe<F>( &self, signal_name: &str, after: bool, callback: F, ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value>,

Connect to the signal signal_name on this object. Read more
Source§

unsafe fn connect_unsafe_id<F>( &self, signal_id: SignalId, details: Option<Quark>, after: bool, callback: F, ) -> SignalHandlerId
where F: Fn(&[Value]) -> Option<Value>,

Connect to the signal signal_id on this object. Read more
Source§

fn connect_closure( &self, signal_name: &str, after: bool, closure: RustClosure, ) -> SignalHandlerId

Connect a closure to the signal signal_name on this object. Read more
Source§

fn connect_closure_id( &self, signal_id: SignalId, details: Option<Quark>, after: bool, closure: RustClosure, ) -> SignalHandlerId

Connect a closure to the signal signal_id on this object. Read more
Source§

fn watch_closure(&self, closure: &impl AsRef<Closure>)

Limits the lifetime of closure to the lifetime of the object. When the object’s reference count drops to zero, the closure will be invalidated. An invalidated closure will ignore any calls to invoke_with_values, or invoke when using Rust closures.
Source§

fn emit<R>(&self, signal_id: SignalId, args: &[&dyn ToValue]) -> R

Emit signal by signal id. Read more
Source§

fn emit_with_values(&self, signal_id: SignalId, args: &[Value]) -> Option<Value>

Same as Self::emit but takes Value for the arguments.
Source§

fn emit_by_name<R>(&self, signal_name: &str, args: &[&dyn ToValue]) -> R

Emit signal by its name. Read more
Source§

fn emit_by_name_with_values( &self, signal_name: &str, args: &[Value], ) -> Option<Value>

Emit signal by its name. Read more
Source§

fn emit_by_name_with_details<R>( &self, signal_name: &str, details: Quark, args: &[&dyn ToValue], ) -> R

Emit signal by its name with details. Read more
Source§

fn emit_by_name_with_details_and_values( &self, signal_name: &str, details: Quark, args: &[Value], ) -> Option<Value>

Emit signal by its name with details. Read more
Source§

fn emit_with_details<R>( &self, signal_id: SignalId, details: Quark, args: &[&dyn ToValue], ) -> R

Emit signal by signal id with details. Read more
Source§

fn emit_with_details_and_values( &self, signal_id: SignalId, details: Quark, args: &[Value], ) -> Option<Value>

Emit signal by signal id with details. Read more
Source§

fn disconnect(&self, handler_id: SignalHandlerId)

Disconnect a previously connected signal handler.
Source§

fn connect_notify<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
where F: Fn(&T, &ParamSpec) + Send + Sync + 'static,

Connect to the notify signal of the object. Read more
Source§

fn connect_notify_local<F>(&self, name: Option<&str>, f: F) -> SignalHandlerId
where F: Fn(&T, &ParamSpec) + 'static,

Connect to the notify signal of the object. Read more
Source§

unsafe fn connect_notify_unsafe<F>( &self, name: Option<&str>, f: F, ) -> SignalHandlerId
where F: Fn(&T, &ParamSpec),

Connect to the notify signal of the object. Read more
Source§

fn notify(&self, property_name: &str)

Notify that the given property has changed its value. Read more
Source§

fn notify_by_pspec(&self, pspec: &ParamSpec)

Notify that the given property has changed its value. Read more
Source§

fn downgrade(&self) -> WeakRef<T>

Downgrade this object to a weak reference.
Source§

fn add_weak_ref_notify<F>(&self, f: F) -> WeakRefNotify<T>
where F: FnOnce() + Send + 'static,

Add a callback to be notified when the Object is disposed.
Source§

fn add_weak_ref_notify_local<F>(&self, f: F) -> WeakRefNotify<T>
where F: FnOnce() + 'static,

Add a callback to be notified when the Object is disposed. Read more
Source§

fn bind_property<'a, 'f, 't, O>( &'a self, source_property: &'a str, target: &'a O, target_property: &'a str, ) -> BindingBuilder<'a, 'f, 't>
where O: ObjectType,

Bind property source_property on this object to the target_property on the target object. Read more
Source§

fn ref_count(&self) -> u32

Returns the strong reference count of this object.
Source§

unsafe fn run_dispose(&self)

Runs the dispose mechanism of the object. Read more
Source§

impl<T> Property for T
where T: HasParamSpec,

Source§

type Value = T

Source§

impl<T> PropertyGet for T
where T: HasParamSpec,

Source§

type Value = T

Source§

fn get<R, F>(&self, f: F) -> R
where F: Fn(&<T as PropertyGet>::Value) -> R,

Source§

impl<O> SettingsExt for O
where O: IsA<Settings>,

Source§

fn apply(&self)

Applies any changes that have been made to the settings. This function does nothing unless @self is in ‘delay-apply’ mode; see g_settings_delay(). In the normal case settings are always applied immediately.
Source§

fn bind_with_mapping_closures( &self, key: &str, object: &impl IsA<Object>, property: &str, flags: SettingsBindFlags, get_mapping: Option<&Closure>, set_mapping: Option<&Closure>, )

Available on crate feature v2_82 only.
Version of g_settings_bind_with_mapping() using closures instead of callbacks for easier binding in other languages. Read more
Source§

fn bind_writable( &self, key: &str, object: &impl IsA<Object>, property: &str, inverted: bool, )

Create a binding between the writability of @key in the @self object and the property @property of @object. The property must be boolean; “sensitive” or “visible” properties of widgets are the most likely candidates. Read more
Source§

fn create_action(&self, key: &str) -> Action

Creates a #GAction corresponding to a given #GSettings key. Read more
Source§

fn delay(&self)

Changes the #GSettings object into ‘delay-apply’ mode. In this mode, changes to @self are not immediately propagated to the backend, but kept locally until g_settings_apply() is called.
Source§

fn boolean(&self, key: &str) -> bool

Gets the value that is stored at @key in @self. Read more
Source§

fn child(&self, name: &str) -> Settings

Creates a child settings object which has a base path of base-path/@name, where base-path is the base path of @self. Read more
Source§

fn default_value(&self, key: &str) -> Option<Variant>

Gets the “default value” of a key. Read more
Source§

fn double(&self, key: &str) -> f64

Gets the value that is stored at @key in @self. Read more
Source§

fn enum_(&self, key: &str) -> i32

Gets the value that is stored in @self for @key and converts it to the enum value that it represents. Read more
Source§

fn flags(&self, key: &str) -> u32

Gets the value that is stored in @self for @key and converts it to the flags value that it represents. Read more
Source§

fn has_unapplied(&self) -> bool

Returns whether the #GSettings object has any unapplied changes. This can only be the case if it is in ‘delayed-apply’ mode. Read more
Source§

fn int(&self, key: &str) -> i32

Gets the value that is stored at @key in @self. Read more
Source§

fn int64(&self, key: &str) -> i64

Gets the value that is stored at @key in @self. Read more
Source§

fn string(&self, key: &str) -> GString

Gets the value that is stored at @key in @self. Read more
Source§

fn uint(&self, key: &str) -> u32

Gets the value that is stored at @key in @self. Read more
Source§

fn uint64(&self, key: &str) -> u64

Gets the value that is stored at @key in @self. Read more
Source§

fn user_value(&self, key: &str) -> Option<Variant>

Checks the “user value” of a key, if there is one. Read more
Source§

fn value(&self, key: &str) -> Variant

Gets the value that is stored in @self for @key. Read more
Source§

fn is_writable(&self, name: &str) -> bool

Finds out if a key can be written or not Read more
Source§

fn list_children(&self) -> Vec<GString>

Gets the list of children on @self. Read more
Source§

fn reset(&self, key: &str)

Resets @key to its default value. Read more
Source§

fn revert(&self)

Reverts all non-applied changes to the settings. This function does nothing unless @self is in ‘delay-apply’ mode; see g_settings_delay(). In the normal case settings are always applied immediately. Read more
Source§

fn set_boolean(&self, key: &str, value: bool) -> Result<(), BoolError>

Sets @key in @self to @value. Read more
Source§

fn set_double(&self, key: &str, value: f64) -> Result<(), BoolError>

Sets @key in @self to @value. Read more
Source§

fn set_enum(&self, key: &str, value: i32) -> Result<(), BoolError>

Looks up the enumerated type nick for @value and writes it to @key, within @self. Read more
Source§

fn set_flags(&self, key: &str, value: u32) -> Result<(), BoolError>

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, within @self. Read more
Source§

fn set_int(&self, key: &str, value: i32) -> Result<(), BoolError>

Sets @key in @self to @value. Read more
Source§

fn set_int64(&self, key: &str, value: i64) -> Result<(), BoolError>

Sets @key in @self to @value. Read more
Source§

fn set_string(&self, key: &str, value: &str) -> Result<(), BoolError>

Sets @key in @self to @value. Read more
Source§

fn set_uint(&self, key: &str, value: u32) -> Result<(), BoolError>

Sets @key in @self to @value. Read more
Source§

fn set_uint64(&self, key: &str, value: u64) -> Result<(), BoolError>

Sets @key in @self to @value. Read more
Source§

fn set_value(&self, key: &str, value: &Variant) -> Result<(), BoolError>

Sets @key in @self to @value. Read more
Source§

fn backend(&self) -> Option<SettingsBackend>

The name of the context that the settings are stored in.
Source§

fn is_delay_apply(&self) -> bool

Whether the #GSettings object is in ‘delay-apply’ mode. See g_settings_delay() for details.
Source§

fn path(&self) -> Option<GString>

The path within the backend where the settings are stored.
Source§

fn schema_id(&self) -> Option<GString>

The name of the schema that describes the types of keys for this #GSettings object.
Source§

fn settings_schema(&self) -> Option<SettingsSchema>

The #GSettingsSchema describing the types of keys for this #GSettings object. Read more
Source§

fn connect_changed<F: Fn(&Self, &str) + 'static>( &self, detail: Option<&str>, f: F, ) -> SignalHandlerId

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. Read more
Source§

fn connect_writable_change_event<F: Fn(&Self, u32) -> Propagation + 'static>( &self, f: F, ) -> SignalHandlerId

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. Read more
Source§

fn connect_writable_changed<F: Fn(&Self, &str) + 'static>( &self, detail: Option<&str>, f: F, ) -> SignalHandlerId

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. Read more
Source§

fn connect_delay_apply_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId

Source§

fn connect_has_unapplied_notify<F: Fn(&Self) + 'static>( &self, f: F, ) -> SignalHandlerId

Source§

impl<O> SettingsExtManual for O
where O: IsA<Settings>,

Source§

fn get<U: FromVariant>(&self, key: &str) -> U

Source§

fn set(&self, key: &str, value: impl Into<Variant>) -> Result<(), BoolError>

Source§

fn strv(&self, key: &str) -> StrV

A convenience variant of g_settings_get() for string arrays. Read more
Source§

fn set_strv(&self, key: &str, value: impl IntoStrV) -> Result<(), BoolError>

Sets @key in @self to @value. Read more
Source§

fn bind<'a, P: IsA<Object>>( &'a self, key: &'a str, object: &'a P, property: &'a str, ) -> BindingBuilder<'a>

Create a binding between the @key in the @self object and the property @property of @object. Read more
Source§

impl<T> StaticTypeExt for T
where T: StaticType,

Source§

fn ensure_type()

Ensures that the type has been registered with the type system.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> TransparentType for T

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T> TryFromClosureReturnValue for T
where T: for<'a> FromValue<'a> + StaticType + 'static,

Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<'a, T, C, E> FromValueOptional<'a> for T
where T: FromValue<'a, Checker = C>, C: ValueTypeChecker<Error = ValueTypeMismatchOrNoneError<E>>, E: Error + Send + 'static,

Source§

impl<Super, Sub> MayDowncastTo<Sub> for Super
where Super: IsA<Super>, Sub: IsA<Super>,