#tui #ncurses #raw-pointers #api-bindings #mouse-event

ncursesw-win

ncursesw-rs 库的扩展包装,封装了核心 NCurses TUI 库暴露的原始指针

15 个版本

0.6.3 2022年2月22日
0.6.2 2022年1月6日
0.4.0 2019年12月9日
0.3.1 2019年11月7日
0.1.4 2019年7月13日

#334 in 命令行界面

每月 32 次下载

MIT 许可证

505KB
6.5K SLoC

ncursesw-win Crates.io Build Status MIT licensed Lines of Code

这个 crate 是围绕 ncursesw crate 的包装,它的目的是抽象出 NCurses 所使用的原始指针并安全地执行操作,但是了解 NCurses 的工作原理对于充分发挥这个库的真正功能是建议的。

有关 ncursesw 的详细信息,请参阅 README.md

包含

[dependencies]
ncursesw-win = "0.6"

或者使用最新的 git 版本

[dependencies]
ncursesw-win = { git = "https://github.com/narfit66/ncursesw-win-rs" }

构建

编译的库将被构建在 target 目录中。

cargo build

有关如何自定义编译的更多信息,请参阅 ncursesw crate 的 BuildingCustom BuildFeatures 部分 README.md

使用方法

extern crate ncurseswwin;

use ncurseswwin::*;

使用属性和颜色对

use ncurseswwin::normal::*; // for 'ansi' color pairs and attributes...
use ncurseswwin::extend::*; // or for 'extended' color pairs and attributes.

使用菜单

use ncurseswwin::menu::*;

使用表单

use ncurseswwin::form::*;

不要调用 initscr()endwin() 来初始化和拆解 NCurses 库(这些仍然可以作为 ncursesw crate 调用,因为它是公开的)使用 ncursesw_entry() 函数。这将初始化和拆解 NCurses,并提供了以错误类型 NCurseswWinError::Panic { message } 将它们作为错误类型返回给客户端代码的能力,以控制方式捕获恐慌。

要创建一个窗口,使用 Window::new(),它会在离开作用域时正确拆解,并提供所有与 NCurses 窗口关联的 NCurses 功能。同样,使用 Pad::new() 创建一个面板,使用 Panel::new() 创建一个面板。

WindowPadRipoffWindow 相关的所有 NCurses 方法都使用它们原始的 NCurses 名称,或者如果明确传递了结构体的指针 _win_st,则已移除 'w',例如,NCurses 的 'C' 函数 wget_wch(WINDOW*) 已成为方法 self.get_wch()(其中 self 是一个 Window 的实例,例如)。

Screen 相关的所有 NCurses 方法都使用原始的 NCurses 名称,或者如果明确传递了结构体的指针 screen,则已移除 _sp 后缀,例如,NCurses 的 'C' 函数 start_color_sp(SCREEN*) 已成为方法 self.start_color()(其中 self 是一个 Screen 的实例,例如)。要创建与屏幕关联的窗口或面板,请分别使用 Window::new_sp()Pad::new_sp()

NCurses 的 ripoff 和鼠标功能被封装了,请参阅示例代码了解如何使用这些功能。

示例

示例由 cargo build --examples 构建。要运行它们,请使用 cargo run --example <EXAMPLE>

当前示例包括 NCurses 安全初始化/调用 (ncursesw_entry-test),ANSI 边框绘制 (border-test),Unicode 边框绘制 (border_set-test),Unicode 方框绘制 (box_drawing-test),鼠标事件 (mouse-test),拆线 (ripoffline-test),非阻塞获取 (getch_nonblocking-test),屏幕 (screen-test),窗口 (window-test) 以及 菜单 (menu-test)。

文档

本软件包的文档可以在 此处 找到。

许可证

本软件包采用 MIT 许可证,请参阅 LICENSE

依赖项

~1.8–4.5MB
~82K SLoC