use cursive::theme::{BaseColor, BorderStyle, Color, ColorStyle, Palette};
use cursive::traits::With;
use cursive::views::{Dialog, EditView, LinearLayout, TextView};
use cursive::Cursive;
fn main() {
let mut siv = cursive::default();
siv.set_theme(cursive::theme::Theme {
shadow: true,
borders: BorderStyle::Simple,
palette: Palette::default().with(|palette| {
use cursive::theme::BaseColor::*;
use cursive::theme::Color::*;
use cursive::theme::PaletteColor::*;
palette[Background] = TerminalDefault;
palette[View] = TerminalDefault;
palette[Primary] = White.dark();
palette[TitlePrimary] = Blue.light();
palette[Secondary] = Blue.light();
palette[Highlight] = Blue.dark();
}),
});
let layout = LinearLayout::vertical()
.child(TextView::new("This is a dynamic theme example!"))
.child(EditView::new().content("Woo! colors!"));
siv.add_layer(
Dialog::around(layout)
.title("Theme example")
.button("Change", |s| {
let mut theme = s.current_theme().clone();
theme.shadow = !theme.shadow;
theme.borders = match theme.borders {
BorderStyle::Simple => BorderStyle::Outset,
BorderStyle::Outset => BorderStyle::None,
BorderStyle::None => BorderStyle::Simple,
};
s.set_theme(theme);
})
.button("Quit", Cursive::quit),
);
siv.run();
}