5个版本
0.2.2 | 2019年11月19日 |
---|---|
0.2.1 |
|
0.1.6 | 2019年11月15日 |
#636 在 GUI
39KB
575 行
Rustofi
Rustofi是一个用于构建RUI(rofi用户界面)应用程序的库。它支持获取用户选择、用户输入,并在项目选择时运行相关回调。
用法
将其添加到您的 Cargo.toml
[dependencies]
rustofi = "0.2.2"
然后在您的Rust 2018应用程序中使用时,您可能需要这些导入
use rustofi::{AppRoot, RustofiOption, RustofiOptionType};
use rustofi::window::{Window, Location};
示例
简单
示例simple
仅在一个循环中显示rofi窗口并返回所选文本。
git clone https://github.com/krruzic/rustofi
cd rustofi
cargo run --example simple
待办事项应用
更复杂的示例 todo_app
是一个持久的待办事项列表,它可以
- 创建新的待办事项
- 删除待办事项
- 标记待办事项为完成
git clone https://github.com/krruzic/rustofi
cd rustofi
cargo run --example todo_app
lib.rs
:
此Rust库允许构建使用Rofi显示其UI的复杂多页应用程序。基本思路是创建一个AppPage
或SearchPage
作为应用程序主菜单,并为其提供可能的选项和操作。这些选项和操作可以将您导航到ItemList
、EntryBox
、ActionList
或另一个主菜单。
通常,您将想要创建一个包含一些选项和操作的AppPage,然后在循环中显示它,检查返回的RustofiOptionType
以退出。AppPage
和SearchPage
将自动添加一个退出选项以简化循环退出情况,而ItemList
和ActionList
将添加一个取消选项。
最简单的示例
下面的示例比创建AppRoot更简单,它只是显示一个字符串列表,并使用回调来打印所选项。注意main中的循环检查rofi窗口的返回变体
use rustofi::components::ItemList;
use rustofi::RustofiResult;
fn simple_app() -> RustofiResult {
let rustofi_entries = vec![
"Entry 1".to_string(),
"Entry 2".to_string(),
"Entry 3".to_string(),
];
ItemList::new(rustofi_entries, Box::new(simple_callback)).display("Select an entry".to_string())
}
pub fn simple_callback(s: &String) -> RustofiResult {
println!("Clicked on item: {}", s);
RustofiResult::Success
}
fn main() {
loop {
match simple_app() {
RustofiResult::Error => break,
RustofiResult::Exit => break,
RustofiResult::Cancel => break,
RustofiResult::Blank => break,
_ => {}
}
}
}
依赖项
~2.5MB
~53K SLoC