Skip to main content

matrixcode_tui/
lib.rs

1mod types;
2mod utils;
3mod markdown;
4mod app;
5mod draw;
6mod input;
7mod commands;
8mod events;
9
10use anyhow::Result;
11use std::io::Stdout;
12use ratatui::{
13    backend::CrosstermBackend,
14    crossterm::{
15        event,
16        terminal::{disable_raw_mode, enable_raw_mode, Clear, ClearType},
17        execute, cursor::Show,
18    },
19    Terminal,
20};
21
22pub use matrixcode_core::{AgentEvent, EventData, EventType, cancel::CancellationToken};
23pub use app::TuiApp;
24
25pub(crate) const ANIM_MS: u64 = 80;
26pub(crate) const SPINNER: [&str; 10] = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
27
28pub fn setup_terminal() -> Result<Terminal<CrosstermBackend<Stdout>>> {
29    enable_raw_mode()?;
30    execute!(
31        std::io::stdout(),
32        event::EnableMouseCapture,
33        event::EnableBracketedPaste
34    )?;
35    let mut t = Terminal::new(CrosstermBackend::new(std::io::stdout()))?;
36    t.clear()?;
37    Ok(t)
38}
39
40pub fn restore_terminal() -> Result<()> {
41    disable_raw_mode()?;
42    execute!(
43        std::io::stdout(),
44        event::DisableMouseCapture,
45        event::DisableBracketedPaste,
46        Clear(ClearType::All),
47        Show
48    )?;
49    Ok(())
50}