#![allow(deprecated)]
extern crate ncurseswwin;
use ncurseswwin::*;
macro_rules! result { ($type: ty) => { Result<$type, NCurseswWinError> } }
fn main() {
match main_routine() {
Err(source) => match source {
NCurseswWinError::Panic { message } => eprintln!("panic: {}", message),
_ => eprintln!("error: {}", source)
},
Ok(value) => {
assert!(value == -1);
println!("return: {}", value)
}
}
}
fn main_routine() -> result!(i32) {
match ncursesw_init(|stdscr| {
match ncursesw_init_test(stdscr) {
Err(source) => Ok(Err(source)),
Ok(value) => Ok(Ok(value))
}
}).unwrap_or_else(|source| Err(match source {
Some(message) => NCurseswWinError::Panic { message },
None => NCurseswWinError::Panic { message: "There was a panic, but no message!".to_string() }
})) {
Err(source) => Err(source),
Ok(result) => result
}
}
fn ncursesw_init_test(stdscr: &Window) -> result!(i32) {
set_input_mode(InputMode::Character)?;
set_echo(false)?;
set_newline(false)?;
intrflush(false)?;
cursor_set(CursorType::Invisible)?;
ncursesw_init_test_pass(stdscr)?;
ncursesw_init_test_fail()
}
fn ncursesw_init_test_pass(stdscr: &Window) -> result!(()) {
let mut origin = Origin::default();
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.")?;
origin.y += 2;
stdscr.mvaddstr(origin, "Press <Return> to continue: ")?;
stdscr.refresh()?;
stdscr.getch()?;
Ok(())
}
fn ncursesw_init_test_fail() -> result!(i32) {
Err(NCurseswWinError::InternalError) }