1 use std::io::{self, stdout, Write}; 2 3 use crossterm::{terminal::*, ExecutableCommand}; 4 5 use super::ui::uicore::DEF_STYLE; 6 7 pub struct TermManager; 8 9 #[allow(dead_code)] 10 impl TermManager { 11 pub fn init_term() -> io::Result<()> { 12 DEF_STYLE.read().unwrap().set_content_style()?; 13 Self::clear_all() 14 } 15 16 #[inline] 17 pub fn disable_line_warp() -> io::Result<()> { 18 stdout().execute(DisableLineWrap).unwrap().flush() 19 } 20 21 #[inline] 22 pub fn enable_line_warp() -> io::Result<()> { 23 stdout().execute(EnableLineWrap).unwrap().flush() 24 } 25 26 #[inline] 27 pub fn leave_alternate_screen() -> io::Result<()> { 28 stdout().execute(LeaveAlternateScreen).unwrap().flush() 29 } 30 31 #[inline] 32 pub fn enter_alternate_screen() -> io::Result<()> { 33 stdout().execute(EnterAlternateScreen).unwrap().flush() 34 } 35 36 #[inline] 37 pub fn scroll_up(lines: u16) -> io::Result<()> { 38 stdout().execute(ScrollUp(lines)).unwrap().flush() 39 } 40 41 #[inline] 42 pub fn scroll_down(lines: u16) -> io::Result<()> { 43 stdout().execute(ScrollDown(lines)).unwrap().flush() 44 } 45 46 #[inline] 47 pub fn clear_all() -> io::Result<()> { 48 stdout().execute(Clear(ClearType::All)).unwrap().flush() 49 } 50 51 #[inline] 52 pub fn clear_purge() -> io::Result<()> { 53 stdout().execute(Clear(ClearType::Purge)).unwrap().flush() 54 } 55 56 #[inline] 57 pub fn clear_under_cursor() -> io::Result<()> { 58 stdout() 59 .execute(Clear(ClearType::FromCursorDown)) 60 .unwrap() 61 .flush() 62 } 63 64 #[inline] 65 pub fn clear_up_cursor() -> io::Result<()> { 66 stdout() 67 .execute(Clear(ClearType::FromCursorUp)) 68 .unwrap() 69 .flush() 70 } 71 72 #[inline] 73 pub fn clear_current_line() -> io::Result<()> { 74 stdout() 75 .execute(Clear(ClearType::CurrentLine)) 76 .unwrap() 77 .flush() 78 } 79 80 #[inline] 81 pub fn clear_until_new_line() -> io::Result<()> { 82 stdout() 83 .execute(Clear(ClearType::UntilNewLine)) 84 .unwrap() 85 .flush() 86 } 87 } 88