extract _snd modules; move some logic to PhrasePool impl

This commit is contained in:
🪞👃🪞 2024-10-12 08:23:42 +03:00
parent d2cda0c54d
commit cae8556c91
5 changed files with 212 additions and 193 deletions

View file

@ -1,5 +1,5 @@
use crate::*;
/// Handle top-level events in standalone arranger.
/// Handle top-level events in standalone sequencer.
impl Handle<Tui> for Sequencer<Tui> {
fn handle (&mut self, from: &TuiInput) -> Perhaps<bool> {
if !match self.focused() {
@ -44,42 +44,13 @@ impl Handle<Tui> for PhrasePool<Tui> {
}
},
None => match from.event() {
key!(KeyCode::Up) => self.phrase = if self.phrase > 0 {
self.phrase - 1
} else {
self.phrases.len() - 1
},
key!(KeyCode::Down) => {
self.phrase = (self.phrase + 1) % self.phrases.len()
},
key!(KeyCode::Char('a')) => { // append new
let mut phrase = Phrase::default();
phrase.name = String::from("(no name)");
phrase.color = random_color();
self.phrases.push(Arc::new(RwLock::new(phrase)));
self.phrase = self.phrases.len() - 1;
},
key!(KeyCode::Char('i')) => { // insert new
let mut phrase = Phrase::default();
phrase.name = String::from("(no name)");
phrase.color = random_color();
self.phrases.insert(self.phrase + 1, Arc::new(RwLock::new(phrase)));
self.phrase += 1;
},
key!(KeyCode::Char('d')) => { // insert duplicate
let mut phrase = self.phrases[self.phrase].read().unwrap().duplicate();
phrase.color = random_color_near(phrase.color, 0.2);
self.phrases.insert(self.phrase + 1, Arc::new(RwLock::new(phrase)));
self.phrase += 1;
},
key!(KeyCode::Char('c')) => { // change color
let mut phrase = self.phrases[self.phrase].write().unwrap();
phrase.color = random_color();
},
key!(KeyCode::Char('n')) => { // change name
let phrase = self.phrases[self.phrase].read().unwrap();
self.mode = Some(PhrasePoolMode::Rename(self.phrase, phrase.name.clone()));
},
key!(KeyCode::Up) => { self.select_prev() },
key!(KeyCode::Down) => { self.select_next() },
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() },
key!(KeyCode::Char('c')) => { self.randomize_color() },
key!(KeyCode::Char('n')) => { self.begin_rename() },
_ => return Ok(None),
}
}