Feat: bank / pattern import / export feature + documentation

This commit is contained in:
2026-02-26 00:20:46 +01:00
parent 6dd265067f
commit 71bd09d5ea
15 changed files with 412 additions and 3 deletions

View File

@@ -236,6 +236,14 @@ pub(super) fn handle_main_page(ctx: &mut InputContext, key: KeyEvent, ctrl: bool
KeyCode::Char('D') => {
ctx.dispatch(AppCommand::EvaluatePrelude);
}
KeyCode::Char('g') => {
let (bank, pattern) = (ctx.app.editor_ctx.bank, ctx.app.editor_ctx.pattern);
ctx.dispatch(AppCommand::SharePattern { bank, pattern });
}
KeyCode::Char('G') => {
let (bank, pattern) = (ctx.app.editor_ctx.bank, ctx.app.editor_ctx.pattern);
ctx.dispatch(AppCommand::ImportPattern { bank, pattern });
}
_ => {}
}
InputResult::Continue

View File

@@ -638,6 +638,9 @@ fn execute_confirm(ctx: &mut InputContext, action: &ConfirmAction) -> InputResul
ConfirmAction::ResetBanks { banks } => {
ctx.dispatch(AppCommand::ResetBanks { banks: banks.clone() });
}
ConfirmAction::ImportBank { bank } => {
ctx.dispatch(AppCommand::ImportBank { bank: *bank });
}
}
ctx.dispatch(AppCommand::CloseModal);
InputResult::Continue

View File

@@ -265,6 +265,33 @@ pub(super) fn handle_patterns_page(ctx: &mut InputContext, key: KeyEvent) -> Inp
ctx.dispatch(AppCommand::ClearSolos);
ctx.app.send_mute_state(ctx.seq_cmd_tx);
}
KeyCode::Char('g') => {
let bank = ctx.app.patterns_nav.bank_cursor;
match ctx.app.patterns_nav.column {
PatternsColumn::Patterns => {
let pattern = ctx.app.patterns_nav.pattern_cursor;
ctx.dispatch(AppCommand::SharePattern { bank, pattern });
}
PatternsColumn::Banks => {
ctx.dispatch(AppCommand::ShareBank { bank });
}
}
}
KeyCode::Char('G') => {
let bank = ctx.app.patterns_nav.bank_cursor;
match ctx.app.patterns_nav.column {
PatternsColumn::Patterns => {
let pattern = ctx.app.patterns_nav.pattern_cursor;
ctx.dispatch(AppCommand::ImportPattern { bank, pattern });
}
PatternsColumn::Banks => {
ctx.dispatch(AppCommand::OpenModal(Modal::Confirm {
action: ConfirmAction::ImportBank { bank },
selected: false,
}));
}
}
}
KeyCode::Char('s') => super::open_save(ctx),
KeyCode::Char('l') => super::open_load(ctx),
KeyCode::Char('?') => {