12 个版本 (稳定版)
1.2.0 | 2022年5月31日 |
---|---|
1.1.3 | 2022年2月2日 |
1.1.2 | 2021年8月31日 |
1.0.1 | 2021年7月5日 |
0.1.2 | 2020年7月29日 |
#6 in #glade
每月50次 下载
用于 gtk_liststore_item
8KB
69 行
gtk_liststore_item
Rust 的 gtk::ListStore 结构体自动推导。
用法
为了使用此crate,您需要将以下依赖项添加到项目的 Cargo.toml
文件中
[dependencies]
gtk_liststore_item = "1.2.0"
示例
crate 安装后,您就可以使用 ListStoreItem
derive 了!
通过定义以下结构
#[derive(ListStoreItem)]
struct Item {
name: String,
value: u32,
progress: u32,
is_cool: bool,
}
您可以直接在 gtk::ListStore
模型中创建和添加项目
let mut list_store: gtk::ListStore = Item::new_liststore();
for i in 0..10 {
let item = Item {
name: format!("foobar{}", i),
value: rand::random(),
progress: rand::random::<u32>() % 100,
is_cool: rand::random(),
};
item.insert_into_liststore(&mut list_store);
}
并且可以直接在 GtkTreeView
小部件中看到结果
如果没有这个 crate,您将必须手动将结构体中的每个条目及其类型和位置序列化
fn new_liststore() -> gtk::ListStore {
gtk::ListStore::new(&[
String::static_type(),
u32::static_type(),
u32::static_type(),
bool::static_type(),
])
}
fn get_item(liststore: >k::ListStore, iter: >k::TreeIter) -> Item {
Some(Item {
name: list_store.value(&iter, 0).get::<String>().ok()?,
value: list_store.value(&iter, 1).get::<u32>().ok()?,
progress: list_store.value(&iter, 2).get::<u32>().ok()?,
is_cool: list_store.value(&iter, 3).get::<bool>().ok()?,
})
}
fn insert_item(item: &Item, list_store: &mut gtk::ListStore) -> gtk::TreeIter {
list_store.insert_with_values(
None,
&[
(0, &self.name),
(1, &self.value),
(2, &self.progress),
(3, &self.is_cool)
]
)
}
这可能会变得相当繁琐,因此这个 crate 可以简化这个过程。
许可证
根据您的选择,在 Apache 许可证 2.0 版 或 MIT 许可证 下许可。
除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交以包含在此项目中的任何贡献,均应如上所述双重许可,而无需任何额外的条款或条件。
依赖项
~1.5MB
~36K SLoC