mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-04-28 05:20:14 +02:00
145 lines
4.7 KiB
Plaintext
145 lines
4.7 KiB
Plaintext
use tek::*;
|
|
|
|
fn main () -> Usually<()> {
|
|
Tui::run(Arc::new(RwLock::new(Demo::new())))?;
|
|
Ok(())
|
|
}
|
|
|
|
pub struct Demo<E: Engine> {
|
|
index: usize,
|
|
items: Vec<Box<dyn Render<Engine = E>>>
|
|
}
|
|
|
|
impl Demo<Tui> {
|
|
fn new () -> Self {
|
|
Self {
|
|
index: 0,
|
|
items: vec![
|
|
//Box::new(tek_sequencer::TransportPlayPauseButton {
|
|
//_engine: Default::default(),
|
|
//transport: None,
|
|
//value: Some(TransportState::Stopped),
|
|
//focused: true
|
|
//}),
|
|
//Box::new(tek_sequencer::TransportPlayPauseButton {
|
|
//_engine: Default::default(),
|
|
//transport: None,
|
|
//value: Some(TransportState::Rolling),
|
|
//focused: false
|
|
//}),
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Content for Demo<Tui> {
|
|
type Engine = Tui;
|
|
fn content (&self) -> dyn Render<Engine = Tui> {
|
|
let border_style = Style::default().fg(Color::Rgb(0,0,0));
|
|
Align::Center(Layers::new(move|add|{
|
|
|
|
add(&Background(Color::Rgb(0,128,128)))?;
|
|
|
|
add(&Outset::XY(1, 1, Stack::down(|add|{
|
|
|
|
add(&Layers::new(|add|{
|
|
add(&Background(Color::Rgb(128,96,0)))?;
|
|
add(&Border(Square(border_style)))?;
|
|
add(&Outset::XY(2, 1, "..."))?;
|
|
Ok(())
|
|
}).debug())?;
|
|
|
|
add(&Layers::new(|add|{
|
|
add(&Background(Color::Rgb(128,64,0)))?;
|
|
add(&Border(Lozenge(border_style)))?;
|
|
add(&Outset::XY(4, 2, "---"))?;
|
|
Ok(())
|
|
}).debug())?;
|
|
|
|
add(&Layers::new(|add|{
|
|
add(&Background(Color::Rgb(96,64,0)))?;
|
|
add(&Border(SquareBold(border_style)))?;
|
|
add(&Outset::XY(6, 3, "~~~"))?;
|
|
Ok(())
|
|
}).debug())?;
|
|
|
|
Ok(())
|
|
})).debug())?;
|
|
|
|
Ok(())
|
|
|
|
}))
|
|
//Align::Center(Outset::X(1, Layers::new(|add|{
|
|
//add(&Background(Color::Rgb(128,0,0)))?;
|
|
//add(&Stack::down(|add|{
|
|
//add(&Outset::Y(1, Layers::new(|add|{
|
|
//add(&Background(Color::Rgb(0,128,0)))?;
|
|
//add(&Align::Center("12345"))?;
|
|
//add(&Align::Center("FOO"))
|
|
//})))?;
|
|
//add(&Outset::XY(1, 1, Layers::new(|add|{
|
|
//add(&Align::Center("1234567"))?;
|
|
//add(&Align::Center("BAR"))?;
|
|
//add(&Background(Color::Rgb(0,0,128)))
|
|
//})))
|
|
//}))
|
|
//})))
|
|
|
|
//Align::Y(Layers::new(|add|{
|
|
//add(&Background(Color::Rgb(128,0,0)))?;
|
|
//add(&Outset::X(1, Align::Center(Stack::down(|add|{
|
|
//add(&Align::X(Outset::Y(1, Layers::new(|add|{
|
|
//add(&Background(Color::Rgb(0,128,0)))?;
|
|
//add(&Align::Center("12345"))?;
|
|
//add(&Align::Center("FOO"))
|
|
//})))?;
|
|
//add(&Outset::XY(1, 1, Layers::new(|add|{
|
|
//add(&Align::Center("1234567"))?;
|
|
//add(&Align::Center("BAR"))?;
|
|
//add(&Background(Color::Rgb(0,0,128)))
|
|
//})))?;
|
|
//Ok(())
|
|
//})))))
|
|
//}))
|
|
}
|
|
}
|
|
|
|
impl Handle<Tui> for Demo<Tui> {
|
|
fn handle (&mut self, from: &TuiInput) -> Perhaps<bool> {
|
|
use KeyCode::{PageUp, PageDown};
|
|
match from.event() {
|
|
key_expr!(PageUp) => {
|
|
self.index = (self.index + 1) % self.items.len();
|
|
},
|
|
key_expr!(PageDown) => {
|
|
self.index = if self.index > 1 {
|
|
self.index - 1
|
|
} else {
|
|
self.items.len() - 1
|
|
};
|
|
},
|
|
_ => return Ok(None)
|
|
}
|
|
Ok(Some(true))
|
|
}
|
|
}
|
|
|
|
//lisp!(CONTENT Demo (LET
|
|
//(BORDER-STYLE (STYLE (FG (RGB 0 0 0))))
|
|
//(BG-COLOR-0 (RGB 0 128 128))
|
|
//(BG-COLOR-1 (RGB 128 96 0))
|
|
//(BG-COLOR-2 (RGB 128 64 0))
|
|
//(BG-COLOR-3 (RGB 96 64 0))
|
|
//(CENTER (LAYERS
|
|
//(BACKGROUND BG-COLOR-0)
|
|
//(OUTSET-XY 1 1 (SPLIT-DOWN
|
|
//(LAYERS (BACKGROUND BG-COLOR-1)
|
|
//(BORDER SQUARE BORDER-STYLE)
|
|
//(OUTSET-XY 2 1 "..."))
|
|
//(LAYERS (BACKGROUND BG-COLOR-2)
|
|
//(BORDER LOZENGE BORDER-STYLE)
|
|
//(OUTSET-XY 4 2 "---"))
|
|
//(LAYERS (BACKGROUND BG-COLOR-3)
|
|
//(BORDER SQUARE-BOLD BORDER-STYLE)
|
|
//(OUTSET-XY 2 1 "~~~"))))))))
|