use tek_core::*; use tek_core::jack::*; fn main () -> Usually<()> { Tui::run(Arc::new(RwLock::new(Demo::new())))?; Ok(()) } pub struct Demo { index: usize, items: Vec>> } impl Demo { 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 { type Engine = Tui; fn content (&self) -> impl Widget { Align::Center(Layers::new(|add|{ add(&FillBg(Color::Rgb(128,0,0)))?; add(&Outset::XY(2, 2, Align::Center(Split::down(|add|{ add(&Layers::new(|add|{ add(&FillBg(Color::Rgb(0,128,0)))?; add(&Outset::XY(2, 2, Align::Center("12345")))?; add(&Align::Center("FOO")) }))?; add(&Layers::new(|add|{ add(&Outset::XY(2, 2, Align::Center("1234567")))?; add(&Align::Center("BAR"))?; add(&FillBg(Color::Rgb(0,0,128))) }))?; Ok(()) })))) })) } } impl Handle for Demo { fn handle (&mut self, from: &Tui) -> Perhaps { match from.event() { key!(KeyCode::PageUp) => { self.index = (self.index + 1) % self.items.len(); }, key!(KeyCode::PageDown) => { self.index = if self.index > 1 { self.index - 1 } else { self.items.len() - 1 }; }, _ => return Ok(None) } Ok(Some(true)) } }