23个版本
0.2.1 | 2024年7月14日 |
---|---|
0.2.0 | 2024年2月7日 |
0.1.20 | 2023年11月4日 |
0.1.18 | 2023年4月6日 |
0.1.11 | 2022年7月24日 |
134 在 进程宏 中
521 每月下载量
在 regolith-powerd 中使用
47KB
888 行
GSettings宏
类型安全GSettings键访问宏
宏的主要目的是减少键名输入错误、使用错误的方法访问值、输入错误值和减少模板代码的风险。此外,每个生成方法的摘要、描述和默认值都包含在文档中。如果您使用像 rust-analyzer
这样的工具,这将非常有用。
示例
use gsettings_macro::gen_settings;
use gio::glib;
use std::path::{Path, PathBuf};
#[gen_settings(
file = "./tests/io.github.seadve.test.gschema.xml",
id = "io.github.seadve.test"
)]
#[gen_settings_define(
key_name = "cache-dir",
arg_type = "&Path",
ret_type = "PathBuf"
)]
#[gen_settings_skip(signature = "(ss)")]
pub struct ApplicationSettings;
let settings = ApplicationSettings::default();
// `i` D-Bus type
settings.set_window_width(100);
assert_eq!(settings.window_width(), 100);
// enums
settings.set_alert_sound(AlertSound::Glass);
assert_eq!(settings.alert_sound(), AlertSound::Glass);
// bitflags
settings.set_space_style(SpaceStyle::BEFORE_COLON | SpaceStyle::BEFORE_COMMA);
assert_eq!(
settings.space_style(),
SpaceStyle::BEFORE_COLON | SpaceStyle::BEFORE_COMMA
);
// customly defined
settings.set_cache_dir(Path::new("/some_dir/"));
assert_eq!(settings.cache_dir(), PathBuf::from("/some_dir/"));
有关更多示例和详细信息,请参阅文档。
此库在Mousai(音乐识别器)和Kooha(屏幕录制应用程序)中有实际应用示例。
生成的方法
进程宏为架构中的每个键生成以下gio::Settings
方法
set
->${key}
,在只读键中写入时引发恐慌,以及try_set_${key}
,其行为与原始方法相同。get
->${key}
connect_changed
->connect_${key}_changed
bind
->bind_${key}
create_action
->create_${key}_action
default_value
->${key}_default_value
reset
->reset_${key}
已知问题
许可证
版权所有 2023 Dave Patrick Caberto
本软件受Mozilla公共许可证(MPL)2.0条款的约束。如果未随此文件分发MPL副本,您可以在此网站获得一份。
依赖项
~5MB
~92K SLoC