11个版本
0.1.10 | 2024年8月6日 |
---|---|
0.1.9 | 2024年7月22日 |
0.1.6 | 2024年5月27日 |
0.1.5 | 2024年4月24日 |
0.1.0 | 2024年1月19日 |
#489 in 命令行界面
320 个月下载量
用于 tuwi
37KB
518 行代码(不包括注释)
Ratatui-widgets
ratatui-widgets
是一个Rust包,它为 Ratatui 提供额外的部件。
安装
cargo add ratatui-widgets
用法
// TODO: Add usage examples
示例
状态
本README文件为ratatui部件库的初始目标设定。这个库 将定期发布破坏性变更 - 快速迭代并不断尝试。这里更注重快速交付而不是完美。期待在功能变更或添加时看到发布。release-plz 将根据semver更新版本,并使用来自每个PR的信息更新 变更日志。
这(目前)不是一个官方Ratatui-org项目,但可能在未来的某个时刻成为。
功能
-
基本事件处理抽象和键盘/鼠标处理
-
基本按钮
let button = Button::new("Click me");
-
堆叠容器,用于处理小部件和布局
let stack = StackContainer::horizontal().with_widgets(vec![ (Box::new(Line::raw("Left")), Constraint::Fill(1)), (Box::new(Text::raw("Center")), Constraint::Fill(1)), (Box::new(Span::raw("Right")), Constraint::Fill(1)), ]);
待办事项
大多数来自https://en.wikipedia.org/wiki/Graphical_widget#List_of_common_generic_widgets的小部件列表
- 创建对后端事件进行抽象以生成鼠标和键盘事件的事件类型
- Crossterm
- Termion
- Termwiz
- 考虑如何处理非鼠标/键盘事件(调整大小、粘贴、聚焦等)
- 支持按钮/菜单等的键盘快捷键/加速键
- 考虑支持键盘定制
- 支持适用于所有小部件的主题(颜色和修饰符)
- 决定如何处理状态(StatefulWidget和其他选项)
- 决定如何处理点击/更改等事件
- 决定如何处理内部状态(聚焦、悬停)
- 决定如何处理聚焦顺序/选择
- 决定容器通常如何工作
- 按钮
- 按钮
[Submit]
- 单选按钮
(*) 项 ( ) 项
- 复选框
[x] 项目
- 开关
<_ON_ / OFF >
- 切换按钮
[ON]
- 分割按钮
[提交][↓]
- 循环按钮
[红色]
<=>[绿色]
<=>[蓝色]
- 按钮
- 滑动条
[-----------|--------------]
- 列表框(由于核心中已经有一个,所以优先级较低)
- 旋转框
[123][+][-]
- 下拉列表
[已选项目][↓]
- 菜单
- 上下文菜单
- 饼图菜单(在控制台中可能不值得,但也许有类似用途)
- 菜单栏(可能需要引入 https://crates.io/crates/tui-menu)
- 工具栏(适合鼠标用户界面,不适合键盘用户界面)
- 功能区(与工具栏相同)
- 组合框
[____________][↓]
- 图标(不确定我们能看到这个的什么用途)
- 树视图(https://crates.io/crates/tui-tree-widget)
- 树图(未在维基页面上列出,但 https://crates.io/crates/tui-treemap)
- 网格视图/数据网格(类似于内置表格,但我们可以用这个做更多事情)
- 链接
<点击这里>
(与OSC 8集成) - 选项卡(与内置选项卡相比,这是一个容器小部件)
- 滚动条(内置)
- 文本框(https://crates.io/crates/tui-textarea https://crates.io/crates/tui-input)
- 标签(基本上与段落相同,但链接到另一个字段)
- 工具提示(当字段聚焦时在下方显示 - 淡文本等。)
- 气球帮助(类似于工具提示 - 可能这是一个较大的帮助弹出窗口,必须关闭)
- 状态栏(主要用于放置背景,并添加多个自动间隔的元素)
- 进度条(仪表/线仪表,但优化了时间/进度)
- 信息栏 - 类似于弹出窗口或闪元素,但通常是非模态的,可关闭,位于屏幕顶部
- 容器
- 窗口(不确定是否需要这个概念,但作为一个顶级想法可能很有用)
- 可折叠面板 - 类似于 VSCode 的面板
- 抽屉 - 与面板相关 - 不确定它们之间的区别在哪里
- 手风琴 - 垂直堆叠的可以由选择展开的项目列表
- 模态窗口 - 包含其他元素的弹出窗口
- 对话框 - 在弹出窗口中显示信息并等待响应(《https://crates.org.cn/crates/tui-confirm-dialog》 https://crates.io/crates/tui-confirm-dialog 《https://crates.org.cn/crates/tui-file-dialog》 https://crates.io/crates/tui-file-dialog)
- 弹出窗口(不在维基百科中,https://crates.io/crates/tui-popup)
- 调色板窗口/工具窗口 - 带有命令/按钮的浮动窗口
- 检查器窗口 - 显示其他位置所选项目的信息(可能作为调试工具很有用)
- 框架 - 分组机制 - 这可能是一个带有标题的边框,充当容器
- 画布(可能内置)
- 封面流 - 通常带有图像/快照的水平滚动的大选择
- 泡泡流 - 讨论线程(例如 https://github.com/dustinblackman/oatmeal)
- 旋转门 - 显示视觉卡片 - 与封面流不同,它一次显示多个卡片
- 滚动视图 - 不在维基百科文章中,但 https://crates.io/crates/tui-scrollview
- 欢迎提出其他项目的建议!
许可证
版权(c)2024 Josh McKinney
本项目根据以下任一许可证授权:
- Apache License,版本 2.0(《https://github.com/joshka/ratatui-widgets/blob/89745a8b9d4e1f68d91d3ac8d2936d12fc3dfc76/LICENSE-APACHE》或《http://www.apache.org/licenses/LICENSE-2.0》)
- MIT 许可证(《https://github.com/joshka/ratatui-widgets/blob/89745a8b9d4e1f68d91d3ac8d2936d12fc3dfc76/LICENSE-MIT》或《http://opensource.org/licenses/MIT》)
任选其一。
贡献
除非你明确声明,否则根据 Apache-2.0 许可证定义的,任何有意提交以包含在作品中的贡献,都应按上述方式双许可,不附加任何额外条款或条件。
请参阅《https://github.com/joshka/ratatui-widgets/blob/89745a8b9d4e1f68d91d3ac8d2936d12fc3dfc76/CONTRIBUTING.md》。
依赖关系
~6–21MB
~279K SLoC