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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
use glib::{prelude::*, translate::*};
use std::fmt;
glib::wrapper! {
/// The [`SettingsBackend`][crate::SettingsBackend] interface defines a generic interface for
/// non-strictly-typed data that is stored in a hierarchy. To implement
/// an alternative storage backend for [`Settings`][crate::Settings], you need to implement
/// the [`SettingsBackend`][crate::SettingsBackend] interface and then make it implement the
/// extension point [`SETTINGS_BACKEND_EXTENSION_POINT_NAME`][crate::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 [`SettingsBackend`][crate::SettingsBackend] functions accept or return a `GTree`.
/// These trees always have strings as keys and [`glib::Variant`][struct@crate::glib::Variant] as values.
/// `g_settings_backend_create_tree()` is a convenience function to create
/// suitable trees.
///
/// The [`SettingsBackend`][crate::SettingsBackend] 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`.
///
/// This is an Abstract Base Class, you cannot instantiate it.
///
/// # Implements
///
/// [`SettingsBackendExt`][trait@crate::prelude::SettingsBackendExt], [`trait@glib::ObjectExt`]
#[doc(alias = "GSettingsBackend")]
pub struct SettingsBackend(Object<ffi::GSettingsBackend, ffi::GSettingsBackendClass>);
match fn {
type_ => || ffi::g_settings_backend_get_type(),
}
}
impl SettingsBackend {
pub const NONE: Option<&'static SettingsBackend> = None;
//#[doc(alias = "g_settings_backend_flatten_tree")]
//pub fn flatten_tree(tree: /*Ignored*/&glib::Tree) -> (glib::GString, Vec<glib::GString>, Vec<glib::Variant>) {
// unsafe { TODO: call ffi:g_settings_backend_flatten_tree() }
//}
/// Returns the default [`SettingsBackend`][crate::SettingsBackend]. It is possible to override
/// the default by setting the `GSETTINGS_BACKEND` environment variable
/// to the name of a settings backend.
///
/// The user gets a reference to the backend.
///
/// # Returns
///
/// the default [`SettingsBackend`][crate::SettingsBackend],
/// which will be a dummy (memory) settings backend if no other settings
/// backend is available.
#[doc(alias = "g_settings_backend_get_default")]
#[doc(alias = "get_default")]
#[allow(clippy::should_implement_trait)]
pub fn default() -> SettingsBackend {
unsafe { from_glib_full(ffi::g_settings_backend_get_default()) }
}
}
/// Trait containing all [`struct@SettingsBackend`] methods.
///
/// # Implementors
///
/// [`SettingsBackend`][struct@crate::SettingsBackend]
pub trait SettingsBackendExt: 'static {
//#[doc(alias = "g_settings_backend_changed")]
//fn changed(&self, key: &str, origin_tag: /*Unimplemented*/Option<Basic: Pointer>);
//#[doc(alias = "g_settings_backend_changed_tree")]
//fn changed_tree(&self, tree: /*Ignored*/&glib::Tree, origin_tag: /*Unimplemented*/Option<Basic: Pointer>);
//#[doc(alias = "g_settings_backend_keys_changed")]
//fn keys_changed(&self, path: &str, items: &[&str], origin_tag: /*Unimplemented*/Option<Basic: Pointer>);
//#[doc(alias = "g_settings_backend_path_changed")]
//fn path_changed(&self, path: &str, origin_tag: /*Unimplemented*/Option<Basic: Pointer>);
/// 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.
/// ## `path`
/// the name of the path
#[doc(alias = "g_settings_backend_path_writable_changed")]
fn path_writable_changed(&self, path: &str);
/// 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.
/// ## `key`
/// the name of the key
#[doc(alias = "g_settings_backend_writable_changed")]
fn writable_changed(&self, key: &str);
}
impl<O: IsA<SettingsBackend>> SettingsBackendExt for O {
//fn changed(&self, key: &str, origin_tag: /*Unimplemented*/Option<Basic: Pointer>) {
// unsafe { TODO: call ffi:g_settings_backend_changed() }
//}
//fn changed_tree(&self, tree: /*Ignored*/&glib::Tree, origin_tag: /*Unimplemented*/Option<Basic: Pointer>) {
// unsafe { TODO: call ffi:g_settings_backend_changed_tree() }
//}
//fn keys_changed(&self, path: &str, items: &[&str], origin_tag: /*Unimplemented*/Option<Basic: Pointer>) {
// unsafe { TODO: call ffi:g_settings_backend_keys_changed() }
//}
//fn path_changed(&self, path: &str, origin_tag: /*Unimplemented*/Option<Basic: Pointer>) {
// unsafe { TODO: call ffi:g_settings_backend_path_changed() }
//}
fn path_writable_changed(&self, path: &str) {
unsafe {
ffi::g_settings_backend_path_writable_changed(
self.as_ref().to_glib_none().0,
path.to_glib_none().0,
);
}
}
fn writable_changed(&self, key: &str) {
unsafe {
ffi::g_settings_backend_writable_changed(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
);
}
}
}
impl fmt::Display for SettingsBackend {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.write_str("SettingsBackend")
}
}