don't crash on add track/scene

This commit is contained in:
🪞👃🪞 2024-07-12 14:46:20 +03:00
parent 5a9ec0a63d
commit 6a738375e2
9 changed files with 205 additions and 207 deletions

View file

@ -1,5 +1,4 @@
use crate::core::*;
use crate::model::*;
use crate::{core::*, model::*};
impl App {
pub fn next_track (&mut self) {
@ -8,32 +7,29 @@ impl App {
pub fn prev_track (&mut self) {
self.track_cursor = self.track_cursor.saturating_sub(1);
}
pub fn new_track_name (&self) -> String {
format!("Track {}", self.tracks.len() + 1)
}
pub fn add_track (&mut self, name: Option<&str>) -> Usually<&mut Track> {
let name = name.ok_or_else(||self.new_track_name())?;
self.tracks.push(Track::new(&name, None, None)?);
self.tracks.push(match name {
Some(name) => Track::new(name, None, None)?,
None => Track::new(&self.new_track_name(), None, None)?
});
self.track_cursor = self.tracks.len();
Ok(&mut self.tracks[self.track_cursor - 1])
}
pub fn track (&self) -> Option<(usize, &Track)> {
match self.track_cursor { 0 => None, _ => {
let id = self.track_cursor as usize - 1;
self.tracks.get(id).map(|t|(id, t))
} }
}
pub fn track_mut (&mut self) -> Option<(usize, &mut Track)> {
match self.track_cursor { 0 => None, _ => {
let id = self.track_cursor as usize - 1;
self.tracks.get_mut(id).map(|t|(id, t))
} }
}
}
pub struct Track {