extern crate ncurseswwin;
use std::process::exit;
use anyhow::Result;
use ncurseswwin::*;
fn main() {
if let Err(source) = ncursesw_entry(|stdscr| {
set_input_mode(InputMode::Character)?;
set_echo(false)?;
set_newline(false)?;
intrflush(false)?;
cursor_set(CursorType::Invisible)?;
border_test(stdscr)
}) {
if let Some(err) = source.downcast_ref::<NCurseswWinError>() {
match err {
NCurseswWinError::Panic { message } => eprintln!("panic: {}", message),
_ => eprintln!("error: {}", err)
}
} else {
eprintln!("error: {}", source);
}
source.chain().skip(1).for_each(|cause| eprintln!("cause: {}", cause));
exit(1);
}
exit(0);
}
fn border_test(stdscr: &Window) -> Result<()> {
let left_side = chtype_box_graphic(BoxDrawingGraphic::LeftVerticalLine);
let right_side = chtype_box_graphic(BoxDrawingGraphic::RightVerticalLine);
let top_side = chtype_box_graphic(BoxDrawingGraphic::UpperHorizontalLine);
let bottom_side = chtype_box_graphic(BoxDrawingGraphic::LowerHorizontalLine);
let upper_left = chtype_box_graphic(BoxDrawingGraphic::UpperLeftCorner);
let upper_right = chtype_box_graphic(BoxDrawingGraphic::UpperRightCorner);
let lower_left = chtype_box_graphic(BoxDrawingGraphic::LowerLeftCorner);
let lower_right = chtype_box_graphic(BoxDrawingGraphic::LowerRightCorner);
stdscr.border(left_side, right_side, top_side, bottom_side, upper_left, upper_right, lower_left, lower_right)?;
let mut origin = Origin { y: 1, x: 2 };
stdscr.mvaddstr(origin, "If the doors of perception were cleansed every thing would appear to man as it is: Infinite.")?;
origin.y += 1;
stdscr.mvaddstr(origin, "For man has closed himself up, till he sees all things thro' narrow chinks of his cavern.")?;
stdscr.refresh()?;
stdscr.getch()?;
Ok(())
}