2 个版本
0.1.1 | 2021年6月3日 |
---|---|
0.1.0 | 2021年6月2日 |
#19 in #preview
319 下载/月
555KB
659 行
youchoose
Rust 的一个简单易用的命令行菜单。
用法
要开始使用,您需要熟悉两种方法:将 Menu::new
作为参数接受一个 Iterator
的 Menu::show
,它初始化 ncurses
并显示菜单。
以下是一个最小示例,它在一个菜单中显示范围 0..100
use youchoose;
fn main() {
let mut menu = youchoose::Menu::new(0..100);
let choice = menu.show();
// `choice` is a Vec<usize> containing the chosen indices
println!("Index of the chosen item: {:?}", choice);
}
可以使用 ↓↑
或 jk
来滚动,使用 return
来选择。使用 ESC
或 q
来退出。
预览
youchoose::Menu
有一个预览功能,可以执行命令并在单独的窗格中显示结果。
use youchoose;
fn main(){
let mut menu = youchoose::Menu::new(0..100).preview(multiples);
let choice = menu.show();
println!("Chose {:?}", choice);
}
fn multiples(num: i32) -> String {
let mut buffer = String::new();
for i in 0..20 {
buffer.push_str(
&format!("{} times {} is equal to {}!\n", num, i, num * i)
);
}
buffer
}
定制
让我们看看一个展示可用定制方法的示例。
use youchoose;
fn main() {
let mut menu = youchoose::Menu::new(0..100)
.preview(multiples) // Sets the preview function
.preview_pos(youchoose::ScreenSide::Bottom, 0.3) // Sets the position of the preview pane
.preview_label(" multiples ".to_string()) // Sets the text at the top of the preview pane
.multiselect() // Allows multiple items to be selected
.icon(":(") // Sets the default (not selected) icon for an item
.selected_icon(":)") // The icon for selected items
.add_multiselect_key('s' as i32) // Bind the 's' key to multiselect
.add_up_key('u' as i32) // Bind the 'u' key to up
.add_down_key('d' as i32) // Bind the 'd' key to down
.add_select_key('.' as i32); // Bind the '.' key to select
let choice = menu.show();
}
fn multiples(num: i32) -> String {
// --- Snip ---
}