diff --git a/crates/tek_tui/src/tui_app_sequencer.rs b/crates/tek_tui/src/tui_app_sequencer.rs index 50fa62df..2c8908fe 100644 --- a/crates/tek_tui/src/tui_app_sequencer.rs +++ b/crates/tek_tui/src/tui_app_sequencer.rs @@ -97,6 +97,7 @@ pub struct SequencerStatusBar { pub(crate) cpu: Option, pub(crate) size: String, pub(crate) sr: String, + pub(crate) mode: &'static str, } impl StatusBar for SequencerStatusBar { @@ -111,10 +112,25 @@ impl StatusBar for SequencerStatusBar { impl From<&SequencerTui> for SequencerStatusBar { fn from (state: &SequencerTui) -> Self { + use SequencerFocus::*; + use TransportFocus::*; Self { cpu: state.perf.percentage().map(|cpu|format!(" {cpu:.01}% ")), size: format!(" {}x{} ", state.size.w(), state.size.h()), - sr: format!(" {}Hz ", state.clock.current.timebase.sr.get()) + sr: format!(" {}Hz ", state.clock.current.timebase.sr.get()), + mode: match state.focused() { + Transport(focus) => match focus { + PlayPause => " PLAY/PAUSE ", + Bpm => " TEMPO ", + Sync => " LAUNCH SYNC ", + Quant => " REC QUANT ", + Clock => " SEEK ", + }, + PhraseList => " PHRASES ", + PhraseEditor => " EDIT MIDI ", + PhrasePlay => " TO PLAY ", + PhraseNext => " UP NEXT ", + } } } } diff --git a/crates/tek_tui/src/tui_view_sequencer.rs b/crates/tek_tui/src/tui_view_sequencer.rs index 20886bb8..e345549a 100644 --- a/crates/tek_tui/src/tui_view_sequencer.rs +++ b/crates/tek_tui/src/tui_view_sequencer.rs @@ -20,10 +20,15 @@ impl Content for SequencerTui { impl Content for SequencerStatusBar { type Engine = Tui; fn content (&self) -> impl Widget { - row!( - widget(&self.cpu).fg(Color::Rgb(255,128,0)), - widget(&self.sr).fg(Color::Rgb(255,128,0)), - widget(&self.size).fg(Color::Rgb(255,128,0)), - ).align_se().fill_x() + let orange = Color::Rgb(255,128,0); + let black = Color::Rgb(0,0,0); + lay!( + widget(&self.mode).bg(orange).fg(black).bold(true), + row!( + widget(&self.cpu).fg(orange), + widget(&self.sr).fg(orange), + widget(&self.size).fg(orange), + ).align_se().fill_x() + ) } }