use crate::core::*; use crate::view::*; use crate::model::*; pub enum ChainViewMode { Hidden, Compact, Row, Column, } pub struct ChainView<'a> { pub focused: bool, pub track: Option<&'a Track>, } impl<'a> Render for ChainView<'a> { fn render (&self, buf: &mut Buffer, area: Rect) -> Usually { let style = Some(if self.focused { Style::default().green().dim() } else { Style::default().dim() }); let Rect { x, y, width, height } = area; if self.track.is_none() { let label = "No track selected"; label.blit( buf, x + (width - label.len() as u16) / 2, y + height / 2, Some(Style::default().dim().bold()) ); } lozenge_left(buf, x, y, height, style); let (area, _plugins) = if let Some(ref chain) = self.track { self.draw_as_row(buf, area, style)? } else { (area, vec![]) }; lozenge_right(buf, x + width - 1, y, height, style); Ok(area) } } impl<'a> ChainView<'a> { pub fn draw_as_row ( &self, buf: &mut Buffer, area: Rect, style: Option