fix arranger inverse border

This commit is contained in:
🪞👃🪞 2024-12-19 13:40:41 +01:00
parent 0a59594730
commit d07ed00034
3 changed files with 32 additions and 42 deletions

View file

@ -26,58 +26,48 @@ from_jack!(|jack| ArrangerTui {
))); )));
Self { Self {
clock, clock,
phrases: PhraseListModel::from(&phrase), phrases: PhraseListModel::from(&phrase),
editor: PhraseEditorModel::from(&phrase), editor: PhraseEditorModel::from(&phrase),
selected: ArrangerSelection::Clip(0, 0), selected: ArrangerSelection::Clip(0, 0),
scenes: vec![], scenes: vec![],
tracks: vec![], tracks: vec![],
color: TuiTheme::bg().into(), color: TuiTheme::bg().into(),
mode: ArrangerMode::V(1), mode: ArrangerMode::V(1),
size: Measure::new(), size: Measure::new(),
splits: [12, 20], splits: [12, 20],
midi_buf: vec![vec![];65536], midi_buf: vec![vec![];65536],
note_buf: vec![], note_buf: vec![],
perf: PerfModel::default(), perf: PerfModel::default(),
jack: jack.clone(), jack: jack.clone(),
} }
}); });
render!(<Tui>|self: ArrangerTui|{ render!(<Tui>|self: ArrangerTui|{
let arranger = ||lay!(|add|{ let arranger = ||lay!(|add|{
let color = self.color; let color = self.color;
//add(&Fill::wh(Lozenge(Style::default().bg(color.light.rgb).fg(color.darker.rgb))))?; add(&Fill::wh(Tui::bg(color.darkest.rgb, "x")))?;
add(&self.size)?; add(&Fill::wh(Lozenge(Style::default().fg(color.light.rgb).bg(color.darker.rgb))))?;
match self.mode { match self.mode {
ArrangerMode::H => todo!("horizontal arranger"), ArrangerMode::H => todo!("horizontal arranger"),
ArrangerMode::V(factor) => add(&lay!([ ArrangerMode::V(factor) => add(&lay!(![
Align::se(Fill::wh(Tui::pull_x(1, Tui::fg(TuiTheme::title_fg(true), ArrangerVColumnSeparator::from(self),
format!("{}x{}", self.size.w(), self.size.h())) ArrangerVRowSeparator::from((self, factor)),
))), col!(![
Tui::bg(color.darkest.rgb, lay!(![ ArrangerVHeader::from(self),
ArrangerVColumnSeparator::from(self), ArrangerVContent::from((self, factor)),
ArrangerVRowSeparator::from((self, factor)), ]),
col!(![ ArrangerVCursor::from((self, factor)),
ArrangerVHeader::from(self),
ArrangerVContent::from((self, factor)),
]),
ArrangerVCursor::from((self, factor)),
])),
])), ])),
} }
}); });
let with_pool = |x|Split::left(false, self.splits[1], PhraseListView(&self.phrases), x);
let play = Fixed::wh(5, 2, PlayPause(self.clock.is_rolling())); let play = Fixed::wh(5, 2, PlayPause(self.clock.is_rolling()));
let transport = TransportView::from((self, None, true)); let transport = TransportView::from((self, None, true));
let with_transport = |x|col!([row!(![&play, &transport]), &x]); let with_transport = |x|col!([row!(![&play, &transport]), &x]);
let color = self.color; let with_pool = |x|Split::left(false, self.splits[1], PhraseListView(&self.phrases), x);
let with_frame = |x|lay!([ with_transport(with_pool(col!([
Fill::wh(Tui::bg(color.darkest.rgb, " ")), &self.size,
Fill::wh(Lozenge(Style::default().bg(color.light.rgb).fg(color.darker.rgb))), Fill::w(Fixed::h(20, arranger())),
x Fill::w(Fixed::h(25, &self.editor)),
]); ])))
with_transport(with_pool(with_frame(row!([
Fixed::w(30, arranger()),
Fill::wh(&self.editor)
]))))
}); });
audio!(|self: ArrangerTui, client, scope|{ audio!(|self: ArrangerTui, client, scope|{
// Start profiling cycle // Start profiling cycle

View file

@ -198,8 +198,8 @@ render!(<Tui>|self: ArrangerVHeader<'a>|row!(
.unwrap_or("(none)".into())); .unwrap_or("(none)".into()));
Tui::push_x(self.scenes_w, Tui::push_x(self.scenes_w,
Tui::bg(track.color().base.rgb, Tui::bg(track.color().base.rgb,
Tui::min_xy(w as u16, self.header_h, Tui::min_xy(w as u16, self.header_h,
col!([name, timer])))) col!([name, timer]))))
} }
)); ));

View file

@ -114,7 +114,7 @@ impl ArrangerTui {
Ok(&mut self.scenes_mut()[index]) Ok(&mut self.scenes_mut()[index])
} }
fn scene_default_name (&self) -> String { fn scene_default_name (&self) -> String {
format!("S{:3>0}", self.scenes().len() + 1) format!("S{:3>}", self.scenes().len() + 1)
} }
pub fn selected_scene (&self) -> Option<&ArrangerScene> { pub fn selected_scene (&self) -> Option<&ArrangerScene> {
self.selected.scene().map(|s|self.scenes().get(s)).flatten() self.selected.scene().map(|s|self.scenes().get(s)).flatten()