add Modal::Message to handle errors

This commit is contained in:
🪞👃🪞 2025-05-04 16:38:34 +03:00
parent a77536c234
commit 0a090765d3
4 changed files with 43 additions and 16 deletions

View file

@ -405,14 +405,16 @@ impl Tek {
match index {
0 => {
let jack = self.jack.clone();
self.track_mut()
.expect("no active track")
.devices
.push({
let sampler = Sampler::new(&jack, &"sampler", &[], &[&[], &[]], &[&[], &[]])?;
Device::Sampler(sampler)
});
self.modal = None;
let sampler = if let Ok(sampler) = Sampler::new(
&jack, &"sampler", &[], &[&[], &[]], &[&[], &[]]
) {
self.modal = None;
Device::Sampler(sampler)
} else {
self.modal = Some(Modal::Message(Message::FailedToAddDevice));
return Err("failed to add device".into())
};
self.track_mut().expect("no active track").devices.push(sampler);
Ok(())
},
1 => todo!(),
@ -458,9 +460,20 @@ pub trait HasSelection {
pub enum Modal {
Help,
Menu,
Device(usize)
Device(usize),
Message(Message)
}
/// Various possible messages
#[derive(PartialEq, Clone, Copy, Debug)]
pub enum Message {
FailedToAddDevice,
}
content!(TuiOut: |self: Message| match self {
Self::FailedToAddDevice => "Failed to add device"
});
/// Represents the current user selection in the arranger
#[derive(PartialEq, Clone, Copy, Debug, Default)]
pub enum Selection {