cursive/examples/edit.rs

46 lines
1.2 KiB
Rust
Raw Normal View History

extern crate cursive;
use cursive::Cursive;
use cursive::traits::*;
use cursive::views::{Dialog, EditView, TextView};
fn main() {
let mut siv = Cursive::new();
2015-05-26 23:11:22 +00:00
// Create a dialog with an edit text and a button.
// The user can either hit the <Ok> button,
// or press Enter on the edit text.
2017-10-12 23:38:55 +00:00
siv.add_layer(
Dialog::new()
.title("Enter your name")
.padding((1, 1, 1, 0))
.content(
EditView::new()
.on_submit(show_popup)
.with_id("name")
.fixed_width(20),
)
.button("Ok", |s| {
2017-12-30 22:03:42 +00:00
let name = s.call_on_id("name", |view: &mut EditView| {
view.get_content()
}).unwrap();
2017-10-12 23:38:55 +00:00
show_popup(s, &name);
}),
);
siv.run();
}
fn show_popup(s: &mut Cursive, name: &str) {
if name.is_empty() {
s.add_layer(Dialog::info("Please enter a name!"));
} else {
let content = format!("Hello {}!", name);
s.pop_layer();
2017-10-12 23:38:55 +00:00
s.add_layer(
Dialog::around(TextView::new(content))
.button("Quit", |s| s.quit()),
);
}
}