mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-09 05:06:43 +01:00
remove VerticalArrangerGrid/Cursor
This commit is contained in:
parent
a4269337bc
commit
0b71a57ead
4 changed files with 196 additions and 205 deletions
|
|
@ -62,7 +62,7 @@ pub struct Scene {
|
|||
#[derive(PartialEq, Clone, Copy)]
|
||||
/// Represents the current user selection in the arranger
|
||||
pub enum ArrangementFocus {
|
||||
/** The whole mix is selected */
|
||||
/// The whole mix is selected
|
||||
Mix,
|
||||
/// A track is selected.
|
||||
Track(usize),
|
||||
|
|
@ -77,19 +77,27 @@ pub enum ArrangementViewMode {
|
|||
Horizontal,
|
||||
Vertical(usize),
|
||||
}
|
||||
/// A collection of phrases to play on each track.
|
||||
/// Arrangement, rendered vertically (session/grid mode).
|
||||
pub struct VerticalArranger<'a, E: Engine>(
|
||||
pub &'a Arrangement<E>, pub usize
|
||||
);
|
||||
pub struct VerticalArrangerGrid<'a>(
|
||||
pub u16, pub &'a [(usize, usize)], pub &'a [(usize, usize)]
|
||||
);
|
||||
pub struct VerticalArrangerCursor<'a>(
|
||||
pub bool, pub ArrangementFocus, pub u16, pub &'a [(usize, usize)], pub &'a [(usize, usize)],
|
||||
);
|
||||
/// Arrangement, rendered horizontally (arrangement/track mode).
|
||||
pub struct HorizontalArranger<'a, E: Engine>(
|
||||
pub &'a Arrangement<E>
|
||||
);
|
||||
impl<E: Engine> Arranger<E> {
|
||||
pub fn edit_phrase (&mut self) {
|
||||
self.editor.phrase = self.arrangement.phrase().clone();
|
||||
self.focus(ArrangerFocus::PhraseEditor);
|
||||
}
|
||||
pub fn toggle_play (&mut self) -> Perhaps<bool> {
|
||||
match self.transport {
|
||||
Some(ref mut transport) => { transport.write().unwrap().toggle_play()?; },
|
||||
None => { return Ok(None) }
|
||||
}
|
||||
Ok(Some(true))
|
||||
}
|
||||
}
|
||||
/// Focus layout of arranger app
|
||||
impl<E: Engine> FocusGrid<ArrangerFocus> for Arranger<E> {
|
||||
fn cursor (&self) -> (usize, usize) { self.focus_cursor }
|
||||
|
|
@ -175,13 +183,53 @@ impl<E: Engine> Arrangement<E> {
|
|||
pub fn is_last_row (&self) -> bool {
|
||||
let selected = self.selected;
|
||||
(self.scenes.len() == 0 && (selected.is_mix() || selected.is_track())) || match selected {
|
||||
ArrangementFocus::Scene(s) =>
|
||||
s == self.scenes.len() - 1,
|
||||
ArrangementFocus::Clip(_, s) =>
|
||||
s == self.scenes.len() - 1,
|
||||
ArrangementFocus::Scene(s) => s == self.scenes.len() - 1,
|
||||
ArrangementFocus::Clip(_, s) => s == self.scenes.len() - 1,
|
||||
_ => false
|
||||
}
|
||||
}
|
||||
pub fn toggle_loop (&mut self) {
|
||||
if let Some(phrase) = self.phrase() {
|
||||
phrase.write().unwrap().toggle_loop()
|
||||
}
|
||||
}
|
||||
pub fn go_up (&mut self) {
|
||||
match self.mode {
|
||||
ArrangementViewMode::Horizontal => self.track_prev(),
|
||||
_ => self.scene_prev(),
|
||||
};
|
||||
self.show_phrase();
|
||||
}
|
||||
pub fn go_down (&mut self) {
|
||||
match self.mode {
|
||||
ArrangementViewMode::Horizontal => self.track_next(),
|
||||
_ => self.scene_next(),
|
||||
};
|
||||
self.show_phrase();
|
||||
}
|
||||
pub fn go_left (&mut self) {
|
||||
match self.mode {
|
||||
ArrangementViewMode::Horizontal => self.scene_prev(),
|
||||
_ => self.track_prev(),
|
||||
};
|
||||
self.show_phrase();
|
||||
}
|
||||
pub fn go_right (&mut self) {
|
||||
match self.mode {
|
||||
ArrangementViewMode::Horizontal => self.scene_next(),
|
||||
_ => self.track_next(),
|
||||
};
|
||||
self.show_phrase();
|
||||
}
|
||||
pub fn move_back (&mut self) {
|
||||
todo!("arrangement: move back")
|
||||
}
|
||||
pub fn move_forward (&mut self) {
|
||||
todo!("arrangement: move forward")
|
||||
}
|
||||
pub fn rename_selected (&mut self) {
|
||||
todo!("arrangement: rename selected")
|
||||
}
|
||||
}
|
||||
/// Methods for tracks in arrangement
|
||||
impl<E: Engine> Arrangement<E> {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue