1pub mod dashboard;
2pub mod formatter;
3pub mod interactive;
4pub mod timer;
5pub mod widgets;
6pub mod history;
7
8use anyhow::Result;
9use crossterm::{
10 event::{DisableMouseCapture, EnableMouseCapture, Event, KeyCode},
11 execute,
12 terminal::{disable_raw_mode, enable_raw_mode, EnterAlternateScreen, LeaveAlternateScreen},
13};
14use ratatui::{
15 backend::CrosstermBackend,
16 Terminal,
17};
18use std::io;
19
20pub fn setup_terminal() -> Result<Terminal<CrosstermBackend<io::Stdout>>> {
21 let mut stdout = io::stdout();
22 enable_raw_mode()?;
23 execute!(stdout, EnterAlternateScreen, EnableMouseCapture)?;
24 let backend = CrosstermBackend::new(stdout);
25 let terminal = Terminal::new(backend)?;
26 Ok(terminal)
27}
28
29pub fn restore_terminal() -> Result<()> {
30 disable_raw_mode()?;
31 execute!(
32 io::stdout(),
33 LeaveAlternateScreen,
34 DisableMouseCapture
35 )?;
36 Ok(())
37}
38
39pub fn should_quit(event: Event) -> bool {
40 if let Event::Key(key) = event {
41 return key.code == KeyCode::Char('q') || key.code == KeyCode::Esc;
42 }
43 false
44}