From 708531571af634ae419de9f05b8f4c4f06a0ccc0 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Thu, 24 Oct 2024 23:26:35 +0300 Subject: [PATCH] delete phrase from list --- crates/tek_sequencer/src/sequencer.rs | 6 ++++++ crates/tek_sequencer/src/sequencer_cmd.rs | 1 + 2 files changed, 7 insertions(+) diff --git a/crates/tek_sequencer/src/sequencer.rs b/crates/tek_sequencer/src/sequencer.rs index 8cd895b3..b8277856 100644 --- a/crates/tek_sequencer/src/sequencer.rs +++ b/crates/tek_sequencer/src/sequencer.rs @@ -181,6 +181,12 @@ impl PhrasePool { String::from(name.unwrap_or("(new)")), true, 4 * PPQ, None, color ))) } + pub fn delete_selected (&mut self) { + if self.phrase > 0 { + self.phrases.remove(self.phrase); + self.phrase = self.phrase.min(self.phrases.len().saturating_sub(1)); + } + } pub fn append_new (&mut self, name: Option<&str>, color: Option) { self.phrases.push(Self::new_phrase(name, color)); self.phrase = self.phrases.len() - 1; diff --git a/crates/tek_sequencer/src/sequencer_cmd.rs b/crates/tek_sequencer/src/sequencer_cmd.rs index 738c1be9..8a058b1e 100644 --- a/crates/tek_sequencer/src/sequencer_cmd.rs +++ b/crates/tek_sequencer/src/sequencer_cmd.rs @@ -68,6 +68,7 @@ impl Handle for PhrasePool { None => match from.event() { key!(KeyCode::Up) => { self.select_prev() }, key!(KeyCode::Down) => { self.select_next() }, + key!(KeyCode::Delete) => { self.delete_selected() }, key!(KeyCode::Char('a')) => { self.append_new(None, None) }, key!(KeyCode::Char('i')) => { self.insert_new(None, None) }, key!(KeyCode::Char('d')) => { self.insert_dup() },