mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-07 12:16:42 +01:00
enter/escape
This commit is contained in:
parent
c3c6c13f57
commit
7bc396e748
1 changed files with 52 additions and 21 deletions
73
src/main.rs
73
src/main.rs
|
|
@ -174,7 +174,8 @@ const KEYMAP: &'static [KeyBinding<App>] = keymap!(App {
|
||||||
[Char(','), NONE, "decrement", "decrement value at cursor", decrement],
|
[Char(','), NONE, "decrement", "decrement value at cursor", decrement],
|
||||||
[Delete, CONTROL, "delete", "delete track", delete],
|
[Delete, CONTROL, "delete", "delete track", delete],
|
||||||
[Char('d'), CONTROL, "duplicate", "duplicate scene or track", duplicate],
|
[Char('d'), CONTROL, "duplicate", "duplicate scene or track", duplicate],
|
||||||
[Enter, NONE, "activate", "activate item at cursor", activate],
|
[Enter, NONE, "activate", "activate item at cursor", enter],
|
||||||
|
[Esc, NONE, "escape", "unfocus", escape],
|
||||||
[Char(' '), NONE, "play_toggle", "play or pause", play_toggle],
|
[Char(' '), NONE, "play_toggle", "play or pause", play_toggle],
|
||||||
[Char('r'), NONE, "record_toggle", "toggle recording", record_toggle],
|
[Char('r'), NONE, "record_toggle", "toggle recording", record_toggle],
|
||||||
[Char('d'), NONE, "overdub_toggle", "toggle overdub", overdub_toggle],
|
[Char('d'), NONE, "overdub_toggle", "toggle overdub", overdub_toggle],
|
||||||
|
|
@ -211,33 +212,45 @@ fn focus_prev (app: &mut App) -> Usually<bool> {
|
||||||
Ok(true)
|
Ok(true)
|
||||||
}
|
}
|
||||||
fn cursor_up (app: &mut App) -> Usually<bool> {
|
fn cursor_up (app: &mut App) -> Usually<bool> {
|
||||||
focus_prev(app)
|
if app.entered {
|
||||||
|
match app.section {
|
||||||
|
0 => match app.grid_mode {
|
||||||
|
false => {app.scene_cursor = app.scene_cursor.saturating_sub(1); Ok(true)},
|
||||||
|
true => {app.track_cursor = app.track_cursor.saturating_sub(1); Ok(true)},
|
||||||
|
},
|
||||||
|
_ => Ok(false)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
focus_prev(app)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fn cursor_down (app: &mut App) -> Usually<bool> {
|
fn cursor_down (app: &mut App) -> Usually<bool> {
|
||||||
focus_next(app)
|
if app.entered {
|
||||||
|
match app.section {
|
||||||
|
0 => match app.grid_mode {
|
||||||
|
false => {app.scene_cursor = app.scenes.len().min(app.scene_cursor + 1); Ok(true)},
|
||||||
|
true => {app.track_cursor = app.tracks.len().min(app.track_cursor + 1); Ok(true)},
|
||||||
|
},
|
||||||
|
_ => Ok(false)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
focus_next(app)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fn cursor_left (app: &mut App) -> Usually<bool> {
|
fn cursor_left (app: &mut App) -> Usually<bool> {
|
||||||
match app.section {
|
match app.section {
|
||||||
0 => {
|
0 => match app.grid_mode {
|
||||||
app.track_cursor = if app.track_cursor == 0 {
|
false => {app.track_cursor = app.track_cursor.saturating_sub(1); Ok(true)},
|
||||||
app.tracks.len()
|
true => {app.scene_cursor = app.scene_cursor.saturating_sub(1); Ok(true)},
|
||||||
} else {
|
},
|
||||||
app.track_cursor
|
|
||||||
} - 1;
|
|
||||||
Ok(true)
|
|
||||||
}
|
|
||||||
_ => Ok(false)
|
_ => Ok(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn cursor_right (app: &mut App) -> Usually<bool> {
|
fn cursor_right (app: &mut App) -> Usually<bool> {
|
||||||
match app.section {
|
match app.section {
|
||||||
0 => {
|
0 => match app.grid_mode {
|
||||||
app.track_cursor = if app.track_cursor >= app.tracks.len() {
|
false => {app.track_cursor = app.tracks.len().min(app.track_cursor + 1); Ok(true)},
|
||||||
0
|
true => {app.scene_cursor = app.scenes.len().min(app.scene_cursor + 1); Ok(true)},
|
||||||
} else {
|
|
||||||
app.track_cursor + 1
|
|
||||||
};
|
|
||||||
Ok(true)
|
|
||||||
},
|
},
|
||||||
_ => Ok(false)
|
_ => Ok(false)
|
||||||
}
|
}
|
||||||
|
|
@ -261,18 +274,36 @@ fn delete (app: &mut App) -> Usually<bool> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fn duplicate (_: &mut App) -> Usually<bool> { Ok(true) }
|
fn duplicate (_: &mut App) -> Usually<bool> { Ok(true) }
|
||||||
fn activate (_: &mut App) -> Usually<bool> { Ok(true) }
|
fn enter (app: &mut App) -> Usually<bool> {
|
||||||
|
if app.entered {
|
||||||
|
activate(app)
|
||||||
|
} else {
|
||||||
|
app.entered = true;
|
||||||
|
Ok(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fn activate (_: &mut App) -> Usually<bool> {
|
||||||
|
Ok(true)
|
||||||
|
}
|
||||||
|
fn escape (app: &mut App) -> Usually<bool> {
|
||||||
|
if app.entered {
|
||||||
|
app.entered = false;
|
||||||
|
Ok(true)
|
||||||
|
} else {
|
||||||
|
Ok(false)
|
||||||
|
}
|
||||||
|
}
|
||||||
fn rename (_: &mut App) -> Usually<bool> { Ok(true) }
|
fn rename (_: &mut App) -> Usually<bool> { Ok(true) }
|
||||||
fn add_scene (app: &mut App) -> Usually<bool> {
|
fn add_scene (app: &mut App) -> Usually<bool> {
|
||||||
let name = format!("Scene {}", app.scenes.len() + 1);
|
let name = format!("Scene {}", app.scenes.len() + 1);
|
||||||
app.scenes.push(Scene::new(&name, vec![]));
|
app.scenes.push(Scene::new(&name, vec![]));
|
||||||
app.scene_cursor = app.scenes.len() - 1;
|
app.scene_cursor = app.scenes.len();
|
||||||
Ok(true)
|
Ok(true)
|
||||||
}
|
}
|
||||||
fn add_track (app: &mut App) -> Usually<bool> {
|
fn add_track (app: &mut App) -> Usually<bool> {
|
||||||
let name = format!("Track {}", app.tracks.len() + 1);
|
let name = format!("Track {}", app.tracks.len() + 1);
|
||||||
app.tracks.push(Track::new(&name, app.jack.as_ref().unwrap().as_client(), &app.timebase, None, None)?);
|
app.tracks.push(Track::new(&name, app.jack.as_ref().unwrap().as_client(), &app.timebase, None, None)?);
|
||||||
app.track_cursor = app.tracks.len() - 1;
|
app.track_cursor = app.tracks.len();
|
||||||
Ok(true)
|
Ok(true)
|
||||||
}
|
}
|
||||||
fn delete_track (app: &mut App) -> Usually<bool> {
|
fn delete_track (app: &mut App) -> Usually<bool> {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue