diff options
Diffstat (limited to 'src/tui.rs')
-rw-r--r-- | src/tui.rs | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/tui.rs b/src/tui.rs deleted file mode 100644 index 911a50d..0000000 --- a/src/tui.rs +++ /dev/null @@ -1,62 +0,0 @@ -use crossterm::event::{ - Event, KeyboardEnhancementFlags, PopKeyboardEnhancementFlags, - PushKeyboardEnhancementFlags, -}; -use crossterm::terminal::{ - disable_raw_mode, enable_raw_mode, EnterAlternateScreen, - LeaveAlternateScreen, -}; -use crossterm::{event, execute}; -use ratatui::prelude::{CrosstermBackend, Terminal}; -use std::io; -use std::io::{stdout, Stdout}; -use std::panic; - -pub type Tui = Terminal<CrosstermBackend<Stdout>>; - -pub fn init() -> io::Result<Tui> { - execute!(stdout(), EnterAlternateScreen)?; - execute!( - stdout(), - PushKeyboardEnhancementFlags( - KeyboardEnhancementFlags::DISAMBIGUATE_ESCAPE_CODES, - ) - )?; - enable_raw_mode()?; - - Terminal::new(CrosstermBackend::new(stdout())) -} - -pub fn restore() -> io::Result<()> { - execute!(stdout(), LeaveAlternateScreen)?; - execute!(stdout(), PopKeyboardEnhancementFlags)?; - disable_raw_mode()?; - - Ok(()) -} - -pub fn get_event(tick: std::time::Duration) -> io::Result<Option<Event>> { - if event::poll(tick)? { - return Ok(Some(event::read()?)); - } - - Ok(None) -} - -pub fn install_hooks() -> eyre::Result<()> { - let hook_builder = color_eyre::config::HookBuilder::default(); - let (panic_hook, eyre_hook) = hook_builder.into_hooks(); - - let panic_hook = panic_hook.into_panic_hook(); - panic::set_hook(Box::new(move |panic_info| { - restore().unwrap(); - panic_hook(panic_info); - })); - - let eyre_hook = eyre_hook.into_eyre_hook(); - eyre::set_hook(Box::new(move |error| { - restore().unwrap(); - eyre_hook(error) - }))?; - Ok(()) -} |