mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-08 20:56:43 +01:00
show sequencer with arranger
This commit is contained in:
parent
964e8382d3
commit
a533951fc6
10 changed files with 185 additions and 137 deletions
|
|
@ -1,6 +1,7 @@
|
|||
//! Clip launcher and arrangement editor.
|
||||
|
||||
use crate::*;
|
||||
use tek_core::Direction;
|
||||
|
||||
/// Represents the tracks and scenes of the composition.
|
||||
pub struct Arranger {
|
||||
|
|
@ -16,22 +17,52 @@ pub struct Arranger {
|
|||
pub scenes: Vec<Scene>,
|
||||
pub focused: bool,
|
||||
pub entered: bool,
|
||||
pub fixed_height: bool,
|
||||
pub transport: Option<Arc<RwLock<TransportToolbar>>>,
|
||||
pub show_sequencer: Option<Direction>
|
||||
}
|
||||
|
||||
render!(Arranger |self, buf, area| {
|
||||
let arrangement = |buf, area| match self.mode {
|
||||
ArrangerViewMode::Horizontal =>
|
||||
super::arranger_view_h::draw(self, buf, area),
|
||||
ArrangerViewMode::VerticalCompact1 =>
|
||||
super::arranger_view_v::draw_compact_1(self, buf, area),
|
||||
ArrangerViewMode::VerticalCompact2 =>
|
||||
super::arranger_view_v::draw_compact_2(self, buf, area),
|
||||
ArrangerViewMode::VerticalExpanded =>
|
||||
super::arranger_view_v::draw_expanded(self, buf, area),
|
||||
};
|
||||
if let Some(direction) = self.show_sequencer {
|
||||
let used = arrangement(buf, area)?;
|
||||
match direction {
|
||||
Direction::Down => {
|
||||
let area = Rect {
|
||||
y: area.y + used.height,
|
||||
height: area.height - used.height,
|
||||
..area
|
||||
};
|
||||
self.sequencer().map(|sequencer|sequencer.render(buf, area));
|
||||
},
|
||||
_ => unimplemented!()
|
||||
}
|
||||
Ok(area)
|
||||
} else {
|
||||
arrangement(buf, area)
|
||||
}
|
||||
});
|
||||
|
||||
impl Arranger {
|
||||
pub fn new (name: &str) -> Self {
|
||||
Self {
|
||||
name: name.into(),
|
||||
mode: ArrangerViewMode::Vertical,
|
||||
selected: ArrangerFocus::Clip(0, 0),
|
||||
scenes: vec![],
|
||||
tracks: vec![],
|
||||
entered: true,
|
||||
focused: true,
|
||||
fixed_height: false,
|
||||
transport: None
|
||||
name: name.into(),
|
||||
mode: ArrangerViewMode::VerticalCompact2,
|
||||
selected: ArrangerFocus::Clip(0, 0),
|
||||
scenes: vec![],
|
||||
tracks: vec![],
|
||||
entered: true,
|
||||
focused: true,
|
||||
transport: None,
|
||||
show_sequencer: Some(Direction::Down),
|
||||
}
|
||||
}
|
||||
pub fn activate (&mut self) {
|
||||
|
|
@ -60,9 +91,10 @@ impl Arranger {
|
|||
.flatten()
|
||||
}
|
||||
pub fn show_phrase (&mut self) -> Usually<()> {
|
||||
unimplemented!()
|
||||
//unimplemented!()
|
||||
//let phrase = self.phrase();
|
||||
//self.sequencer.show(phrase)
|
||||
Ok(())
|
||||
}
|
||||
pub fn phrase (&self) -> Option<&Arc<RwLock<Phrase>>> {
|
||||
let track_id = self.selected.track()?;
|
||||
|
|
@ -142,12 +174,3 @@ impl Arranger {
|
|||
format!("Scene {}", self.scenes.len() + 1)
|
||||
}
|
||||
}
|
||||
|
||||
render!(Arranger |self, buf, area| match self.mode {
|
||||
ArrangerViewMode::Horizontal =>
|
||||
super::arranger_view_h::draw(self, buf, area),
|
||||
ArrangerViewMode::Vertical =>
|
||||
super::arranger_view_v::draw_expanded(self, buf, area),
|
||||
ArrangerViewMode::VerticalCompact =>
|
||||
super::arranger_view_v::draw_compact(self, buf, area),
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue