mirror of
https://codeberg.org/unspeaker/tek.git
synced 2026-04-04 05:10:44 +02:00
wip: unfuck arranger more
This commit is contained in:
parent
f920d17058
commit
abc1cc8fce
4 changed files with 110 additions and 66 deletions
|
|
@ -29,6 +29,7 @@ pub struct Arranger {
|
|||
pub midi_buf: Vec<Vec<Vec<u8>>>,
|
||||
pub editor: MidiEditor,
|
||||
pub perf: PerfModel,
|
||||
pub compact: bool,
|
||||
}
|
||||
impl Arranger {
|
||||
pub fn selected (&self) -> ArrangerSelection {
|
||||
|
|
@ -94,6 +95,7 @@ from_jack!(|jack| Arranger {
|
|||
note_buf: vec![],
|
||||
perf: PerfModel::default(),
|
||||
jack: jack.clone(),
|
||||
compact: false,
|
||||
}
|
||||
});
|
||||
impl Arranger {
|
||||
|
|
@ -104,20 +106,64 @@ impl Arranger {
|
|||
}
|
||||
}
|
||||
}
|
||||
render!(TuiOut: (self: Arranger) => {
|
||||
let pool_w = if self.pool.visible { self.splits[1] } else { 0 };
|
||||
let color = self.color;
|
||||
let layout = Bsp::a(Fill::xy(ArrangerStatus::from(self)),
|
||||
Bsp::n(Fixed::x(pool_w, PoolView(self.pool.visible, &self.pool)),
|
||||
Bsp::n(TransportView::new(true, &self.clock),
|
||||
Bsp::s(Fixed::y(1, MidiEditStatus(&self.editor)),
|
||||
Bsp::n(Fill::x(Fixed::y(20,
|
||||
Bsp::a(Fill::xy(Tui::bg(color.darkest.rgb, "background")),
|
||||
Bsp::a(
|
||||
Fill::xy(Outer(Style::default().fg(color.dark.rgb).bg(color.darkest.rgb))),
|
||||
Self::render_mode(self))))), Fill::y(&"fixme: self.editor"))))));
|
||||
self.size.of(layout)
|
||||
});
|
||||
//render!(TuiOut: (self: Arranger) => {
|
||||
//let pool_w = if self.pool.visible { self.splits[1] } else { 0 };
|
||||
//let color = self.color;
|
||||
//let layout = Bsp::a(Fill::xy(ArrangerStatus::from(self)),
|
||||
//Bsp::n(Fixed::x(pool_w, PoolView(self.pool.visible, &self.pool)),
|
||||
//Bsp::n(TransportView::new(true, &self.clock),
|
||||
//Bsp::s(Fixed::y(1, MidiEditStatus(&self.editor)),
|
||||
//Bsp::n(Fill::x(Fixed::y(20,
|
||||
//Bsp::a(Fill::xy(Tui::bg(color.darkest.rgb, "background")),
|
||||
//Bsp::a(
|
||||
//Fill::xy(Outer(Style::default().fg(color.dark.rgb).bg(color.darkest.rgb))),
|
||||
//Self::render_mode(self))))), Fill::y(&"fixme: self.editor"))))));
|
||||
//self.size.of(layout)
|
||||
//});
|
||||
render!(TuiOut: (self: Arranger) => self.size.of(
|
||||
Bsp::s(self.toolbar_view(),
|
||||
Bsp::n(self.selector_view(),
|
||||
Bsp::n(self.status_view(),
|
||||
Bsp::w(self.pool_view(), Fill::xy(&self.editor)))))));
|
||||
impl Arranger {
|
||||
fn toolbar_view (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
Fill::x(Fixed::y(2, Align::x(TransportView::new(true, &self.clock))))
|
||||
}
|
||||
fn status_view (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
let edit_clip = MidiEditClip(&self.editor);
|
||||
//let selectors = When(false, Bsp::e(ClipSelected::play_phrase(&self.player), ClipSelected::next_phrase(&self.player)));
|
||||
row!(/*selectors,*/ edit_clip, MidiEditStatus(&self.editor))
|
||||
}
|
||||
fn selector_view (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
row!(
|
||||
//ClipSelected::play_phrase(&self.player),
|
||||
//ClipSelected::next_phrase(&self.player),
|
||||
MidiEditClip(&self.editor),
|
||||
MidiEditStatus(&self.editor),
|
||||
)
|
||||
}
|
||||
fn pool_view (&self) -> impl Content<TuiOut> + use<'_> {
|
||||
let w = self.size.w();
|
||||
let phrase_w = if w > 60 { 20 } else if w > 40 { 15 } else { 10 };
|
||||
let pool_w = if self.pool.visible { phrase_w } else { 0 };
|
||||
let pool = Pull::y(1, Fill::y(Align::e(PoolView(self.pool.visible, &self.pool))));
|
||||
Fixed::x(pool_w, Align::e(Fill::y(PoolView(self.compact, &self.pool))))
|
||||
}
|
||||
}
|
||||
//render!(TuiOut: (self: Arranger) => {
|
||||
//let pool_w = if self.pool.visible { self.splits[1] } else { 0 };
|
||||
//let color = self.color;
|
||||
//let layout = Bsp::a(Fill::xy(ArrangerStatus::from(self)),
|
||||
//Bsp::n(Fixed::x(pool_w, PoolView(self.pool.visible, &self.pool)),
|
||||
//Bsp::n(TransportView::new(true, &self.clock),
|
||||
//Bsp::s(Fixed::y(1, MidiEditStatus(&self.editor)),
|
||||
//Bsp::n(Fill::x(Fixed::y(20,
|
||||
//Bsp::a(Fill::xy(Tui::bg(color.darkest.rgb, "background")),
|
||||
//Bsp::a(
|
||||
//Fill::xy(Outer(Style::default().fg(color.dark.rgb).bg(color.darkest.rgb))),
|
||||
//Self::render_mode(self))))), Fill::y(&"fixme: self.editor"))))));
|
||||
//self.size.of(layout)
|
||||
//});
|
||||
audio!(|self: Arranger, client, scope|{
|
||||
// Start profiling cycle
|
||||
let t0 = self.perf.get_t0();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue