From bbbf4309cb531524e90d578b191eadf022bddcca Mon Sep 17 00:00:00 2001 From: unspeaker Date: Fri, 18 Oct 2024 17:25:46 +0300 Subject: [PATCH] rename clip from arranger --- crates/tek_sequencer/src/arranger.rs | 42 +++++++++--------------- crates/tek_sequencer/src/arranger_cmd.rs | 2 +- 2 files changed, 17 insertions(+), 27 deletions(-) diff --git a/crates/tek_sequencer/src/arranger.rs b/crates/tek_sequencer/src/arranger.rs index 7dbb33a8..0f715cfb 100644 --- a/crates/tek_sequencer/src/arranger.rs +++ b/crates/tek_sequencer/src/arranger.rs @@ -98,24 +98,22 @@ impl Arranger { Ok(Some(true)) } pub fn rename_selected (&mut self) { - let Arrangement { selected, ref name, ref tracks, ref scenes, .. } = self.arrangement; - todo!("rename selected"); - //self.modal = match selected { - //ArrangementFocus::Mix => { - //Some(Box::new(ArrangerRenameModal::new(selected, &*name.read().unwrap()))) - //}, - //ArrangementFocus::Track(t) => { - //Some(Box::new(ArrangerRenameModal::new(selected, &*tracks[t].name.read().unwrap()))) - //}, - //ArrangementFocus::Scene(s) => { - //Some(Box::new(ArrangerRenameModal::new(selected, &*scenes[s].name.read().unwrap()))) - //}, - //ArrangementFocus::Clip(t, s) => if let Some(ref clip) = scenes[s].clips[t] { - //Some(Box::new(ArrangerRenameModal::new(selected, &clip.read().unwrap().name))) - //} else { - //None - //} - //}; + let Self { phrases, arrangement, .. } = self; + let Arrangement { selected, ref name, ref tracks, ref scenes, .. } = arrangement; + match selected { + ArrangementFocus::Track(t) => { todo!("rename track"); }, + ArrangementFocus::Scene(s) => { todo!("rename scene"); }, + ArrangementFocus::Clip(t, s) => + if let Some(ref phrase) = scenes[*s].clips[*t] { + let index = self.phrases.read().unwrap().index_of(&*phrase.read().unwrap()); + if let Some(index) = index { + self.focus(ArrangerFocus::PhrasePool); + self.phrases.write().unwrap().phrase = index; + self.phrases.write().unwrap().begin_rename(); + } + }, + _ => {} + } } } /// Focus layout of arranger app @@ -247,14 +245,6 @@ impl Arrangement { pub fn move_forward (&mut self) { todo!("arrangement: move forward") } - pub fn rename_selected (&mut self) { - match self.selected { - ArrangementFocus::Track(t) => { todo!("rename track"); }, - ArrangementFocus::Scene(s) => { todo!("rename scene"); }, - ArrangementFocus::Clip(t, s) => { todo!("rename clip"); }, - _ => {} - } - } } /// Methods for tracks in arrangement impl Arrangement { diff --git a/crates/tek_sequencer/src/arranger_cmd.rs b/crates/tek_sequencer/src/arranger_cmd.rs index 39339787..2efaf5ba 100644 --- a/crates/tek_sequencer/src/arranger_cmd.rs +++ b/crates/tek_sequencer/src/arranger_cmd.rs @@ -14,6 +14,7 @@ impl Handle for Arranger { key!(KeyCode::Right) => { self.focus_right(); }, key!(KeyCode::Char('e')) => { self.edit_phrase(); }, key!(KeyCode::Char(' ')) => { self.toggle_play(); }, + key!(KeyCode::Char('n')) => { self.rename_selected(); }, _ => return Ok(None) } }; @@ -61,7 +62,6 @@ impl Handle for Arrangement { key!(KeyCode::Char('g')) => { self.phrase_get(); }, key!(Ctrl-KeyCode::Char('a')) => { self.scene_add(None, None)?; }, key!(Ctrl-KeyCode::Char('t')) => { self.track_add(None, None)?; }, - key!(KeyCode::Char('n')) => { self.rename_selected(); }, key!(KeyCode::Char('l')) => { self.toggle_loop() }, key!(KeyCode::Up) => { self.go_up() }, key!(KeyCode::Down) => { self.go_down() },