refactor inputs/outputs views into monolithic exprst

This commit is contained in:
🪞👃🪞 2025-01-25 22:14:03 +01:00
parent 58433c0402
commit deeaaa0b8b
2 changed files with 52 additions and 52 deletions

View file

@ -391,33 +391,35 @@ impl Tek {
// INPUTS /////////////////////////////////////////////////////////////////////////////////////
fn view_inputs (&self) -> impl Content<TuiOut> + use<'_> {
let fg = Tui::g(224);
let key = " I";
let label = "midi ins";
let count = self.midi_ins.len();
let heading = Fill::x(Align::w(self.button3(key, label, format!("{count}"))));
let rows = self.io_ports(fg, Tui::g(32), ||self.inputs_sizes());
let columns = self.per_track_top(move|t, track|{
let rec = track.player.recording;
let mon = track.player.monitoring;
let rec = if rec { White } else { track.color.darkest.rgb };
let mon = if mon { White } else { track.color.darkest.rgb };
let bg = if self.selected().track() == Some(t+1) { track.color.light.rgb } else { track.color.base.rgb };
let bg2 = if t > 0 { self.tracks()[t - 1].color.base.rgb } else { Reset };
Self::wrap(bg, fg, Tui::bold(true, Fill::x(Bsp::e(
Tui::fg_bg(rec, bg, "Rec "),
Tui::fg_bg(rec, bg, "Mon ")))))});
let toggles = self.per_track_top(move|t, track|self.io_connections(
track.color.dark.rgb, track.color.darker.rgb, ||self.inputs_sizes()));
//let toggles = Map::new(||self.inputs_sizes(), move|(index, name, conn, y, y2), _|
//map_south(y as u16, (y2-y) as u16, Self::wrap(bg, fg, Fill::x(Bsp::e(
//Tui::fg_bg(rec, bg, format!("{y} {y2} {name}")),
//Tui::fg_bg(mon, bg, "M▞▞▞▞"))))));
//Bsp::a(Fill::y(Align::n(headers)), Fill::y(Align::n(toggles)))});
let fg = Tui::g(224);
let key = " I";
let label = "midi ins";
let count = self.midi_ins.len();
Bsp::s(
Bsp::s(
self.row_top(self.w(), 1, heading, columns),
self.row_top(self.w(), self.h_inputs() - 1, rows, toggles),
self.row_top(self.w(), 1,
Fill::x(Align::w(self.button3(key, label, format!("{count}")))),
self.per_track_top(move|t, track|{
let rec = track.player.recording;
let mon = track.player.monitoring;
let rec = if rec { White } else { track.color.darkest.rgb };
let mon = if mon { White } else { track.color.darkest.rgb };
let bg = if self.selected().track() == Some(t+1) {
track.color.light.rgb
} else {
track.color.base.rgb
};
let bg2 = if t > 0 { self.tracks()[t - 1].color.base.rgb } else { Reset };
Self::wrap(bg, fg, Tui::bold(true, Fill::x(Bsp::e(
Tui::fg_bg(rec, bg, "Rec "),
Tui::fg_bg(rec, bg, "Mon ")))))})),
self.row_top(self.w(), self.h_inputs() - 1,
self.io_ports(fg, Tui::g(32), ||self.inputs_sizes()),
self.per_track_top(move|t, track|self.io_connections(
track.color.dark.rgb,
track.color.darker.rgb,
||self.inputs_sizes()
))),
),
self.view_clips_into()
)
@ -425,34 +427,32 @@ impl Tek {
// OUTPUTS ////////////////////////////////////////////////////////////////////////////////////
fn view_outputs (&self) -> impl Content<TuiOut> + use<'_> {
let fg = Tui::g(224);
let key = " O";
let label = "midi outs";
let count = self.midi_outs.len();
let heading = Fill::x(Align::w(self.button3(key, label, format!("{count}"))));
let rows = self.io_ports(fg, Tui::g(32), ||self.outputs_sizes());
let columns = self.per_track_top(move|t, track|{
let mute = false;
let solo = false;
let mute = if mute { White } else { track.color.darkest.rgb };
let solo = if solo { White } else { track.color.darkest.rgb };
let bg = if self.selected().track() == Some(t+1) { track.color.light.rgb } else { track.color.base.rgb };
let bg2 = if t > 0 { self.tracks()[t - 1].color.base.rgb } else { Reset };
Self::wrap(bg, fg, Tui::bold(true, Fill::x(Bsp::e(
Tui::fg_bg(mute, bg, "Play "),
Tui::fg_bg(solo, bg, "Solo ")))))});
let toggles = self.per_track_top(move|t, track|self.io_connections(
track.color.dark.rgb, track.color.darker.rgb, ||self.outputs_sizes()));
//Map::new(||self.outputs_sizes(), move|(index, name, conn, y, y2), _|
//map_south(y as u16, (y2-y) as u16, Self::wrap(bg, fg, Fill::x(Bsp::e(
//Tui::fg_bg(mute, bg, "P▞▞▞▞"),
//Tui::fg_bg(solo, bg, "S▞▞▞▞"))))));
//Bsp::a(Fill::y(Align::n(headers)), Fill::y(Align::n(toggles)))});
let fg = Tui::g(224);
let key = " O";
let label = "midi outs";
let count = self.midi_outs.len();
Align::n(Bsp::s(
Bsp::s(self.view_clips_next(), self.view_clips_from()),
Bsp::s(
self.row_top(self.w(), 1, heading, columns),
self.row_top(self.w(), self.h_outputs() - 1, rows, toggles),
self.view_clips_next(),
self.view_clips_from(),
),
Bsp::s(
self.row_top(self.w(), 1,
Fill::x(Align::w(self.button3(key, label, format!("{count}")))),
self.per_track_top(move|t, track|{
let mute = false;
let solo = false;
let mute = if mute { White } else { track.color.darkest.rgb };
let solo = if solo { White } else { track.color.darkest.rgb };
let bg = if self.selected().track() == Some(t+1) { track.color.light.rgb } else { track.color.base.rgb };
let bg2 = if t > 0 { self.tracks()[t - 1].color.base.rgb } else { Reset };
Self::wrap(bg, fg, Tui::bold(true, Fill::x(Bsp::e(
Tui::fg_bg(mute, bg, "Play "),
Tui::fg_bg(solo, bg, "Solo ")))))})),
self.row_top(self.w(), self.h_outputs() - 1,
self.io_ports(fg, Tui::g(32), ||self.outputs_sizes()),
self.per_track_top(move|t, track|self.io_connections(
track.color.dark.rgb, track.color.darker.rgb, ||self.outputs_sizes()))),
)
))
}

View file

@ -1,4 +1,4 @@
(bsp/s
(bsp/n
(fixed/y 1 :toolbar)
(fill/xy (align/c (bsp/a (fill/xy (align/e :pool))
(bsp/a