mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
add/insert/duplicate phrase directly from grid
This commit is contained in:
parent
dc32c2c2b8
commit
de4797ab52
2 changed files with 17 additions and 5 deletions
|
|
@ -30,9 +30,21 @@ impl Handle<Tui> for Arranger<Tui> {
|
||||||
fn handle (&mut self, from: &TuiInput) -> Perhaps<bool> {
|
fn handle (&mut self, from: &TuiInput) -> Perhaps<bool> {
|
||||||
if !match self.focused() {
|
if !match self.focused() {
|
||||||
ArrangerFocus::Transport => self.transport.handle(from)?,
|
ArrangerFocus::Transport => self.transport.handle(from)?,
|
||||||
ArrangerFocus::Arrangement => self.arrangement.handle(from)?,
|
|
||||||
ArrangerFocus::PhrasePool => self.phrases.handle(from)?,
|
ArrangerFocus::PhrasePool => self.phrases.handle(from)?,
|
||||||
ArrangerFocus::PhraseEditor => self.editor.handle(from)?
|
ArrangerFocus::PhraseEditor => self.editor.handle(from)?,
|
||||||
|
ArrangerFocus::Arrangement => {
|
||||||
|
let mut handle_phrase = ||{
|
||||||
|
let result = self.phrases.handle(from);
|
||||||
|
self.arrangement.phrase_put();
|
||||||
|
result
|
||||||
|
};
|
||||||
|
match from.event() {
|
||||||
|
key!(KeyCode::Char('a')) => handle_phrase()?,
|
||||||
|
key!(KeyCode::Char('i')) => handle_phrase()?,
|
||||||
|
key!(KeyCode::Char('d')) => handle_phrase()?,
|
||||||
|
_ => self.arrangement.handle(from)?
|
||||||
|
}
|
||||||
|
},
|
||||||
}.unwrap_or(false) {
|
}.unwrap_or(false) {
|
||||||
match from.event() {
|
match from.event() {
|
||||||
// Tab navigation
|
// Tab navigation
|
||||||
|
|
@ -46,7 +58,7 @@ impl Handle<Tui> for Arranger<Tui> {
|
||||||
key!(KeyCode::Left) => { self.focus_left(); },
|
key!(KeyCode::Left) => { self.focus_left(); },
|
||||||
key!(KeyCode::Right) => { self.focus_right(); },
|
key!(KeyCode::Right) => { self.focus_right(); },
|
||||||
// Put selected phrase at position
|
// Put selected phrase at position
|
||||||
key!(KeyCode::Char('s')) => { self.arrangement.phrase_put(); },
|
key!(KeyCode::Char('s')) => { self.arrangement.phrase_put(); },
|
||||||
// Global play/pause binding
|
// Global play/pause binding
|
||||||
key!(KeyCode::Char(' ')) => match self.transport {
|
key!(KeyCode::Char(' ')) => match self.transport {
|
||||||
Some(ref mut transport) => { transport.write().unwrap().toggle_play()?; },
|
Some(ref mut transport) => { transport.write().unwrap().toggle_play()?; },
|
||||||
|
|
|
||||||
|
|
@ -124,12 +124,12 @@ impl Handle<Tui> for PhrasePool<Tui> {
|
||||||
let mut phrase = Phrase::default();
|
let mut phrase = Phrase::default();
|
||||||
phrase.name = Arc::new(RwLock::new("(no name)".to_string()));
|
phrase.name = Arc::new(RwLock::new("(no name)".to_string()));
|
||||||
phrase.color = random_color();
|
phrase.color = random_color();
|
||||||
self.phrases.insert(self.phrase, Arc::new(RwLock::new(phrase)));
|
self.phrases.insert(self.phrase + 1, Arc::new(RwLock::new(phrase)));
|
||||||
self.phrase += 1;
|
self.phrase += 1;
|
||||||
},
|
},
|
||||||
key!(KeyCode::Char('d')) => { // insert duplicate
|
key!(KeyCode::Char('d')) => { // insert duplicate
|
||||||
let phrase = (*self.phrases[self.phrase].read().unwrap()).clone();
|
let phrase = (*self.phrases[self.phrase].read().unwrap()).clone();
|
||||||
self.phrases.insert(self.phrase, Arc::new(RwLock::new(phrase)));
|
self.phrases.insert(self.phrase + 1, Arc::new(RwLock::new(phrase)));
|
||||||
self.phrase += 1;
|
self.phrase += 1;
|
||||||
},
|
},
|
||||||
key!(KeyCode::Char('c')) => { // change color
|
key!(KeyCode::Char('c')) => { // change color
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue