mirror of
https://codeberg.org/unspeaker/tek.git
synced 2025-12-06 19:56:42 +01:00
58 lines
1.9 KiB
Rust
58 lines
1.9 KiB
Rust
use crate::*;
|
|
use tek_core::Direction;
|
|
|
|
/// Display mode of arranger
|
|
pub enum ArrangerViewMode {
|
|
VerticalExpanded,
|
|
VerticalCompact1,
|
|
VerticalCompact2,
|
|
Horizontal,
|
|
}
|
|
|
|
impl ArrangerViewMode {
|
|
pub fn to_next (&mut self) {
|
|
*self = match self {
|
|
Self::VerticalExpanded => Self::VerticalCompact1,
|
|
Self::VerticalCompact1 => Self::VerticalCompact2,
|
|
Self::VerticalCompact2 => Self::Horizontal,
|
|
Self::Horizontal => Self::VerticalExpanded,
|
|
}
|
|
}
|
|
}
|
|
|
|
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 arrangement = arrangement(buf, area)?;
|
|
match direction {
|
|
Direction::Down => {
|
|
let sequencer = if let Some(sequencer) = self.sequencer() {
|
|
sequencer.render(buf, Rect {
|
|
y: area.y + arrangement.height,
|
|
height: area.height - arrangement.height,
|
|
..area
|
|
})?
|
|
} else {
|
|
Rect::default()
|
|
};
|
|
Corners(Style::default().green().not_dim()).draw(buf, match self.focus_sequencer {
|
|
true => sequencer,
|
|
false => arrangement,
|
|
})?;
|
|
},
|
|
_ => unimplemented!()
|
|
}
|
|
Ok(area)
|
|
} else {
|
|
arrangement(buf, area)
|
|
}
|
|
});
|