implement deleting of tracks and scenes

This commit is contained in:
🪞👃🪞 2024-10-18 16:14:18 +03:00
parent 0b71a57ead
commit a0eef1f626
2 changed files with 47 additions and 50 deletions

View file

@ -97,6 +97,26 @@ impl<E: Engine> Arranger<E> {
}
Ok(Some(true))
}
pub fn rename_selected (&mut self) {
let Arrangement { selected, ref name, ref tracks, ref scenes, .. } = self.arrangement;
todo!("rename selected");
//self.modal = match selected {
//ArrangementFocus::Mix => {
//Some(Box::new(ArrangerRenameModal::new(selected, &*name.read().unwrap())))
//},
//ArrangementFocus::Track(t) => {
//Some(Box::new(ArrangerRenameModal::new(selected, &*tracks[t].name.read().unwrap())))
//},
//ArrangementFocus::Scene(s) => {
//Some(Box::new(ArrangerRenameModal::new(selected, &*scenes[s].name.read().unwrap())))
//},
//ArrangementFocus::Clip(t, s) => if let Some(ref clip) = scenes[s].clips[t] {
//Some(Box::new(ArrangerRenameModal::new(selected, &clip.read().unwrap().name)))
//} else {
//None
//}
//};
}
}
/// Focus layout of arranger app
impl<E: Engine> FocusGrid<ArrangerFocus> for Arranger<E> {
@ -260,7 +280,12 @@ impl<E: Engine> Arrangement<E> {
Ok(&mut self.tracks[index])
}
pub fn track_del (&mut self) {
unimplemented!("Arranger::track_del");
if let Some(index) = self.selected.track() {
self.tracks.remove(index);
for scene in self.scenes.iter_mut() {
scene.clips.remove(index);
}
}
}
pub fn track_default_name (&self) -> String {
format!("Track {}", self.tracks.len() + 1)
@ -299,7 +324,9 @@ impl<E: Engine> Arrangement<E> {
Ok(&mut self.scenes[index])
}
pub fn scene_del (&mut self) {
unimplemented!("Arranger::scene_del");
if let Some(index) = self.selected.scene() {
self.scenes.remove(index);
}
}
pub fn scene_default_name (&self) -> String {
format!("Scene {}", self.scenes.len() + 1)