#dialog #cross-platform #message-box #graphics

xdialog

一个小型类似本地化跨平台对话框库,无运行时依赖

2 个不稳定版本

0.1.1 2024 年 7 月 20 日
0.0.1 2024 年 7 月 18 日

#196 in GUI

Download history 251/week @ 2024-07-18 39/week @ 2024-07-25 6/week @ 2024-08-01

296 每月下载量

MIT 许可证

720KB
1.5K SLoC

xdialog

Version License

Xdialoɡ 是一个用于在 Rust 中显示类似本地对话框的跨平台库。此库不使用本地系统对话框,而是创建自己的对话框窗口,这些窗口设计得与本地对话框类似。这允许 API 简化并保持一致的行为。

这不是一个合适的 GUI 框架的替代品。它旨在用于 CLI/后台应用程序,这些应用程序偶尔需要向用户显示对话框(如警报或进度)。

其主要用途是用于 Velopack 应用程序安装和更新框架。

功能

  • 跨平台:在 Windows、MacOS 和 Linux 上运行
  • Windows 或 MacOS 上无依赖项,Linux 上仅需要 X11。
  • 非常小巧的尺寸(在最佳设置下最多仅增加 100kb 到您的二进制文件中)
  • 所有平台上的简单且一致的 API

安装

将以下内容添加到您的 Cargo.toml

[dependencies]
xdialog = "0" # replace with the latest version

或者,运行以下命令

cargo install xdialog

用法

由于一些平台要求 UI 在主线程上运行,xdialog 预期将拥有主线程,并将您的核心应用程序逻辑在另一个线程中启动。

use xdialog::*;

fn main() -> i32 {
  XDialogBuilder::new().run(your_main_logic)
}

fn your_main_logic() -> i32 {

  // ... do something here

  let should_update_now = show_message_yes_no(
    "My App Incorporated",
    "New version available",
    "Would you like to to the new version now?",
    XDialogIcon::Warning,
  ).unwrap();

  if !should_update_now {
    return -1; // user declined the dialog
  }

  // ... do something here

  let progress = show_progress(
    "My App Incorporated",
    "Main instruction",
    "Body text",
    XDialogIcon::Information
  ).unwrap();

  progress.set_value(0.5).unwrap();
  progress.set_text("Extracting...").unwrap();
  std::thread::sleep(std::time::Duration::from_secs(3));

  progress.set_value(1.0).unwrap();
  progress.set_text("Updating...").unwrap();
  std::thread::sleep(std::time::Duration::from_secs(3));

  progress.set_indeterminate().unwrap();
  progress.set_text("Wrapping Up...").unwrap();
  std::thread::sleep(std::time::Duration::from_secs(3));

  progress.close().unwrap();
  0 // return exit code
}

更多示例在 examples 目录中。

cargo run --example various_options

构建依赖项

此库使用 fltk-rs 作为其主要后端。默认情况下,fltk-rs 为大多数平台提供预编译的二进制文件(win-x64、linux-x64、linux-arm64、mac-x64、mac-arm64)。

如果您正在为没有预编译二进制文件的平台编译,您需要禁用 fltk-bundled 功能,并确保您的系统上已安装 cmake。

[dependencies]
xdialog = { version = "0", default-features = false }

依赖项

~16–30MB
~530K SLoC