minicrossterm/examples/terminal.rs

141 lines
2.9 KiB
Rust
Raw Normal View History

//!
//! Terminal Examples
//!
extern crate crossterm;
use crossterm::{cursor, terminal, ClearType};
2019-04-13 22:44:31 +10:00
use std::io;
2018-07-02 06:43:43 +10:00
fn print_test_data() {
for i in 0..100 {
2018-07-02 06:43:43 +10:00
println!("Test data to test terminal: {}", i);
}
}
/// Clear all lines in terminal | demonstration
2019-04-13 22:44:31 +10:00
pub fn clear_all_lines() -> io::Result<()> {
let terminal = terminal();
print_test_data();
// Clear all lines in terminal;
2019-04-13 22:44:31 +10:00
terminal.clear(ClearType::All)?;
Ok(())
}
/// Clear all lines from cursor position X:4, Y:4 down | demonstration
2019-04-13 22:44:31 +10:00
pub fn clear_from_cursor_down() -> io::Result<()> {
let terminal = terminal();
print_test_data();
// Set terminal cursor position (see example for more info).
2019-04-13 22:44:31 +10:00
cursor().goto(4, 8)?;
// Clear all cells from current cursor position down.
2019-04-13 22:44:31 +10:00
terminal.clear(ClearType::FromCursorDown)?;
Ok(())
}
/// Clear all lines from cursor position X:4, Y:4 up | demonstration
2019-04-13 22:44:31 +10:00
pub fn clear_from_cursor_up() -> io::Result<()> {
let terminal = terminal();
print_test_data();
// Set terminal cursor position (see example for more info).
2019-04-13 22:44:31 +10:00
cursor().goto(4, 4)?;
// Clear all cells from current cursor position down.
2019-04-13 22:44:31 +10:00
terminal.clear(ClearType::FromCursorUp)?;
Ok(())
}
/// Clear all lines from cursor position X:4, Y:4 up | demonstration
2019-04-29 06:20:43 +10:00
pub fn clear_current_line() -> io::Result<()> {
let terminal = terminal();
print_test_data();
// Set terminal cursor position (see example for more info).
2019-04-13 22:44:31 +10:00
cursor().goto(4, 3)?;
// Clear current line cells.
2019-04-13 22:44:31 +10:00
terminal.clear(ClearType::CurrentLine)?;
Ok(())
}
/// Clear all lines from cursor position X:4, Y:7 up | demonstration
2019-04-13 22:44:31 +10:00
pub fn clear_until_new_line() -> io::Result<()> {
let terminal = terminal();
print_test_data();
// Set terminal cursor position (see example for more info).
2019-04-13 22:44:31 +10:00
cursor().goto(4, 20)?;
// Clear all the cells until next line.
2019-04-13 22:44:31 +10:00
terminal.clear(ClearType::UntilNewLine)?;
Ok(())
}
/// Print the the current terminal size | demonstration.
2018-07-02 06:43:43 +10:00
pub fn print_terminal_size() {
let terminal = terminal();
// Get terminal size
2018-08-03 20:01:04 +10:00
let (width, height) = terminal.terminal_size();
// Print results
2018-08-03 20:01:04 +10:00
print!("X: {}, y: {}", width, height);
}
/// Set the terminal size to width 10, height: 10 | demonstration.
2019-04-13 22:44:31 +10:00
pub fn set_terminal_size() -> io::Result<()> {
let terminal = terminal();
2019-04-13 22:44:31 +10:00
terminal.set_size(10, 10)?;
Ok(())
}
/// Scroll down 10 lines | demonstration.
2019-04-13 22:44:31 +10:00
pub fn scroll_down() -> io::Result<()> {
let terminal = terminal();
print_test_data();
2018-07-19 06:32:17 +10:00
// Scroll down 10 lines.
2019-04-13 22:44:31 +10:00
terminal.scroll_down(10)?;
Ok(())
}
/// Scroll down 10 lines | demonstration.
2019-04-13 22:44:31 +10:00
pub fn scroll_up() -> io::Result<()> {
let terminal = terminal();
print_test_data();
// Scroll up 10 lines.
2019-04-13 22:44:31 +10:00
terminal.scroll_up(5)?;
Ok(())
}
2018-06-27 04:56:34 +10:00
/// exit the current proccess.
2018-07-02 06:43:43 +10:00
pub fn exit() {
let terminal = terminal();
2018-06-27 04:56:34 +10:00
terminal.exit();
}
fn main() {
2019-07-26 03:57:14 +10:00
scroll_down();
}