mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
stub save/load/options
This commit is contained in:
parent
6f6078e25a
commit
57102d7e6b
7 changed files with 54 additions and 15 deletions
|
|
@ -6,7 +6,7 @@
|
||||||
(@shift-O output add)
|
(@shift-O output add)
|
||||||
(@shift-S scene add)
|
(@shift-S scene add)
|
||||||
(@shift-T track add)
|
(@shift-T track add)
|
||||||
(@shift-Z device picker)
|
(@shift-D device picker)
|
||||||
|
|
||||||
(@up select :select-scene-prev)
|
(@up select :select-scene-prev)
|
||||||
(@down select :select-scene-next)
|
(@down select :select-scene-next)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
(@esc device select-cancel)
|
(@esc device cancel)
|
||||||
(@up device pick :device-kind-prev)
|
(@up device pick :device-kind-prev)
|
||||||
(@down device pick :device-kind-next)
|
(@down device pick :device-kind-next)
|
||||||
(@enter device add :device-kind)
|
(@enter device add :device-kind)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
(@esc toggle-menu)
|
(@esc toggle-dialog :dialog-menu)
|
||||||
(@f1 toggle-help)
|
(@f1 toggle-dialog :dialog-help)
|
||||||
|
(@f6 toggle-dialog :dialog-save)
|
||||||
|
(@f8 toggle-dialog :dialog-options)
|
||||||
|
(@f9 toggle-dialog :dialog-load)
|
||||||
|
(@f10 toggle-dialog :dialog-quit)
|
||||||
|
|
||||||
(@u undo 1)
|
(@u undo 1)
|
||||||
(@shift-u redo 1)
|
(@shift-u redo 1)
|
||||||
|
|
|
||||||
|
|
@ -1 +1,3 @@
|
||||||
(@r sampler record/toggle :sample)
|
(@r sampler record/toggle :sample)
|
||||||
|
(@tab focus-next)
|
||||||
|
(@shift-tab focus-prev)
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,21 @@ handle!(TuiIn: |self: App, input|Ok(if let Some(command) = self.config.keys.comm
|
||||||
fn focus_pool_length (&self) -> bool {
|
fn focus_pool_length (&self) -> bool {
|
||||||
matches!(self.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), Some(PoolMode::Length(..)))
|
matches!(self.pool.as_ref().map(|p|p.mode.as_ref()).flatten(), Some(PoolMode::Length(..)))
|
||||||
}
|
}
|
||||||
|
fn dialog_help (&self) -> Dialog {
|
||||||
|
Dialog::Help
|
||||||
|
}
|
||||||
|
fn dialog_menu (&self) -> Dialog {
|
||||||
|
Dialog::Menu
|
||||||
|
}
|
||||||
|
fn dialog_save (&self) -> Dialog {
|
||||||
|
Dialog::Save
|
||||||
|
}
|
||||||
|
fn dialog_load (&self) -> Dialog {
|
||||||
|
Dialog::Load
|
||||||
|
}
|
||||||
|
fn dialog_options (&self) -> Dialog {
|
||||||
|
Dialog::Options
|
||||||
|
}
|
||||||
fn editor_pitch (&self) -> Option<u7> {
|
fn editor_pitch (&self) -> Option<u7> {
|
||||||
Some((self.editor().map(|e|e.get_note_pos()).unwrap() as u8).into())
|
Some((self.editor().map(|e|e.get_note_pos()).unwrap() as u8).into())
|
||||||
}
|
}
|
||||||
|
|
@ -203,15 +218,11 @@ handle!(TuiIn: |self: App, input|Ok(if let Some(command) = self.config.keys.comm
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tengri_proc::command(App)] impl AppCommand {
|
#[tengri_proc::command(App)] impl AppCommand {
|
||||||
fn toggle_help (app: &mut App) -> Perhaps<Self> {
|
fn toggle_dialog (app: &mut App, dialog: Dialog) -> Perhaps<Self> {
|
||||||
app.toggle_dialog(Some(Dialog::Help));
|
app.toggle_dialog(Some(dialog));
|
||||||
Ok(None)
|
Ok(None)
|
||||||
}
|
}
|
||||||
fn toggle_menu (app: &mut App) -> Perhaps<Self> {
|
fn toggle_editor (app: &mut App, value: bool) -> Perhaps<Self> {
|
||||||
app.toggle_dialog(Some(Dialog::Menu));
|
|
||||||
Ok(None)
|
|
||||||
}
|
|
||||||
fn toggle_edit (app: &mut App, value: bool) -> Perhaps<Self> {
|
|
||||||
app.toggle_editor(Some(value));
|
app.toggle_editor(Some(value));
|
||||||
Ok(None)
|
Ok(None)
|
||||||
}
|
}
|
||||||
|
|
@ -346,6 +357,10 @@ impl<'state> Context<'state, SamplerCommand> for App {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[tengri_proc::command(App)] impl DeviceCommand {
|
#[tengri_proc::command(App)] impl DeviceCommand {
|
||||||
|
fn cancel (app: &mut App) -> Perhaps<Self> {
|
||||||
|
app.dialog = None;
|
||||||
|
Ok(None)
|
||||||
|
}
|
||||||
fn picker (app: &mut App) -> Perhaps<Self> {
|
fn picker (app: &mut App) -> Perhaps<Self> {
|
||||||
app.device_picker_show();
|
app.device_picker_show();
|
||||||
Ok(None)
|
Ok(None)
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,10 @@ pub enum Dialog {
|
||||||
Help,
|
Help,
|
||||||
Menu,
|
Menu,
|
||||||
Device(usize),
|
Device(usize),
|
||||||
Message(Message)
|
Message(Message),
|
||||||
|
Save,
|
||||||
|
Load,
|
||||||
|
Options,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Various possible messages
|
/// Various possible messages
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,9 @@ impl App {
|
||||||
.enclose(self.dialog.as_ref().map(|dialog|match dialog {
|
.enclose(self.dialog.as_ref().map(|dialog|match dialog {
|
||||||
Dialog::Menu => self.view_dialog_menu().boxed(),
|
Dialog::Menu => self.view_dialog_menu().boxed(),
|
||||||
Dialog::Help => self.view_dialog_help().boxed(),
|
Dialog::Help => self.view_dialog_help().boxed(),
|
||||||
|
Dialog::Save => self.view_dialog_save().boxed(),
|
||||||
|
Dialog::Load => self.view_dialog_load().boxed(),
|
||||||
|
Dialog::Options => self.view_dialog_options().boxed(),
|
||||||
Dialog::Device(index) => self.view_dialog_device(*index).boxed(),
|
Dialog::Device(index) => self.view_dialog_device(*index).boxed(),
|
||||||
Dialog::Message(message) => self.view_dialog_message(message).boxed(),
|
Dialog::Message(message) => self.view_dialog_message(message).boxed(),
|
||||||
}))
|
}))
|
||||||
|
|
@ -115,6 +118,18 @@ impl App {
|
||||||
Bsp::s(message, Bsp::s("", "[ OK ]"))
|
Bsp::s(message, Bsp::s("", "[ OK ]"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn view_dialog_save <'a> (&'a self) -> impl Content<TuiOut> + use<'a> {
|
||||||
|
"WIP: SAVE"
|
||||||
|
}
|
||||||
|
|
||||||
|
fn view_dialog_load <'a> (&'a self) -> impl Content<TuiOut> + use<'a> {
|
||||||
|
"WIP: LOAD"
|
||||||
|
}
|
||||||
|
|
||||||
|
fn view_dialog_options <'a> (&'a self) -> impl Content<TuiOut> + use<'a> {
|
||||||
|
"WIP: OPTIONS"
|
||||||
|
}
|
||||||
|
|
||||||
/// Spacing between tracks.
|
/// Spacing between tracks.
|
||||||
pub(crate) const TRACK_SPACING: usize = 0;
|
pub(crate) const TRACK_SPACING: usize = 0;
|
||||||
|
|
||||||
|
|
@ -289,8 +304,8 @@ impl<'a> ArrangerView<'a> {
|
||||||
pub(crate) fn devices (&'a self) -> impl Content<TuiOut> + 'a {
|
pub(crate) fn devices (&'a self) -> impl Content<TuiOut> + 'a {
|
||||||
let Self { width_side, width_mid, track_count, track_selected, is_editing, .. } = self;
|
let Self { width_side, width_mid, track_count, track_selected, is_editing, .. } = self;
|
||||||
Tryptich::top(1)
|
Tryptich::top(1)
|
||||||
.left(*width_side, button_3("z", "devices", format!("{}", 0), *is_editing))
|
.left(*width_side, button_3("d", "devices", format!("{}", 0), *is_editing))
|
||||||
.right(*width_side, button_2("Z", "add device", *is_editing))
|
.right(*width_side, button_2("D", "add device", *is_editing))
|
||||||
.middle(*width_mid, per_track_top(*width_mid, ||self.tracks_with_sizes_scrolled(),
|
.middle(*width_mid, per_track_top(*width_mid, ||self.tracks_with_sizes_scrolled(),
|
||||||
move|index, track|{
|
move|index, track|{
|
||||||
let bg = if *track_selected == Some(index) {
|
let bg = if *track_selected == Some(index) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue