mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-09 05:06:43 +01:00
extract _snd modules; move some logic to PhrasePool impl
This commit is contained in:
parent
d2cda0c54d
commit
cae8556c91
5 changed files with 212 additions and 193 deletions
|
|
@ -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),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue