Class SettingsBackend
- All Implemented Interfaces:
Proxy
- Direct Known Subclasses:
SettingsBackend.SettingsBackendImpl
GSettingsBackend
interface defines a generic interface for
non-strictly-typed data that is stored in a hierarchy. To implement
an alternative storage backend for Settings
, you need to
implement the GSettingsBackend
interface and then make it implement the
extension point G_SETTINGS_BACKEND_EXTENSION_POINT_NAME
.
The interface defines methods for reading and writing values, a method for determining if writing of certain values will fail (lockdown) and a change notification mechanism.
The semantics of the interface are very precisely defined and implementations must carefully adhere to the expectations of callers that are documented on each of the interface methods.
Some of the GSettingsBackend
functions accept or return a
GLib.Tree
. These trees always have strings as keys and
GLib.Variant
as values.
The GSettingsBackend
API is exported to allow third-party
implementations, but does not carry the same stability guarantees
as the public GIO API. For this reason, you have to define the
C preprocessor symbol G_SETTINGS_ENABLE_BACKEND
before including
gio/gsettingsbackend.h
.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
SettingsBackend.Builder<B extends SettingsBackend.Builder<B>>
Inner class implementing a builder pattern to construct a GObject with properties.static class
Class structure forGSettingsBackend
.static class
The SettingsBackendImpl type represents a native instance of the abstract SettingsBackend class.Nested classes/interfaces inherited from class org.gnome.gobject.GObject
GObject.NotifyCallback, GObject.ObjectClass
-
Constructor Summary
ConstructorDescriptionSettingsBackend
(MemorySegment address) Create a SettingsBackend proxy instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionprotected SettingsBackend
asParent()
Returns this instance as if it were its parent type.static SettingsBackend.Builder
<? extends SettingsBackend.Builder> builder()
ASettingsBackend.Builder
object constructs aSettingsBackend
with the specified properties.void
changed
(String key, @Nullable MemorySegment originTag) Signals that a single key has possibly changed.void
changedTree
(Tree tree, @Nullable MemorySegment originTag) This call is a convenience wrapper.static void
Calculate the longest common prefix of all keys in a tree and write out an array of the key names relative to that prefix and, optionally, the value to store at each of those keys.static SettingsBackend
Returns the defaultGSettingsBackend
.static MemoryLayout
The memory layout of the native struct.protected Permission
getPermission
(String path) virtual method to get permission of a keystatic Type
getType()
Get the GType of the SettingsBackend classprotected boolean
getWritable
(String key) virtual method to get if a key is writablevoid
keysChanged
(String path, String[] items, @Nullable MemorySegment originTag) Signals that a list of keys have possibly changed.void
pathChanged
(String path, @Nullable MemorySegment originTag) Signals that all keys below a given path may have possibly changed.void
pathWritableChanged
(String path) Signals that the writability of all keys below a given path may have changed.protected Variant
read
(String key, VariantType expectedType, boolean defaultValue) virtual method to read a key's valueprotected Variant
readUserValue
(String key, VariantType expectedType) virtual method to read user's key valueprotected void
reset
(String key, @Nullable MemorySegment originTag) virtual method to reset stateprotected void
virtual method to subscribe to key changesprotected void
sync()
virtual method to sync stateprotected void
unsubscribe
(String name) virtual method to unsubscribe to key changesvoid
writableChanged
(String key) Signals that the writability of a single key has possibly changed.protected boolean
write
(String key, Variant value, @Nullable MemorySegment originTag) virtual method to change key's valueprotected boolean
writeTree
(Tree tree, @Nullable MemorySegment originTag) virtual method to change a tree of keysMethods inherited from class org.gnome.gobject.GObject
addToggleRef, addWeakPointer, bindProperty, bindProperty, bindProperty, bindPropertyFull, bindPropertyFull, bindPropertyWithClosures, bindPropertyWithClosures, compatControl, connect, connect, connect, constructed, disconnect, dispatchPropertiesChanged, dispose, dupData, dupQdata, emit, emitNotify, finalize_, forceFloating, freezeNotify, get, getData, getProperty, getProperty, getProperty, getQdata, getv, interfaceFindProperty, interfaceInstallProperty, interfaceListProperties, isFloating, newInstance, newInstance, newInstance, newInstance, newv, notify_, notify_, notifyByPspec, onNotify, ref, refSink, removeToggleRef, removeWeakPointer, replaceData, replaceQdata, runDispose, set, setData, setDataFull, setProperty, setProperty, setProperty, setQdata, setQdataFull, setv, stealData, stealQdata, takeRef, thawNotify, unref, watchClosure, weakRef, weakUnref, withProperties
Methods inherited from class org.gnome.gobject.TypeInstance
callParent, callParent, getPrivate, readGClass, writeGClass
Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
-
Constructor Details
-
SettingsBackend
Create a SettingsBackend proxy instance for the provided memory address.- Parameters:
address
- the memory address of the native object
-
-
Method Details
-
getType
-
getMemoryLayout
The memory layout of the native struct.- Returns:
- the memory layout
-
asParent
Returns this instance as if it were its parent type. This is mostly synonymous to the Javasuper
keyword, but will set the native typeclass function pointers to the parent type. When overriding a native virtual method in Java, "chaining up" withsuper.methodName()
doesn't work, because it invokes the overridden function pointer again. To chain up, callasParent().methodName()
. This will call the native function pointer of this virtual method in the typeclass of the parent type. -
flattenTree
public static void flattenTree(Tree tree, Out<String> path, String[] keys, @Nullable @Nullable Variant[] values) Calculate the longest common prefix of all keys in a tree and write out an array of the key names relative to that prefix and, optionally, the value to store at each of those keys.You must free the value returned in
path
,keys
andvalues
using g_free(). You should not attempt to free or unref the contents ofkeys
orvalues
.- Parameters:
tree
- aGTree
containing the changespath
- the location to save the pathkeys
- the location to save the relative keysvalues
- the location to save the values, ornull
-
getDefault
Returns the defaultGSettingsBackend
. It is possible to override the default by setting theGSETTINGS_BACKEND
environment variable to the name of a settings backend.The user gets a reference to the backend.
- Returns:
- the default
GSettingsBackend
, which will be a dummy (memory) settings backend if no other settings backend is available.
-
changed
Signals that a single key has possibly changed. Backend implementations should call this if a key has possibly changed its value.key
must be a valid key (ie starting with a slash, not containing '//', and not ending with a slash).The implementation must call this function during any call to g_settings_backend_write(), before the call returns (except in the case that no keys are actually changed and it cares to detect this fact). It may not rely on the existence of a mainloop for dispatching the signal later.
The implementation may call this function at any other time it likes in response to other events (such as changes occurring outside of the program). These calls may originate from a mainloop or may originate in response to any other action (including from calls to g_settings_backend_write()).
In the case that this call is in response to a call to g_settings_backend_write() then
originTag
must be set to the same value that was passed to that call.- Parameters:
key
- the name of the keyoriginTag
- the origin tag
-
changedTree
This call is a convenience wrapper. It gets the list of changes fromtree
, computes the longest common prefix and calls g_settings_backend_changed().- Parameters:
tree
- aGTree
containing the changesoriginTag
- the origin tag
-
keysChanged
Signals that a list of keys have possibly changed. Backend implementations should call this if keys have possibly changed their values.path
must be a valid path (ie starting and ending with a slash and not containing '//'). Each string initems
must form a valid key name whenpath
is prefixed to it (ie: each item must not start or end with '/' and must not contain '//').The meaning of this signal is that any of the key names resulting from the contatenation of
path
with each item initems
may have changed.The same rules for when notifications must occur apply as per g_settings_backend_changed(). These two calls can be used interchangeably if exactly one item has changed (although in that case g_settings_backend_changed() is definitely preferred).
For efficiency reasons, the implementation should strive for
path
to be as long as possible (ie: the longest common prefix of all of the keys that were changed) but this is not strictly required.- Parameters:
path
- the path containing the changesitems
- thenull
-terminated list of changed keysoriginTag
- the origin tag
-
pathChanged
Signals that all keys below a given path may have possibly changed. Backend implementations should call this if an entire path of keys have possibly changed their values.path
must be a valid path (ie starting and ending with a slash and not containing '//').The meaning of this signal is that any of the key which has a name starting with
path
may have changed.The same rules for when notifications must occur apply as per g_settings_backend_changed(). This call might be an appropriate reasponse to a 'reset' call but implementations are also free to explicitly list the keys that were affected by that call if they can easily do so.
For efficiency reasons, the implementation should strive for
path
to be as long as possible (ie: the longest common prefix of all of the keys that were changed) but this is not strictly required. As an example, if this function is called with the path of "/" then every single key in the application will be notified of a possible change.- Parameters:
path
- the path containing the changesoriginTag
- the origin tag
-
pathWritableChanged
Signals that the writability of all keys below a given path may have changed.Since GSettings performs no locking operations for itself, this call will always be made in response to external events.
- Parameters:
path
- the name of the path
-
writableChanged
Signals that the writability of a single key has possibly changed.Since GSettings performs no locking operations for itself, this call will always be made in response to external events.
- Parameters:
key
- the name of the key
-
getPermission
virtual method to get permission of a key -
getWritable
virtual method to get if a key is writable -
read
virtual method to read a key's value -
readUserValue
virtual method to read user's key value -
reset
virtual method to reset state -
subscribe
virtual method to subscribe to key changes -
sync
protected void sync()virtual method to sync state -
unsubscribe
virtual method to unsubscribe to key changes -
write
virtual method to change key's value -
writeTree
virtual method to change a tree of keys -
builder
ASettingsBackend.Builder
object constructs aSettingsBackend
with the specified properties. Use the variousset...()
methods to set properties, and finish construction withSettingsBackend.Builder.build()
.
-