use crate::prelude::*; use super::Sequencer; pub fn render ( state: &mut Sequencer, stdout: &mut Stdout, offset: (u16, u16) ) -> Result<(), Box> { //render_toolbar(state, stdout, offset)?; render_grid(state, stdout, offset)?; render_events(state, stdout, offset)?; Ok(()) } fn render_grid ( state: &mut Sequencer, stdout: &mut Stdout, offset: (u16, u16) ) -> Result<(), Box> { let move_to = |col, row| crossterm::cursor::MoveTo(offset.0 + col, offset.1 + row); let bg = "┊···············┊···············┊···············┊···············"; let cursor: String = if state.cursor.2 == 0 { "X".into() } else { std::iter::repeat("·") .take(state.cursor.2 as usize) .collect() }; stdout .queue(move_to(1, 3))?.queue(Print("1.1"))? .queue(move_to(17, 3))?.queue(Print("1.2"))? .queue(move_to(33, 3))?.queue(Print("1.3"))? .queue(move_to(49, 3))?.queue(Print("1.4"))? .queue(move_to(1, 4))?.queue(PrintStyledContent(bg.grey()))? .queue(move_to(1, 5))?.queue(PrintStyledContent(bg.grey()))? .queue(move_to(1, 6))?.queue(PrintStyledContent(bg.grey()))? .queue(move_to(1, 7))?.queue(PrintStyledContent(bg.grey()))? .queue(move_to(1 + state.cursor.0, 4 + state.cursor.1))? .queue(PrintStyledContent(cursor.reverse()))?; Ok(()) } fn render_events ( state: &mut Sequencer, stdout: &mut Stdout, offset: (u16, u16) ) -> Result<(), Box> { Ok(()) }