24 个版本
0.7.0 | 2024 年 7 月 10 日 |
---|---|
0.6.1 |
|
0.6.0 | 2024 年 2 月 4 日 |
0.5.3 | 2023 年 9 月 22 日 |
0.1.0-alpha-2 | 2021 年 7 月 12 日 |
#30 在 GUI
37,192 每月下载
用于 27 个工具包(21 直接)
1.5MB
44K SLoC
libadwaita-rs
libadwaita 的 Rust 绑定
网站: https://world.pages.gitlab.gnome.org/Rust/libadwaita-rs
文档
lib.rs
:
Rust Adwaita 绑定
此库包含对 Adwaita 的安全 Rust 绑定,Adwaita 是一个提供现代 GNOME 应用程序构建块的库。
另请参阅
示例
在使用之前,Adwaita 需要初始化。这可以通过以下方式完成:
- 使用
adw::Application
代替gtk::Application
,或者通过 - 在
startup
上调用 [fn@init
]
libadwaita
工具包通常重命名为 adw
。您可以在您的 Cargo.toml
文件中全局进行此操作
[dependencies.adw]
package = "libadwaita"
version = "0.x.y"
use adw::prelude::*;
use adw::{ActionRow, Application, ApplicationWindow, HeaderBar};
use gtk::{Box, ListBox, Orientation, SelectionMode};
fn main() {
let application = Application::builder()
.application_id("com.example.FirstAdwaitaApp")
.build();
application.connect_activate(|app| {
// ActionRows are only available in Adwaita
let row = ActionRow::builder()
.activatable(true)
.title("Click me")
.build();
row.connect_activated(|_| {
eprintln!("Clicked!");
});
let list = ListBox::builder()
.margin_top(32)
.margin_end(32)
.margin_bottom(32)
.margin_start(32)
.selection_mode(SelectionMode::None)
// makes the list look nicer
.css_classes(vec![String::from("boxed-list")])
.build();
list.append(&row);
// Combine the content in a box
let content = Box::new(Orientation::Vertical, 0);
// Adwaitas' ApplicationWindow does not include a HeaderBar
content.append(&HeaderBar::new());
content.append(&list);
let window = ApplicationWindow::builder()
.application(app)
.title("First App")
.default_width(350)
// add content to window
.content(&content)
.build();
window.present();
});
application.run();
}
依赖项
~15–23MB
~435K SLoC