4 个版本 (2 个破坏性更新)
0.3.0 | 2023 年 3 月 20 日 |
---|---|
0.2.0 | 2023 年 3 月 11 日 |
0.1.1 | 2022 年 11 月 20 日 |
0.1.0 | 2022 年 9 月 17 日 |
#1094 在 GUI
每月 247 次下载
1MB
946 行
tauri-egui
关于 tauri-egui
tauri-egui
是一个 Tauri 插件,用于通过 glutin
在 Tauri 应用程序中使用 egui 库
。 egui
是一个纯 Rust GUI 库,本地运行,由 Tauri 团队推荐用于安全上下文,如密码和秘密界面。
示例
use tauri::Manager;
use tauri_egui::{eframe, egui, EguiPluginBuilder, EguiPluginHandle};
struct LoginApp {
password: String,
on_submit: Box<dyn Fn(&str) -> bool + Send>,
}
impl LoginApp {
fn new<F: Fn(&str) -> bool + Send + 'static>(
ctx: &eframe::CreationContext,
on_submit: F,
) -> Self {
Self {
password: "".into(),
on_submit: Box::new(on_submit),
}
}
}
impl eframe::App for LoginApp {
fn update(&mut self, ctx: &egui::Context, frame: &mut eframe::Frame) {
let LoginApp {
password,
on_submit,
} = self;
egui::CentralPanel::default().show(ctx, |ui| {
ui.label("Enter your password");
let textfield = ui.add_sized(
[ui.available_width(), 24.],
egui::TextEdit::singleline(password).password(true),
);
let button = ui.button("Submit");
if (textfield.lost_focus() && ui.input().key_pressed(egui::Key::Enter)) || button.clicked() {
if on_submit(password) {
frame.close();
}
}
});
}
}
fn main() {
tauri::Builder::default()
.setup(|app| {
app.wry_plugin(EguiPluginBuilder::new(app.handle()));
let egui_handle = app.state::<EguiPluginHandle>();
let native_options = eframe::NativeOptions {
drag_and_drop_support: true,
initial_window_size: Some([1280.0, 1024.0].into()),
..Default::default()
};
let _window = egui_handle
.create_window(
"native-window".to_string(),
Box::new(|cc| Box::new(LoginApp::new(cc, |pwd| pwd == "tauriisawesome"))),
"Login".into(),
native_options,
)
.unwrap();
Ok(())
})
.run(tauri::generate_context!("examples/demo/tauri.conf.json"))
.expect("error while building tauri application");
}
语义版本
tauri-egui 遵循 语义版本 2.0。
许可证
代码: (c) 2019 - 2022 - The Tauri Programme within The Commons Conservancy.
适用于的 MIT 或 MIT/Apache 2.0。
依赖项
~32–78MB
~1.5M SLoC