mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
fix arranger inverse border
This commit is contained in:
parent
0a59594730
commit
d07ed00034
3 changed files with 32 additions and 42 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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]))))
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue