From a6643ab990d96e9ef76d0757a296e54752fcfb49 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Fri, 10 Jan 2025 01:19:30 +0100 Subject: [PATCH] let's deal with the centering later --- cli/tek.rs | 6 ++--- tek/src/arranger/arranger_tui.rs | 46 ++++++++++++++++++-------------- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/cli/tek.rs b/cli/tek.rs index 02ef08bb..dda48490 100644 --- a/cli/tek.rs +++ b/cli/tek.rs @@ -48,9 +48,9 @@ pub enum TekMode { /// Multi-track MIDI sequencer. Arranger { /// Number of tracks - #[arg(short = 'x', long, default_value_t = 16)] tracks: usize, + #[arg(short = 'x', long, default_value_t = 4)] tracks: usize, /// Width of tracks - #[arg(short = 'w', long, default_value_t = 10)] track_width: usize, + #[arg(short = 'w', long, default_value_t = 8)] track_width: usize, /// Number of scenes #[arg(short = 'y', long, default_value_t = 16)] scenes: usize, }, @@ -183,7 +183,7 @@ pub fn main () -> Usually<()> { splits: [12, 20], midi_buf: vec![vec![];65536], note_buf: vec![], - compact: true, + compact: false, color, perf, size, diff --git a/tek/src/arranger/arranger_tui.rs b/tek/src/arranger/arranger_tui.rs index b5ac94c4..43b3c198 100644 --- a/tek/src/arranger/arranger_tui.rs +++ b/tek/src/arranger/arranger_tui.rs @@ -2,26 +2,30 @@ use crate::*; pub(crate) const HEADER_H: u16 = 0; // 5 pub(crate) const SCENES_W_OFFSET: u16 = 0; render!(TuiOut: (self: Arranger) => { - let toolbar = |x|Bsp::s(self.toolbar_view(), x); - let pool = |x|Bsp::w(self.pool_view(), x); - let editing = |x|Bsp::n(Bsp::e(self.editor.clip_status(), self.editor.edit_status()), x); - //let enclosed = |x|Outer(Style::default().fg(Color::Rgb(72,72,72))).enclose(x); - let scenes_w = 16;//.max(SCENES_W_OFFSET + ArrangerScene::longest_name(&self.scenes) as u16); - //Bsp::s(arrrrrr, enclosed(&self.editor)) - self.size.of(toolbar(pool(editing(Map::new( - move||[ - (0, 2, self.output_row_header(), self.output_row_cells()), - (2, 3, self.elapsed_row_header(), self.elapsed_row_cells()), - (4, 3, self.next_row_header(), self.next_row_cells()), - (6, 3, self.track_row_header(), self.track_row_cells()), - (8, 20, self.scene_row_headers(), self.scene_row_cells()), - ((self.size.h() as u16).saturating_sub(6), 2, self.input_row_header(), self.input_row_cells()), - ].into_iter(), - move|(y, h, header, cells), index|map_south_west(y, h, Align::w(Bsp::a( - Align::w(Fixed::xy(scenes_w, h, header)), - Align::w(Push::x(scenes_w, Fixed::xy(self.tracks.len() as u16*12, h, cells))) - )))))))) + let scenes_w = 16; + let row = move|h, header, cells|Align::w(Bsp::e( + Align::w(Fixed::xy(scenes_w, h, header)), + Fixed::xy(self.tracks.len() as u16*12, h, cells) + )); + let toolbar = |x|Bsp::s(self.toolbar_view(), x); + let pool = |x|Bsp::w(self.pool_view(), x); + let editing = |x|Bsp::n(Bsp::e(self.editor.clip_status(), self.editor.edit_status()), x); + let outputs = |x|Bsp::s(row(2, self.output_row_header(), self.output_row_cells()), Fill::y(x)); + let playing = |x|Bsp::s(row(2, self.elapsed_row_header(), self.elapsed_row_cells()), Fill::y(x)); + let next = |x|Bsp::s(row(2, self.next_row_header(), self.next_row_cells()), Fill::y(x)); + let tracks = |x|Bsp::s(row(3, self.track_row_header(), self.track_row_cells()), Fill::y(x)); + let scenes = |x|Bsp::s(row((self.size.h() as u16).saturating_sub(13), + self.scene_row_headers(), + self.scene_row_cells()), x); + let inputs = |x|Bsp::n( + row(2, self.input_row_header(), self.input_row_cells()), + Fill::y(x)); + self.size.of( + toolbar(pool(editing(inputs(outputs(playing(next(tracks(scenes(Fill::xy(""))))))))))) + //let enclosed = |x|Outer(Style::default().fg(Color::Rgb(72,72,72))).enclose(x); + //.max(SCENES_W_OFFSET + ArrangerScene::longest_name(&self.scenes) as u16); + //Bsp::s(arrrrrr, enclosed(&self.editor)) }); impl Arranger { pub const LEFT_SEP: char = '▎'; @@ -77,7 +81,9 @@ impl Arranger { } fn output_row_header <'a> (&'a self) -> BoxThunk<'a, TuiOut> { - (||Tui::bold(true, Tui::fg_bg(TuiTheme::g(0), TuiTheme::g(200), "[ ] Out 1: NI")).boxed()).into() + let fg = TuiTheme::g(192); + let bg = TuiTheme::g(48); + (move||Tui::bold(true, Tui::fg_bg(fg, bg, "[ ] Out 1: NI")).boxed()).into() } fn output_row_cells <'a> (&'a self) -> BoxThunk<'a, TuiOut> { //let scenes_w = 16;//.max(SCENES_W_OFFSET + ArrangerScene::longest_name(&self.scenes) as u16);