Feat: mixed bag

This commit is contained in:
2026-02-25 20:31:36 +01:00
parent a6ff19bb08
commit 0119988d7c
25 changed files with 246 additions and 10 deletions

View File

@@ -204,6 +204,9 @@ pub(super) fn handle_modal_input(ctx: &mut InputContext, key: KeyEvent) -> Input
.map(|e| (e.name.clone(), e.path.clone()))
.collect();
let _ = ctx.audio_tx.load().send(crate::engine::AudioCommand::LoadSamples(index));
if let Some(sf2_path) = doux::soundfont::find_sf2_file(&path) {
let _ = ctx.audio_tx.load().send(crate::engine::AudioCommand::LoadSoundfont(sf2_path));
}
ctx.app.audio.config.sample_count += count;
ctx.app.audio.add_sample_path(path);
if let Some(registry) = ctx.app.audio.sample_registry.clone() {
@@ -376,6 +379,7 @@ pub(super) fn handle_modal_input(ctx: &mut InputContext, key: KeyEvent) -> Input
pattern,
field,
name,
description,
length,
speed,
quantization,
@@ -423,6 +427,7 @@ pub(super) fn handle_modal_input(ctx: &mut InputContext, key: KeyEvent) -> Input
},
KeyCode::Char(c) => match field {
PatternPropsField::Name => name.push(c),
PatternPropsField::Description => description.push(c),
PatternPropsField::Length if c.is_ascii_digit() => length.push(c),
_ => {}
},
@@ -430,6 +435,9 @@ pub(super) fn handle_modal_input(ctx: &mut InputContext, key: KeyEvent) -> Input
PatternPropsField::Name => {
name.pop();
}
PatternPropsField::Description => {
description.pop();
}
PatternPropsField::Length => {
length.pop();
}
@@ -441,6 +449,11 @@ pub(super) fn handle_modal_input(ctx: &mut InputContext, key: KeyEvent) -> Input
} else {
Some(name.clone())
};
let desc_val = if description.is_empty() {
None
} else {
Some(description.clone())
};
let length_val = length.parse().ok();
let speed_val = *speed;
let quant_val = *quantization;
@@ -450,6 +463,7 @@ pub(super) fn handle_modal_input(ctx: &mut InputContext, key: KeyEvent) -> Input
bank,
pattern,
name: name_val,
description: desc_val,
length: length_val,
speed: speed_val,
quantization: quant_val,
@@ -625,5 +639,8 @@ fn rename_command(target: &RenameTarget, name: Option<String>) -> AppCommand {
RenameTarget::Step { bank, pattern, step } => AppCommand::RenameStep {
bank: *bank, pattern: *pattern, step: *step, name,
},
RenameTarget::DescribePattern { bank, pattern } => AppCommand::DescribePattern {
bank: *bank, pattern: *pattern, description: name,
},
}
}