diff --git a/examples/scroll.rs b/examples/scroll.rs new file mode 100644 index 0000000..0f5e517 --- /dev/null +++ b/examples/scroll.rs @@ -0,0 +1,31 @@ +extern crate cursive; + +use cursive::traits::Boxable; +use cursive::views::{Canvas, Dialog, ScrollView, LinearLayout, Button}; +use cursive::Printer; + +fn main() { + let mut siv = cursive::Cursive::default(); + + siv.add_layer(Dialog::around( + ScrollView::new( + LinearLayout::vertical() + .child(Button::new("Foo", |s| s.add_layer(Dialog::info("Ah")))) + .child(Canvas::new(()).with_draw(draw).fixed_size((120, 40))) + .child(Button::new("Bar", |s| s.add_layer(Dialog::info("Uh")))) + ).scroll_x(true), + ).fixed_size((60, 30))); + + siv.add_global_callback('q', |s| s.quit()); + + siv.run(); +} + +fn draw(_: &(), p: &Printer) { + for x in 0..p.size.x { + for y in 0..p.size.y { + let c = (x + 6*y) % 10; + p.print((x, y), &format!("{}", c)); + } + } +}