enter/escape

This commit is contained in:
🪞👃🪞 2024-07-03 17:41:16 +03:00
parent c3c6c13f57
commit 7bc396e748

View file

@ -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> {