use cursive::{
theme::{BorderStyle, Palette, Theme},
view::IntoBoxedView,
views::{Button, TextContent, TextView},
Cursive, CursiveExt,
};
use cursive_flexbox::prelude::*;
fn main() {
let mut cursive = Cursive::new();
cursive.add_global_callback('q', |cursive| cursive.quit());
cursive.set_theme(Theme {
shadow: false,
borders: BorderStyle::Simple,
palette: Palette::terminal_default(),
});
let content = TextContent::new("unset");
let textview = TextView::new_with_content(content.clone());
let content_clone = content.clone();
let button1 = Button::new_raw("Set text 'hello'.", move |_| {
content_clone.set_content("hello");
});
let button2 = Button::new_raw("Set text 'world'.", move |_| {
content.set_content("world");
});
let mut flexbox = Flexbox::from(vec![
button1.into_boxed_view(),
button2.into_boxed_view(),
textview.into_boxed_view(),
]);
flexbox.set_main_axis_gap(2);
flexbox.set_cross_axis_gap(2);
flexbox.set_flex_wrap(FlexWrap::Wrap);
flexbox.set_justify_content(JustifyContent::SpaceEvenly);
flexbox.set_align_items(AlignItems::Center);
flexbox.set_align_content(AlignContent::FlexStart);
flexbox.set_flex_direction(FlexDirection::Row);
cursive.add_fullscreen_layer(flexbox);
cursive.run();
}