You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tui-rs/examples/curses.rs

43 lines
1.3 KiB
Rust

use tui::backend::CursesBackend;
use tui::style::{Color, Modifier, Style};
use tui::widgets::{Block, Borders, Paragraph, Text, Widget};
use tui::Terminal;
fn main() -> Result<(), failure::Error> {
let mut terminal = Terminal::new(CursesBackend::new().unwrap()).unwrap();
terminal.clear().unwrap();
terminal.hide_cursor().unwrap();
loop {
draw(&mut terminal)?;
match terminal.backend_mut().get_curses_window_mut().get_input() {
Some(easycurses::Input::Character(char)) => {
if char == 'q' {
break;
}
}
_ => {}
};
}
terminal.show_cursor()?;
Ok(())
}
fn draw(t: &mut Terminal<CursesBackend>) -> Result<(), std::io::Error> {
let text = [
Text::raw("It "),
Text::styled("works", Style::default().fg(Color::Yellow)),
];
t.draw(|mut f| {
let size = f.size();
Paragraph::new(text.iter())
.block(
Block::default()
.title("Curses backend")
.title_style(Style::default().fg(Color::Yellow).modifier(Modifier::Bold))
.borders(Borders::ALL)
.border_style(Style::default().fg(Color::Magenta)),
)
.render(&mut f, size)
})
}