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 { Layers::new(|add|{ add(&FillBg(Color::Rgb(0,128,128)))?; add(&Outset::XY(1, 1, Split::down(|add|{ add(&Layers::new(|add|{ add(&FillBg(Color::Rgb(255,0,0)))?; add(&Outset::X(1, "."))?; Ok(()) }))?; add(&Layers::new(|add|{ add(&FillBg(Color::Rgb(255,128,0)))?; add(&Outset::Y(1, "---"))?; Ok(()) }))?; add(&Layers::new(|add|{ add(&FillBg(Color::Rgb(128,0,0)))?; add(&Outset::XY(0, 0, "~~~"))?; Ok(()) }))?; Ok(()) })))?; Ok(()) }) //Align::Center(Outset::X(1, Layers::new(|add|{ //add(&FillBg(Color::Rgb(128,0,0)))?; //add(&Split::down(|add|{ //add(&Outset::Y(1, Layers::new(|add|{ //add(&FillBg(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(&FillBg(Color::Rgb(0,0,128))) //}))) //})) //}))) //Align::Y(Layers::new(|add|{ //add(&FillBg(Color::Rgb(128,0,0)))?; //add(&Outset::X(1, Align::Center(Split::down(|add|{ //add(&Align::X(Outset::Y(1, Layers::new(|add|{ //add(&FillBg(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(&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)) } }