use crate::command::Cmd;
use crate::message::Message;
pub(crate) struct ClearScreenMsg;
pub(crate) struct EnterAltScreenMsg;
pub(crate) struct ExitAltScreenMsg;
pub(crate) struct ShowCursorMsg;
pub(crate) struct HideCursorMsg;
pub(crate) struct EnableMouseCellMotionMsg;
pub(crate) struct EnableMouseAllMotionMsg;
pub(crate) struct DisableMouseMsg;
pub(crate) struct EnableBracketedPasteMsg;
pub(crate) struct DisableBracketedPasteMsg;
pub(crate) struct EnableReportFocusMsg;
pub(crate) struct DisableReportFocusMsg;
pub(crate) struct ReleaseTerminalMsg;
pub(crate) struct RestoreTerminalMsg;
pub fn clear_screen() -> Cmd {
Cmd::new(|| Message::new(ClearScreenMsg))
}
pub fn enter_alt_screen() -> Cmd {
Cmd::new(|| Message::new(EnterAltScreenMsg))
}
pub fn exit_alt_screen() -> Cmd {
Cmd::new(|| Message::new(ExitAltScreenMsg))
}
pub fn show_cursor() -> Cmd {
Cmd::new(|| Message::new(ShowCursorMsg))
}
pub fn hide_cursor() -> Cmd {
Cmd::new(|| Message::new(HideCursorMsg))
}
pub fn enable_mouse_cell_motion() -> Cmd {
Cmd::new(|| Message::new(EnableMouseCellMotionMsg))
}
pub fn enable_mouse_all_motion() -> Cmd {
Cmd::new(|| Message::new(EnableMouseAllMotionMsg))
}
pub fn disable_mouse() -> Cmd {
Cmd::new(|| Message::new(DisableMouseMsg))
}
pub fn enable_bracketed_paste() -> Cmd {
Cmd::new(|| Message::new(EnableBracketedPasteMsg))
}
pub fn disable_bracketed_paste() -> Cmd {
Cmd::new(|| Message::new(DisableBracketedPasteMsg))
}
pub fn enable_report_focus() -> Cmd {
Cmd::new(|| Message::new(EnableReportFocusMsg))
}
pub fn disable_report_focus() -> Cmd {
Cmd::new(|| Message::new(DisableReportFocusMsg))
}
pub fn release_terminal() -> Cmd {
Cmd::new(|| Message::new(ReleaseTerminalMsg))
}
pub fn restore_terminal() -> Cmd {
Cmd::new(|| Message::new(RestoreTerminalMsg))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_screen_commands_create() {
let _ = clear_screen();
let _ = enter_alt_screen();
let _ = exit_alt_screen();
let _ = show_cursor();
let _ = hide_cursor();
let _ = enable_mouse_cell_motion();
let _ = enable_mouse_all_motion();
let _ = disable_mouse();
let _ = enable_bracketed_paste();
let _ = disable_bracketed_paste();
let _ = enable_report_focus();
let _ = disable_report_focus();
let _ = release_terminal();
let _ = restore_terminal();
}
}