mirror of
https://github.com/dankamongmen/notcurses
synced 2025-04-05 14:20:03 -04:00
We need to use Result<> to manage error flow, at least on the methods API. This way it will finally feel idiomatic Rust and more concise. Also, we can't return a non Result from main. - rename NcResult to NcIntResult. - new NcError & NcResult types. - new error![] macro to reduce boilerplate. - change return type of NcDirect methods to NcResult. - refactor several examples to return NcResult: direct-cursor, poc-direct & poc-kittyzapper. - BONUS: fix test not stopping notcurses context. - update lib doc-comment. - fix typo in readme.
48 lines
1.1 KiB
Rust
48 lines
1.1 KiB
Rust
//! Example 'direct-cursor'
|
|
//!
|
|
//! Explore cursor functions in direct mode
|
|
//!
|
|
|
|
use libnotcurses_sys::*;
|
|
|
|
fn main() -> NcResult<()> {
|
|
unsafe {
|
|
let ncd = NcDirect::new();
|
|
|
|
let cols = ncdirect_dim_x(ncd);
|
|
let rows = ncdirect_dim_y(ncd);
|
|
println!("terminal size (rows, cols): {}, {}", rows, cols);
|
|
|
|
ncd.putstr(0, "The current coordinates are")?;
|
|
ncd.flush()?;
|
|
|
|
for _n in 0..20 {
|
|
ncd.putstr(0, ".")?;
|
|
ncd.flush()?;
|
|
sleep![50];
|
|
}
|
|
|
|
if let Some((cy, cx)) = ncd.cursor_yx() {
|
|
ncd.putstr(0, &format!(" ({},{})\n", cy, cx))?;
|
|
}
|
|
sleep![1000];
|
|
|
|
let sentence = vec!["And", "now", "I", "will", "clear", "the", "screen", ".", ".", "."];
|
|
for word in sentence {
|
|
ncd.putstr(0, &format!["{} ", word])?;
|
|
ncd.flush()?;
|
|
sleep![200];
|
|
}
|
|
sleep![300];
|
|
ncd.putstr(0, "\nbye!\n\n")?;
|
|
ncd.flush()?;
|
|
sleep![600];
|
|
|
|
ncd.clear()?;
|
|
sleep![1000];
|
|
|
|
ncd.stop()?;
|
|
}
|
|
Ok(())
|
|
}
|