20 个版本 (5 个重大更改)
0.14.6 | 2024 年 7 月 2 日 |
---|---|
0.14.5 | 2024 年 6 月 24 日 |
0.14.1 | 2024 年 5 月 30 日 |
0.13.3 | 2024 年 5 月 30 日 |
0.9.0 | 2024 年 5 月 8 日 |
#829 in 命令行界面
每月 52 次下载
用于 8 个 Crates(5 个直接使用)
34KB
542 行
Rat-Event
理由
此 crate 定义了一个通用的事件处理特质,可用于创建 ratatui 小部件。
这里的想法不是试图统一不同的事件源。
相反,提供一种特质,可以针对每种事件类型实现一次。由于关于正确键绑定的意见似乎存在很大分歧,我们添加了一个修饰类型,允许有多个键绑定。
如果小部件是以这种方式设计的,即每个键绑定只需调用一个或两个函数,代码重复是可以忽略不计的。
这实现了以下功能
- 小部件作者可以支持不同的事件类型。
- 小部件作者可以提供多个键绑定。
- 应用程序作者可以定义自己的键绑定,并且由于小部件是以这种方式设计的,因此可以做到这一点。
- 由于存在此类特质,因此可以泛型地组合小部件。
有关示例,请参阅 rat-input
组合
为了允许不同返回类型的最小组合级别,存在特质 ConsumedEvent。这允许提前返回,即使不知道返回类型的详细信息。
已知修饰符
这些是预定义的修饰符
- FocusKeys - 此类事件处理器处理具有输入焦点的所有与事件相关的事件。'具有输入焦点'的精确定义在此处未定义,但每个应用程序/框架可以有自己的定义。有关示例,请参阅 rat-focus
- MouseOnly - 没有输入焦点的所有与事件相关的事件处理器。通常这里只有鼠标事件,但也可以有热键。
- Popup - 专门为在其它小部件之上绘制覆盖/弹出窗口的小部件的事件处理器。当两个小部件声称相同的区域时,鼠标交互会变得复杂。我的看法如下
- 将常规小部件行为和弹出行为分开。
- 首先调用所有弹出事件处理器。
- 稍后调用常规事件处理器。
- -> 这种划分有点不幸,但按照这种顺序至少是可行的。有关示例,请参阅 rat-input:MenuBar
工具
ct_event!
一个小巧的生成鼠标事件模式匹配的工具。它的语法比组合结构模式更简洁。
选择器
函数 row_at_clicked
、column_at_clicked
、row_at_drag
和 column_at_drag
可以更轻松地识别矩形的哪个部分实际上是要表示的。
结果
事件处理的参考结果类型。这只是一个基本的起点。您可以自由定义自己的;也许可以添加到 Outcome 的转换。
鼠标标志
识别双击和鼠标拖拽并不简单。这个结构体有助于此,将其添加到您的小部件状态中。
依赖关系
~6–12MB
~120K SLoC