implement phrase_next/phrase_prev

This commit is contained in:
🪞👃🪞 2024-10-14 22:53:12 +03:00
parent 05e0299f5f
commit 6accb265d9

View file

@ -309,52 +309,30 @@ impl<E: Engine> Arrangement<E> {
}
}
pub fn phrase_next (&mut self) {
todo!("phrase_next");
//let track_index = self.selected.track();
//let scene_index = self.selected.scene();
//track_index
//.and_then(|index|self.tracks.get_mut(index).map(|track|(index, track)))
//.and_then(|(track_index, track)|{
//let phrases = track.phrases.len();
//scene_index
//.and_then(|index|self.scenes.get_mut(index))
//.and_then(|scene|{
//if let Some(phrase_index) = scene.clips[track_index] {
//if phrase_index >= phrases - 1 {
//scene.clips[track_index] = None;
//} else {
//scene.clips[track_index] = Some(phrase_index + 1);
//}
//} else if phrases > 0 {
//scene.clips[track_index] = Some(0);
//}
//Some(())
//})
//});
if let ArrangementFocus::Clip(track, scene) = self.selected {
if let Some(ref mut phrase) = self.scenes[scene].clips[track] {
let phrases = self.phrases.read().unwrap();
let index = phrases.index_of(&*phrase.read().unwrap());
if let Some(index) = index {
if index < phrases.phrases.len().saturating_sub(1) {
*phrase = phrases.phrases[index + 1].clone();
}
}
}
}
}
pub fn phrase_prev (&mut self) {
todo!("phrase_prev");
//let track_index = self.selected.track();
//let scene_index = self.selected.scene();
//track_index
//.and_then(|index|self.tracks.get_mut(index).map(|track|(index, track)))
//.and_then(|(track_index, track)|{
//let phrases = track.phrases.len();
//scene_index
//.and_then(|index|self.scenes.get_mut(index))
//.and_then(|scene|{
//if let Some(phrase_index) = scene.clips[track_index] {
//scene.clips[track_index] = if phrase_index == 0 {
//None
//} else {
//Some(phrase_index - 1)
//};
//} else if phrases > 0 {
//scene.clips[track_index] = Some(phrases - 1);
//}
//Some(())
//})
//});
if let ArrangementFocus::Clip(track, scene) = self.selected {
if let Some(ref mut phrase) = self.scenes[scene].clips[track] {
let phrases = self.phrases.read().unwrap();
let index = phrases.index_of(&*phrase.read().unwrap());
if let Some(index) = index {
if index > 0 {
*phrase = phrases.phrases[index - 1].clone();
}
}
}
}
}
}
impl<E: Engine> ArrangementTrack<E> {