Skip to content
This repository has been archived by the owner on Jun 8, 2021. It is now read-only.

Commit

Permalink
settings: use 'Result<(), glib::BoolError>' for SettingsExt::set_
Browse files Browse the repository at this point in the history
  • Loading branch information
Cogitri committed Aug 13, 2019
1 parent 226a58f commit fa45d55
Show file tree
Hide file tree
Showing 2 changed files with 116 additions and 79 deletions.
4 changes: 4 additions & 0 deletions Gir.toml
Expand Up @@ -605,6 +605,10 @@ status = "generate"
[[object.signal]]
name = "writable-change-event"
inhibit = true
[[object.function]]
name="set_*"
[object.function.return]
bool_return_is_error = "Can't set readonly key"

[[object]]
name = "Gio.SettingsSchemaKey"
Expand Down
191 changes: 112 additions & 79 deletions src/auto/settings.rs
Expand Up @@ -171,29 +171,29 @@ pub trait SettingsExt: 'static {

//fn set(&self, key: &str, format: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> bool;

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

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

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

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

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

#[cfg(any(feature = "v2_50", feature = "dox"))]
fn set_int64(&self, key: &str, value: i64) -> bool;
fn set_int64(&self, key: &str, value: i64) -> Result<(), glib::error::BoolError>;

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

fn set_strv(&self, key: &str, value: &[&str]) -> bool;
fn set_strv(&self, key: &str, value: &[&str]) -> Result<(), glib::error::BoolError>;

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

#[cfg(any(feature = "v2_50", feature = "dox"))]
fn set_uint64(&self, key: &str, value: u64) -> bool;
fn set_uint64(&self, key: &str, value: u64) -> Result<(), glib::error::BoolError>;

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

fn get_property_backend(&self) -> Option<SettingsBackend>;

Expand Down Expand Up @@ -448,115 +448,148 @@ impl<O: IsA<Settings>> SettingsExt for O {
// unsafe { TODO: call gio_sys:g_settings_set() }
//}

fn set_boolean(&self, key: &str, value: bool) -> bool {
fn set_boolean(&self, key: &str, value: bool) -> Result<(), glib::error::BoolError> {
unsafe {
from_glib(gio_sys::g_settings_set_boolean(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value.to_glib(),
))
glib_result_from_gboolean!(
gio_sys::g_settings_set_boolean(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value.to_glib()
),
"Can't set readonly key"
)
}
}

fn set_double(&self, key: &str, value: f64) -> bool {
fn set_double(&self, key: &str, value: f64) -> Result<(), glib::error::BoolError> {
unsafe {
from_glib(gio_sys::g_settings_set_double(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value,
))
glib_result_from_gboolean!(
gio_sys::g_settings_set_double(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value
),
"Can't set readonly key"
)
}
}

fn set_enum(&self, key: &str, value: i32) -> bool {
fn set_enum(&self, key: &str, value: i32) -> Result<(), glib::error::BoolError> {
unsafe {
from_glib(gio_sys::g_settings_set_enum(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value,
))
glib_result_from_gboolean!(
gio_sys::g_settings_set_enum(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value
),
"Can't set readonly key"
)
}
}

fn set_flags(&self, key: &str, value: u32) -> bool {
fn set_flags(&self, key: &str, value: u32) -> Result<(), glib::error::BoolError> {
unsafe {
from_glib(gio_sys::g_settings_set_flags(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value,
))
glib_result_from_gboolean!(
gio_sys::g_settings_set_flags(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value
),
"Can't set readonly key"
)
}
}

fn set_int(&self, key: &str, value: i32) -> bool {
fn set_int(&self, key: &str, value: i32) -> Result<(), glib::error::BoolError> {
unsafe {
from_glib(gio_sys::g_settings_set_int(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value,
))
glib_result_from_gboolean!(
gio_sys::g_settings_set_int(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value
),
"Can't set readonly key"
)
}
}

#[cfg(any(feature = "v2_50", feature = "dox"))]
fn set_int64(&self, key: &str, value: i64) -> bool {
unsafe {
from_glib(gio_sys::g_settings_set_int64(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value,
))
fn set_int64(&self, key: &str, value: i64) -> Result<(), glib::error::BoolError> {
unsafe {
glib_result_from_gboolean!(
gio_sys::g_settings_set_int64(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value
),
"Can't set readonly key"
)
}
}

fn set_string(&self, key: &str, value: &str) -> bool {
fn set_string(&self, key: &str, value: &str) -> Result<(), glib::error::BoolError> {
unsafe {
from_glib(gio_sys::g_settings_set_string(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value.to_glib_none().0,
))
glib_result_from_gboolean!(
gio_sys::g_settings_set_string(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value.to_glib_none().0
),
"Can't set readonly key"
)
}
}

fn set_strv(&self, key: &str, value: &[&str]) -> bool {
fn set_strv(&self, key: &str, value: &[&str]) -> Result<(), glib::error::BoolError> {
unsafe {
from_glib(gio_sys::g_settings_set_strv(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value.to_glib_none().0,
))
glib_result_from_gboolean!(
gio_sys::g_settings_set_strv(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value.to_glib_none().0
),
"Can't set readonly key"
)
}
}

fn set_uint(&self, key: &str, value: u32) -> bool {
fn set_uint(&self, key: &str, value: u32) -> Result<(), glib::error::BoolError> {
unsafe {
from_glib(gio_sys::g_settings_set_uint(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value,
))
glib_result_from_gboolean!(
gio_sys::g_settings_set_uint(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value
),
"Can't set readonly key"
)
}
}

#[cfg(any(feature = "v2_50", feature = "dox"))]
fn set_uint64(&self, key: &str, value: u64) -> bool {
unsafe {
from_glib(gio_sys::g_settings_set_uint64(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value,
))
fn set_uint64(&self, key: &str, value: u64) -> Result<(), glib::error::BoolError> {
unsafe {
glib_result_from_gboolean!(
gio_sys::g_settings_set_uint64(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value
),
"Can't set readonly key"
)
}
}

fn set_value(&self, key: &str, value: &glib::Variant) -> bool {
fn set_value(&self, key: &str, value: &glib::Variant) -> Result<(), glib::error::BoolError> {
unsafe {
from_glib(gio_sys::g_settings_set_value(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value.to_glib_none().0,
))
glib_result_from_gboolean!(
gio_sys::g_settings_set_value(
self.as_ref().to_glib_none().0,
key.to_glib_none().0,
value.to_glib_none().0
),
"Can't set readonly key"
)
}
}

Expand Down

0 comments on commit fa45d55

Please sign in to comment.