use cursive::{
theme::{BorderStyle, ColorStyle, Palette, Theme},
view::IntoBoxedView,
views::{Layer, Panel, 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 mut flexbox = Flexbox::from(vec![
Panel::new(Layer::with_color(
TextView::new("This is one quick line.\nAnother quick line.\nAnd yet another line."),
ColorStyle::back(cursive::theme::BaseColor::Green.dark()),
))
.into_boxed_view(),
Panel::new(Layer::with_color(
TextView::new("I doubt I will be wrapped..."),
ColorStyle::back(cursive::theme::BaseColor::Green.dark()),
))
.into_boxed_view(),
Panel::new(Layer::with_color(
TextView::new("Flexing a flexbox."),
ColorStyle::back(cursive::theme::BaseColor::Green.dark()),
))
.into_boxed_view(),
Panel::new(Layer::with_color(
TextView::new(
"And a bigger container\nto test out the alignment\nof items in the main \
axis\na bit better.",
),
ColorStyle::back(cursive::theme::BaseColor::Green.dark()),
))
.into_boxed_view(),
Panel::new(Layer::with_color(
TextView::new("And a final item for good luck."),
ColorStyle::back(cursive::theme::BaseColor::Green.dark()),
))
.into_boxed_view(),
]);
flexbox.set_main_axis_gap(2);
flexbox.set_cross_axis_gap(2);
flexbox.set_flex_grow(1, 1);
flexbox.set_flex_grow(2, 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();
}