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 49 50 51 52
mod elements; mod error; mod state; mod tools; use crossterm::{ cursor::{Hide, Show}, event::{read, DisableMouseCapture, EnableMouseCapture, MouseEvent}, queue, style::ResetColor, terminal::{ disable_raw_mode, enable_raw_mode, Clear, ClearType, EnterAlternateScreen, LeaveAlternateScreen, }, }; use std::io::{Stdout, Write}; use crate::{error::Result, state::State}; pub fn run(w: &mut Stdout) -> Result<()> { queue!(w, EnterAlternateScreen, Hide, EnableMouseCapture)?; enable_raw_mode()?; w.flush()?; let mut state = State::new(); while state.should_exit() == false { if state.should_clear() { queue!(w, Clear(ClearType::All))?; state.set_should_clear(false); } state.render(w)?; w.flush()?; state.handle_event(read()?)?; } queue!( w, ResetColor, DisableMouseCapture, Show, LeaveAlternateScreen )?; disable_raw_mode()?; Ok(()) }