diff --git a/crates/tek/src/tui/app_arranger.rs b/crates/tek/src/tui/app_arranger.rs index d7d125a0..6df52b80 100644 --- a/crates/tek/src/tui/app_arranger.rs +++ b/crates/tek/src/tui/app_arranger.rs @@ -190,7 +190,6 @@ input_to_command!(ArrangerCommand: |state:ArrangerTui,input|{ key_pat!(Char('U')) => { todo!("redo") }, // TODO: k: toggle on-screen keyboard key_pat!(Ctrl-Char('k')) => { todo!("keyboard") }, - // Transport: Play/pause key_pat!(Char(' ')) => Clock(if state.clock().is_stopped() { Play(None) } else { Pause(None) }), @@ -258,12 +257,12 @@ fn to_arranger_mix_command (input: &TuiInput) -> Option { command!(|self:ArrangerCommand,state:ArrangerTui|{ use ArrangerCommand::*; match self { - Scene(cmd) => cmd.execute(state)?.map(Scene), - Track(cmd) => cmd.execute(state)?.map(Track), - Clip(cmd) => cmd.execute(state)?.map(Clip), - Editor(cmd) => cmd.execute(&mut state.editor)?.map(Editor), - Clock(cmd) => cmd.execute(state)?.map(Clock), - Zoom(_) => { todo!(); }, + Scene(cmd) => cmd.execute(state)?.map(Scene), + Track(cmd) => cmd.execute(state)?.map(Track), + Clip(cmd) => cmd.execute(state)?.map(Clip), + Editor(cmd) => cmd.execute(&mut state.editor)?.map(Editor), + Clock(cmd) => cmd.execute(state)?.map(Clock), + Zoom(_) => { todo!(); }, Select(selected) => { *state.selected_mut() = selected; None diff --git a/crates/tek/src/tui/arranger_mode_v.rs b/crates/tek/src/tui/arranger_mode_v.rs index b862e3ab..de2b34a9 100644 --- a/crates/tek/src/tui/arranger_mode_v.rs +++ b/crates/tek/src/tui/arranger_mode_v.rs @@ -123,12 +123,14 @@ impl<'a> ArrangerVHead<'a> { pub struct ArrangerVCursor { cols: Vec<(usize, usize)>, rows: Vec<(usize, usize)>, + color: ItemPalette, selected: ArrangerSelection, scenes_w: u16, } from!(|args:(&ArrangerTui, usize)|ArrangerVCursor = Self { cols: ArrangerTrack::widths(args.0.tracks()), rows: ArrangerScene::ppqs(args.0.scenes(), args.1), + color: args.0.color, selected: args.0.selected(), scenes_w: SCENES_W_OFFSET + ArrangerScene::longest_name(args.0.scenes()) as u16, }); @@ -170,7 +172,7 @@ render!(|self: ArrangerVCursor|render(move|to: &mut TuiOutput|{ area }, }; - let bg = Color::Rgb(0, 255, 0); + let bg = self.color.lighter.rgb;//Color::Rgb(0, 255, 0); if let Some([x, y, width, height]) = track_area { to.fill_fg([x, y, 1, height], bg); to.fill_fg([x + width, y, 1, height], bg); @@ -198,8 +200,7 @@ from!(<'a>|args:(&'a ArrangerTui, usize)|ArrangerVClips<'a> = Self { tracks: &args.0.tracks, rows: ArrangerScene::ppqs(args.0.scenes(), args.1), }); -render!(|self: ArrangerVClips<'a>|Fixed::h( - (self.size.h() as u16).saturating_sub(HEADER_H), +render!(|self: ArrangerVClips<'a>|Fill::wh( col!((scene, pulses) in self.scenes.iter().zip(self.rows.iter().map(|row|row.0)) => { Self::format_scene(&self.tracks, scene, pulses) })