mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
86 lines
2.8 KiB
Rust
86 lines
2.8 KiB
Rust
use crate::*;
|
|
|
|
handle!(Arranger |self, e| {
|
|
match self.modal.as_mut() {
|
|
Some(modal) => {
|
|
let result = modal.handle(e)?;
|
|
if modal.exited() {
|
|
self.modal = None;
|
|
}
|
|
Ok(result)
|
|
},
|
|
None => handle_keymap(self, e, KEYMAP_ARRANGER)
|
|
}
|
|
});
|
|
|
|
/// Key bindings for arranger section.
|
|
pub const KEYMAP_ARRANGER: &'static [KeyBinding<Arranger>] = keymap!(Arranger {
|
|
[Char('`'), NONE, "mode_switch", "switch the display mode", |arranger: &mut Arranger| {
|
|
arranger.mode.to_next();
|
|
Ok(true)
|
|
}],
|
|
[Up, NONE, "cursor_up", "move cursor up", |arranger: &mut Arranger| {
|
|
match arranger.mode {
|
|
ArrangerViewMode::Horizontal => arranger.track_prev(),
|
|
_ => arranger.scene_prev(),
|
|
};
|
|
arranger.show_phrase()?;
|
|
Ok(true)
|
|
}],
|
|
[Down, NONE, "cursor_down", "move cursor down", |arranger: &mut Arranger| {
|
|
match arranger.mode {
|
|
ArrangerViewMode::Horizontal => arranger.track_next(),
|
|
_ => arranger.scene_next(),
|
|
};
|
|
arranger.show_phrase()?;
|
|
Ok(true)
|
|
}],
|
|
[Left, NONE, "cursor_left", "move cursor left", |arranger: &mut Arranger| {
|
|
match arranger.mode {
|
|
ArrangerViewMode::Horizontal => arranger.scene_prev(),
|
|
_ => arranger.track_prev(),
|
|
};
|
|
arranger.show_phrase()?;
|
|
Ok(true)
|
|
}],
|
|
[Right, NONE, "cursor_right", "move cursor right", |arranger: &mut Arranger| {
|
|
match arranger.mode {
|
|
ArrangerViewMode::Horizontal => arranger.scene_next(),
|
|
_ => arranger.track_next(),
|
|
};
|
|
arranger.show_phrase()?;
|
|
Ok(true)
|
|
}],
|
|
[Char('.'), NONE, "increment", "set next clip at cursor", |arranger: &mut Arranger| {
|
|
arranger.phrase_next();
|
|
Ok(true)
|
|
}],
|
|
[Char(','), NONE, "decrement", "set previous clip at cursor", |arranger: &mut Arranger| {
|
|
arranger.phrase_prev();
|
|
Ok(true)
|
|
}],
|
|
[Enter, NONE, "activate", "activate item at cursor", |arranger: &mut Arranger| {
|
|
arranger.activate();
|
|
Ok(true)
|
|
}],
|
|
[Char('a'), CONTROL, "scene_add", "add a new scene", |arranger: &mut Arranger| {
|
|
arranger.scene_add(None)?;
|
|
Ok(true)
|
|
}],
|
|
[Char('t'), CONTROL, "track_add", "add a new track", |arranger: &mut Arranger| {
|
|
arranger.track_add(None)?;
|
|
Ok(true)
|
|
}],
|
|
[Char('n'), NONE, "rename", "rename item at cursor", |arranger: &mut Arranger| {
|
|
arranger.rename_selected();
|
|
Ok(true)
|
|
}],
|
|
[Char('l'), NONE, "length", "set length of item at cursor", |arranger: &mut Arranger| {
|
|
todo!();
|
|
Ok(true)
|
|
}],
|
|
[Char('c'), NONE, "color", "set color of item at cursor", |arranger: &mut Arranger| {
|
|
todo!();
|
|
Ok(true)
|
|
}]
|
|
});
|