wip: add TuiStyle, unifying Modal

This commit is contained in:
🪞👃🪞 2024-09-24 18:32:42 +03:00
parent 7c555848e4
commit 29f11b5977
6 changed files with 467 additions and 434 deletions

View file

@ -48,13 +48,12 @@ impl ArrangerCli {
//}
}
transport.set_focused(true);
let state = Arc::new(RwLock::new(ArrangerStandalone {
Tui::run(Arc::new(RwLock::new(ArrangerStandalone {
transport,
show_sequencer: Some(tek_core::Direction::Down),
arranger,
focus: 0
}));
Tui::run(state)?;
})))?;
Ok(())
}
}
@ -73,26 +72,27 @@ struct ArrangerStandalone<E: Engine> {
impl Content for ArrangerStandalone<Tui> {
type Engine = Tui;
fn content (&self) -> impl Widget<Engine = Tui> {
Split::down(|add|{
add(&self.transport)?;
let show = self.arranger.modal.is_some();
let modal = self.arranger.modal.as_ref().map(|x|x as &dyn Content<Engine = Tui>);
ModalHost(show, modal, Split::down(move|add|{
add(&(&self.transport as &dyn Widget<Engine = Tui>).debug())?;
if let (Some(direction), Some(sequencer)) = (
self.show_sequencer,
self.arranger.sequencer(),
) {
add(&Split::new(direction, |add|{
add(&Shrink::Y(20, &self.arranger as &dyn Widget<Engine = Tui>))?;
add(&Min::Y(20, sequencer as &dyn Widget<Engine = Tui>))?;
add(&Split::new(direction, move|add|{
add(&(&self.arranger as &dyn Widget<Engine = Tui>)
.shrink_y(30)
.debug())?;
add(&(sequencer as &dyn Widget<Engine = Tui>)
.min_y(20)
.debug())?;
Ok(())
}))
} else {
add(&self.arranger)
}
})
//if let Some(ref modal) = self.arranger.modal {
//to.fill_bg(area, Nord::bg_lo(false, false));
//to.fill_fg(area, Nord::bg_hi(false, false));
//modal.render(to)?;
//}
}))
}
}