#终端 #组件 #cli #spinner #表格 #应用程序 #输入

rustubble

关于您的crate所做事情的简要描述

4个版本

0.1.3 2024年5月7日
0.1.2 2024年5月6日
0.1.1 2024年4月30日
0.1.0 2024年4月24日

#882 in 命令行工具


用于 bubblers

Apache-2.0

3.5MB
3.5K SLoC

rustubble

为您的终端提供美观的组件。

Rust

动机

本项目旨在提供一套可用于终端应用程序的组件。

组件

文本输入组件

textInput

TextInput组件是一个灵活且可定制的输入字段,专为使用Rust的基于终端的应用程序设计。它支持Unicode、动态输入处理,并提供了各种定制选项,以增强用户交互。

功能

  • Unicode支持:无缝处理Unicode输入。
  • 动态输入处理:支持实时输入处理,包括粘贴和删除。
  • 定制:允许设置填充、占位符、初始文本和辅助文本。
  • 光标管理:管理光标定位并确保它始终根据用户交互正确放置。

用法

文本区域组件

textArea

一个文本区域字段,类似于HTML中的<textarea/>。允许输入跨越多行。支持Unicode、粘贴、当值超出元素宽度和高度时垂直滚动,以及许多定制选项。

用法

旋转器组件

spinner

旋转器组件为Rust编写的CLI应用程序提供易于使用和可定制的加载动画,利用Crossterm库处理终端输出。此组件允许在长时间运行的操作期间进行动态视觉显示。

功能

  • 多种旋转器样式:选择各种预定义的旋转器样式,包括点、线等更复杂的模式。
  • 可定制速度:控制旋转器动画的速度。
  • 可定制消息:将消息附加到旋转器旁边,以便向用户提供实时反馈。
  • 易于集成:简单的API用于启动、更新和停止旋转器。

用法

自定义旋转器

您可以在初始化时自定义旋转器样式和消息。以下是指定不同旋转器样式的示例

let spinner = Spinner::new("Dots2", "Loading resources...");

可用的样式包括DotsDots2Dots3等。请参阅spinner_data.rs文件,以获取完整样式列表及其配置。

旋转器样式

旋转器样式在文件 spinner_data.rs 中的 lazy_static 块中预定义。每个样式都有一个唯一的键,包括帧数组以及以毫秒为单位的间隔时间。

以下是旋转器样式定义的摘录

lazy_static! {
    static ref SPINNERS: HashMap<String, SpinnerData> = {
        hashmap! {
            "Dots".into() => SpinnerData {
                frames: vec!["", "", "", "", "", "", "", "", "", ""],
                interval: 80
            },
            // Additional spinner styles...
        }
    };
}

表格组件

Table 组件允许你使用 Rust 在终端应用程序中创建表格。该组件提供了一种灵活且可定制的显示数据表格格式的方法。

table

用法

自定义表格

你可以设置表格的填充、可见行数和滚动偏移量。以下是一个自定义表格的示例

let mut table = Table::new(headers, data, 0, 3, 7);

你可以在渲染时设置表格在视图中的位置

 let (x, y) = (5, 5);
  handle_table(&mut table, x, y);

进度条组件

ProgressBar 组件是一个多才多艺且可定制的加载动画,适用于用 Rust 编写的 CLI 应用程序。此组件允许在长时间运行的操作期间动态显示可视效果。

progress

用法

视图组件

ViewPort 组件允许你在终端应用程序中创建视图。该组件提供了一种灵活且可定制的显示数据字符串视图格式的方法。

viewport

用法

计时器组件

一个简单的倒计时组件。

stopwatch

用法

计时器组件

一个简单的计数组件。

timer

用法

列表组件

list

一个使用 ratatui 构建的列表组件。

用法

菜单列表组件

menulist

一个使用 ratatui 构建的菜单列表组件。

用法

贡献

欢迎贡献!如果您对改进旋转器或添加新样式有建议,请在我们的 GitHub 仓库中打开一个问题或拉取请求。

许可协议

本项目采用 Apache 许可协议 - 详细信息请参阅 LICENSE 文件。

依赖项

~8–18MB
~246K SLoC