From b956fabe70ccc07cf0cac2ff3b1498ba51d2526d Mon Sep 17 00:00:00 2001 From: unspeaker Date: Mon, 23 Dec 2024 20:05:36 +0100 Subject: [PATCH] implement phrase autoselect for arranger --- crates/tek/src/tui/app_arranger.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/crates/tek/src/tui/app_arranger.rs b/crates/tek/src/tui/app_arranger.rs index ffcaa9d6..d7d125a0 100644 --- a/crates/tek/src/tui/app_arranger.rs +++ b/crates/tek/src/tui/app_arranger.rs @@ -261,7 +261,6 @@ command!(|self:ArrangerCommand,state:ArrangerTui|{ Scene(cmd) => cmd.execute(state)?.map(Scene), Track(cmd) => cmd.execute(state)?.map(Track), Clip(cmd) => cmd.execute(state)?.map(Clip), - Phrases(cmd) => cmd.execute(&mut state.phrases)?.map(Phrases), Editor(cmd) => cmd.execute(&mut state.editor)?.map(Editor), Clock(cmd) => cmd.execute(state)?.map(Clock), Zoom(_) => { todo!(); }, @@ -278,6 +277,26 @@ command!(|self:ArrangerCommand,state:ArrangerTui|{ state.show_pool = show; None }, + Phrases(cmd) => { + let mut default = |cmd: PhrasesCommand|cmd + .execute(&mut state.phrases) + .map(|x|x.map(Phrases)); + match cmd { + // autoselect: automatically load selected phrase in editor + PhrasesCommand::Select(_) => { + let undo = default(cmd)?; + state.editor.set_phrase(Some(state.phrases.phrase())); + undo + }, + // update color in all places simultaneously + PhrasesCommand::Phrase(PhrasePoolCommand::SetColor(index, _)) => { + let undo = default(cmd)?; + state.editor.set_phrase(Some(state.phrases.phrase())); + undo + }, + _ => default(cmd)? + } + }, _ => { todo!() } } });