From 57b3e48830a70864f6ad44b7b104b980e1ed67b5 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Mon, 27 Jan 2025 22:59:34 +0100 Subject: [PATCH] implement and bind launch command --- tek/src/keys.edn | 1 + tek/src/keys.rs | 11 +++++++++++ tek/src/keys_clip.edn | 2 -- tek/src/view_output.rs | 5 ++++- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/tek/src/keys.edn b/tek/src/keys.edn index 7fbe9c71..46060ffd 100644 --- a/tek/src/keys.edn +++ b/tek/src/keys.edn @@ -5,6 +5,7 @@ (@t select :track 0) (@tab edit :clip) (@c color) +(@q launch) (@shift-I input add) (@shift-O output add) (@shift-S scene add) diff --git a/tek/src/keys.rs b/tek/src/keys.rs index cb9b4575..5d402502 100644 --- a/tek/src/keys.rs +++ b/tek/src/keys.rs @@ -39,6 +39,7 @@ handle!(TuiIn: |self: Tek, input|Ok({ Enqueue(Option>>), History(isize), Input(InputCommand), + Launch, Output(OutputCommand), Pool(PoolCommand), Sampler(SamplerCommand), @@ -58,6 +59,7 @@ atom_command!(TekCommand: |app: Tek| { ("color" [c: Color] Some(Self::Color(ItemPalette::random()))) ("color" [c: Color] Some(Self::Color(c.map(ItemPalette::from).expect("no color")))) ("enqueue" [c: Arc>] Some(Self::Enqueue(c))) + ("launch" [] Some(Self::Launch)) ("clip" [,..a] ClipCommand::try_from_expr(app, a).map(Self::Clip)) ("clock" [,..a] ClockCommand::try_from_expr(app.clock(), a).map(Self::Clock)) ("editor" [,..a] MidiEditCommand::try_from_expr(app.editor.as_ref().expect("no editor"), a).map(Self::Editor)) @@ -138,6 +140,15 @@ command!(|self: TekCommand, app: Tek|match self { //.map(|sampler|cmd.delegate(sampler, Self::Sampler)).transpose()?.flatten(), //Self::Enqueue(clip) => app.player.as_mut() //.map(|player|{player.enqueue_next(clip.as_ref());None}).flatten(), + Self::Launch => { + use Selection::*; + match app.selected { + Track(t) => app.tracks[t].player.enqueue_next(None), + Clip(t, s) => app.tracks[t].player.enqueue_next(app.scenes[s].clips[t].as_ref()), + _ => {} + }; + None + }, Self::Color(palette) => { use Selection::*; Some(Self::Color(match app.selected { diff --git a/tek/src/keys_clip.edn b/tek/src/keys_clip.edn index f1123cae..aa39a5e7 100644 --- a/tek/src/keys_clip.edn +++ b/tek/src/keys_clip.edn @@ -1,5 +1,3 @@ -(@q clip enqueue :track :scene) -(@c clip color :track :scene) (@g clip get) (@p clip put) (@delete clip del) diff --git a/tek/src/view_output.rs b/tek/src/view_output.rs index 393af2c5..73562875 100644 --- a/tek/src/view_output.rs +++ b/tek/src/view_output.rs @@ -3,7 +3,10 @@ impl Tek { pub fn view_outputs (&self) -> impl Content + use<'_> { let w = self.w_tracks_area(); let fg = Tui::g(224); - let nexts = self.per_track_top(|_, _|Tui::bg(Reset, " ------ ")); + let nexts = self.per_track_top(|t, track|Either( + track.player.next_clip.is_some(), + Thunk::new(||Tui::bg(Reset, " QUEUED ")), + Thunk::new(||Tui::bg(Reset, " ------ ")))); let nexts = self.row_top(w, 1, Align::e("Next:"), nexts, ()); let froms = self.per_track_top(|_, _|Tui::bg(Reset, Align::c(Bsp::s(" ------ ", OctaveVertical::default(),)))); let froms = self.row_top(w, 2, Align::e("From:"), froms, ());