diff --git a/crates/tek_sequencer/src/arranger.rs b/crates/tek_sequencer/src/arranger.rs index 5c821c75..c05ee637 100644 --- a/crates/tek_sequencer/src/arranger.rs +++ b/crates/tek_sequencer/src/arranger.rs @@ -39,7 +39,8 @@ pub enum ArrangerStatusBar { ArrangementScene, ArrangementClip, PhrasePool, - PhraseEditor, + PhraseView, + PhraseEdit, } /// Represents the tracks and scenes of the composition. pub struct Arrangement { @@ -161,15 +162,18 @@ impl Arranger { /// Update status bar pub fn update_status (&mut self) { self.status = match self.focused() { - ArrangerFocus::Transport => ArrangerStatusBar::Transport, - ArrangerFocus::Arrangement => match self.arrangement.selected { - ArrangementFocus::Mix => ArrangerStatusBar::ArrangementMix, - ArrangementFocus::Track(_) => ArrangerStatusBar::ArrangementTrack, - ArrangementFocus::Scene(_) => ArrangerStatusBar::ArrangementScene, + ArrangerFocus::Transport => ArrangerStatusBar::Transport, + ArrangerFocus::Arrangement => match self.arrangement.selected { + ArrangementFocus::Mix => ArrangerStatusBar::ArrangementMix, + ArrangementFocus::Track(_) => ArrangerStatusBar::ArrangementTrack, + ArrangementFocus::Scene(_) => ArrangerStatusBar::ArrangementScene, ArrangementFocus::Clip(_, _) => ArrangerStatusBar::ArrangementClip, }, - ArrangerFocus::PhrasePool => ArrangerStatusBar::PhrasePool, - ArrangerFocus::PhraseEditor => ArrangerStatusBar::PhraseEditor, + ArrangerFocus::PhrasePool => ArrangerStatusBar::PhrasePool, + ArrangerFocus::PhraseEditor => match self.editor.entered { + true => ArrangerStatusBar::PhraseEdit, + false => ArrangerStatusBar::PhraseView, + }, } } } diff --git a/crates/tek_sequencer/src/arranger_tui.rs b/crates/tek_sequencer/src/arranger_tui.rs index 5a0dcb9b..e4775880 100644 --- a/crates/tek_sequencer/src/arranger_tui.rs +++ b/crates/tek_sequencer/src/arranger_tui.rs @@ -26,22 +26,31 @@ impl Content for ArrangerStatusBar { type Engine = Tui; fn content (&self) -> impl Widget { let label = match self { - Self::Transport => "TRANSPORT", - Self::ArrangementMix => "COMPOSITION", - Self::ArrangementTrack => "TRACK", - Self::ArrangementScene => "SCENE", - Self::ArrangementClip => "CLIP", - Self::PhrasePool => "PHRASES", - Self::PhraseEditor => "SEQUENCER", + Self::Transport => "TRANSPORT", + Self::ArrangementMix => "PROJECT", + Self::ArrangementTrack => "TRACK", + Self::ArrangementScene => "SCENE", + Self::ArrangementClip => "CLIP", + Self::PhrasePool => "SEQ LIST", + Self::PhraseView => "SEQ VIEW", + Self::PhraseEdit => "SEQ EDIT", }; let label = TuiStyle::bg(format!(" {label} "), Color::Rgb(150, 160, 90)) .fg(Color::Rgb(0, 0, 0)) .bold(true); row!(label, " ", match self { + Self::ArrangementMix => + "[<>]Resize arranger", Self::ArrangementClip => - "[G]et [S]et [A]dd [I]nsert [D]uplicate [E]dit [C]olor [,.]Choose", + "[G]et [S]et [A]dd [I]nsert [D]uplicate [E]dit [C]olor re[N]ame [,.]Choose", + Self::ArrangementTrack => + "[,.]Resize [<>]Move", Self::PhrasePool => - "[A]ppend [I]nsert [D]uplicate [C]olor re[N]ame leng[T]h [,.]Move [<>]Resize", + "[A]ppend [I]nsert [D]uplicate [C]olor re[N]ame leng[T]h [,.]Move [<>]Resize list", + Self::PhraseView => + "[Enter]Edit notes [Arrows/PgUp/PgDn]Scroll", + Self::PhraseEdit => + "[Esc]Exit edit mode [A]ppend [S]et", _ => "" }) } @@ -132,7 +141,7 @@ impl<'a> Content for VerticalArranger<'a, Tui> { // scene titles let scene_name = |scene, playing: bool, height|row!( - if playing { "▶ " } else { " " }, + if playing { " ▶" } else { " " }, (scene as &Scene).name.read().unwrap().as_str(), ).fixed_xy(offset.saturating_sub(1), height);