mirror of
https://codeberg.org/unspeaker/tengri.git
synced 2026-07-17 07:56:56 +02:00
refactor: reuse tui_teardown
This commit is contained in:
parent
2ab871d10b
commit
90ebae0f26
1 changed files with 10 additions and 17 deletions
27
src/term.rs
27
src/term.rs
|
|
@ -32,23 +32,25 @@ use ::{
|
|||
($state:expr) => { pub fn main () -> Usually<()> { tui_run_main($state) } }
|
||||
}
|
||||
|
||||
pub fn tui_run_main <T> (state: T) -> Usually<()> where
|
||||
pub fn tui_run_main <T> (state: Arc<RwLock<T>>) -> Usually<()> where
|
||||
T: View<Tui> + Apply<TuiEvent, Usually<()>> + Send + Sync + 'static
|
||||
{
|
||||
tui_setup_panic();
|
||||
Exit::run(|exit|{
|
||||
let state = Arc::new(RwLock::new(state));
|
||||
let scan = Duration::from_millis(100);
|
||||
let frame = Duration::from_millis(10);
|
||||
let (input, output) = tui_io(exit.as_ref(), &state, scan, frame, std::io::stdout())?;
|
||||
output.join();
|
||||
stdout().execute(LeaveAlternateScreen)?;
|
||||
CrosstermBackend::new(stdout()).show_cursor()?;
|
||||
disable_raw_mode()?;
|
||||
Ok(())
|
||||
tui_teardown(&mut stdout())
|
||||
})
|
||||
}
|
||||
|
||||
pub fn tui_teardown <W: Write> (backend: &mut W) -> Usually<()> {
|
||||
use ::ratatui::backend::Backend;
|
||||
stdout().execute(LeaveAlternateScreen)?;
|
||||
CrosstermBackend::new(backend).show_cursor()?;
|
||||
disable_raw_mode().map_err(Into::into)
|
||||
}
|
||||
|
||||
pub fn tui_setup_panic () {
|
||||
use ::std::panic::{set_hook, PanicHookInfo};
|
||||
use ::better_panic::{Settings, Verbosity};
|
||||
|
|
@ -56,9 +58,7 @@ pub fn tui_setup_panic () {
|
|||
.verbosity(Verbosity::Full)
|
||||
.create_panic_handler();
|
||||
set_hook(Box::new(move |info: &PanicHookInfo|{
|
||||
stdout().execute(LeaveAlternateScreen).unwrap();
|
||||
CrosstermBackend::new(stdout()).show_cursor().unwrap();
|
||||
disable_raw_mode().unwrap();
|
||||
let _ = tui_teardown(&mut stdout());
|
||||
panic(info);
|
||||
}));
|
||||
}
|
||||
|
|
@ -493,13 +493,6 @@ fn y_scroll () -> impl Draw<Tui> {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn tui_teardown <W: Write> (backend: &mut CrosstermBackend<W>) -> Usually<()> {
|
||||
use ::ratatui::backend::Backend;
|
||||
stdout().execute(LeaveAlternateScreen)?;
|
||||
backend.show_cursor()?;
|
||||
disable_raw_mode().map_err(Into::into)
|
||||
}
|
||||
|
||||
pub fn tui_update (
|
||||
Tui(buf, ..): &mut Tui,
|
||||
area: XYWH<u16>,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue