mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 11:46:41 +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],
|
||||
[Delete, CONTROL, "delete", "delete track", delete],
|
||||
[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('r'), NONE, "record_toggle", "toggle recording", record_toggle],
|
||||
[Char('d'), NONE, "overdub_toggle", "toggle overdub", overdub_toggle],
|
||||
|
|
@ -211,33 +212,45 @@ fn focus_prev (app: &mut App) -> Usually<bool> {
|
|||
Ok(true)
|
||||
}
|
||||
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> {
|
||||
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> {
|
||||
match app.section {
|
||||
0 => {
|
||||
app.track_cursor = if app.track_cursor == 0 {
|
||||
app.tracks.len()
|
||||
} else {
|
||||
app.track_cursor
|
||||
} - 1;
|
||||
Ok(true)
|
||||
}
|
||||
0 => match app.grid_mode {
|
||||
false => {app.track_cursor = app.track_cursor.saturating_sub(1); Ok(true)},
|
||||
true => {app.scene_cursor = app.scene_cursor.saturating_sub(1); Ok(true)},
|
||||
},
|
||||
_ => Ok(false)
|
||||
}
|
||||
}
|
||||
fn cursor_right (app: &mut App) -> Usually<bool> {
|
||||
match app.section {
|
||||
0 => {
|
||||
app.track_cursor = if app.track_cursor >= app.tracks.len() {
|
||||
0
|
||||
} else {
|
||||
app.track_cursor + 1
|
||||
};
|
||||
Ok(true)
|
||||
0 => match app.grid_mode {
|
||||
false => {app.track_cursor = app.tracks.len().min(app.track_cursor + 1); Ok(true)},
|
||||
true => {app.scene_cursor = app.scenes.len().min(app.scene_cursor + 1); Ok(true)},
|
||||
},
|
||||
_ => Ok(false)
|
||||
}
|
||||
|
|
@ -261,18 +274,36 @@ fn delete (app: &mut App) -> Usually<bool> {
|
|||
}
|
||||
}
|
||||
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 add_scene (app: &mut App) -> Usually<bool> {
|
||||
let name = format!("Scene {}", app.scenes.len() + 1);
|
||||
app.scenes.push(Scene::new(&name, vec![]));
|
||||
app.scene_cursor = app.scenes.len() - 1;
|
||||
app.scene_cursor = app.scenes.len();
|
||||
Ok(true)
|
||||
}
|
||||
fn add_track (app: &mut App) -> Usually<bool> {
|
||||
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.track_cursor = app.tracks.len() - 1;
|
||||
app.track_cursor = app.tracks.len();
|
||||
Ok(true)
|
||||
}
|
||||
fn delete_track (app: &mut App) -> Usually<bool> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue