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) } });