1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
use crossterm::{ cursor::{Hide, Show}, event::{read, DisableMouseCapture, EnableMouseCapture}, queue, }; use crossterm::{ style::ResetColor, terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen}, }; use std::io::Write; mod buffer; mod elements; mod error; mod state; mod tool; use crate::{error::Error, state::State}; pub fn run(w: &mut impl Write) -> Result<(), Error> { queue!(w, EnterAlternateScreen, Hide, EnableMouseCapture)?; enable_raw_mode()?; w.flush()?; let mut state = State::new(); while state.should_exit() == false { state.render(w)?; w.flush()?; state.handle_event(w, read()?)?; } queue!( w, ResetColor, DisableMouseCapture, Show, LeaveAlternateScreen )?; disable_raw_mode()?; Ok(()) }