From 98cf8da424e874e91ef2c86768a6047ac1816c92 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sat, 2 Nov 2024 23:34:48 +0200 Subject: [PATCH] move all track controls to header --- crates/tek_sequencer/src/arranger_tui.rs | 28 +++++++++--------------- 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/crates/tek_sequencer/src/arranger_tui.rs b/crates/tek_sequencer/src/arranger_tui.rs index 2e43a45f..2a39cc4c 100644 --- a/crates/tek_sequencer/src/arranger_tui.rs +++ b/crates/tek_sequencer/src/arranger_tui.rs @@ -139,8 +139,7 @@ impl<'a> Content for VerticalArranger<'a, Tui> { //let border_bg = Color::Rgb(40, 50, 30); //let border_fg = if self.0.focused { border_hi } else { border_lo }; //let border = Lozenge(Style::default().bg(border_bg).fg(border_fg)); - let track_title_h = 2u16; - let tracks_footer = 3u16; + let track_title_h = 5u16; let scene_title_w = 3 + Scene::longest_name(scenes) as u16; // x of 1st track let clock = &self.0.clock; let arrangement = Layers::new(move |add|{ @@ -172,23 +171,16 @@ impl<'a> Content for VerticalArranger<'a, Tui> { // track titles let header = row!((track, w) in tracks.iter().zip(cols.iter().map(|col|col.0))=>{ // name and width of track - let name = track.name.read().unwrap(); - let max_w = w.saturating_sub(1).min(name.len()).max(2); - let name = format!("▎{}", &name[0..max_w]); - let name = TuiStyle::bold(name, true); + let name = track.name.read().unwrap(); + let player = &track.player; + let max_w = w.saturating_sub(1).min(name.len()).max(2); + let name = format!("▎{}", &name[0..max_w]); + let name = TuiStyle::bold(name, true); // name of active MIDI input let input = format!("▎>{}", track.player.midi_inputs.get(0) .map(|port|port.short_name()) .transpose()? .unwrap_or("(none)".into())); - col!(name, input) - .min_xy(w as u16, track_title_h) - .bg(track.color.rgb) - .push_x(scene_title_w) - }); - // track controls - let footer = row!((track, w) in tracks.iter().zip(cols.iter().map(|col|col.0))=>{ - let player = &track.player; // beats elapsed let elapsed = if let Some((_, Some(phrase))) = player.phrase.as_ref() { let length = phrase.read().unwrap().length; @@ -218,8 +210,8 @@ impl<'a> Content for VerticalArranger<'a, Tui> { .map(|port|port.short_name()) .transpose()? .unwrap_or("(none)".into())); - col!(until_next, elapsed, output) - .min_xy(w as u16, tracks_footer) + col!(name, input, output, until_next, elapsed) + .min_xy(w as u16, track_title_h) .bg(track.color.rgb) .push_x(scene_title_w) }); @@ -267,9 +259,9 @@ impl<'a> Content for VerticalArranger<'a, Tui> { }) }).fixed_y(height) } - ).fixed_y((self.0.size.h() as u16).saturating_sub(track_title_h + tracks_footer)); + ).fixed_y((self.0.size.h() as u16).saturating_sub(track_title_h)); // full grid with header and footer - add(&col!(header, content, footer))?; + add(&col!(header, content))?; // cursor add(&CustomWidget::new(any_size, move|to: &mut TuiOutput|{ let area = to.area();