#ratatui #tui #console #terminal #cli #ui #terminal-text

tui-scrollview

为Ratatui提供简单的可滚动视图

22个不稳定版本 (3个破坏性更新)

0.4.0 2024年8月12日
0.3.11 2024年7月25日
0.3.3 2024年3月28日

#640 in 命令行界面

Download history 78/week @ 2024-04-29 96/week @ 2024-05-06 147/week @ 2024-05-13 294/week @ 2024-05-20 33/week @ 2024-05-27 15/week @ 2024-06-03 11/week @ 2024-06-10 40/week @ 2024-06-17 170/week @ 2024-06-24 39/week @ 2024-07-01 42/week @ 2024-07-08 104/week @ 2024-07-15 623/week @ 2024-07-22 144/week @ 2024-07-29 282/week @ 2024-08-05 211/week @ 2024-08-12

每月1,263次下载
5 crates 中使用

MIT/Apache

28KB
371 行代码

Tui-scrollview

Crates.io Badge License Badge Docs.rs Badge
Deps.rs Badge Codecov.io Badge Discord Badge

tui-scrollview 是一个用于在 Ratatui 中创建可滚动视图的库。

安装

cargo add tui-scrollview

使用方法

use std::iter;
use tui_scrollview::{ScrollView, ScrollViewState};
use ratatui::{layout::Size, prelude::*, widgets::*};

struct MyScrollableWidget;

impl StatefulWidget for MyScrollableWidget {
    type State = ScrollViewState;

    fn render(self, area: Rect, buf: &mut Buffer, state: &mut Self::State) {
        // 100 lines of text
        let line_numbers = (1..=100).map(|i| format!("{:>3} ", i)).collect::<String>();
        let content =
            iter::repeat("Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n")
                .take(100)
                .collect::<String>();

        let content_size = Size::new(100, 30);
        let mut scroll_view = ScrollView::new(content_size);

        // the layout doesn't have to be hardcoded like this, this is just an example
        scroll_view.render_widget(Paragraph::new(line_numbers), Rect::new(0, 0, 5, 100));
        scroll_view.render_widget(Paragraph::new(content), Rect::new(5, 0, 95, 100));

        scroll_view.render(buf.area, buf, state);
    }
}

完整示例

完整示例可以在 [examples] 目录中找到。 scrollview.rs

此示例展示了带有两段文本的可滚动视图,一段用于行号,另一段用于文本。在这个视图之上,还有一个仪表盘小部件来显示这可以与其他任何小部件结合使用。

Demo

(注意:github的一个错误导致上面的示例GIF无法显示,但您可以在: https://vhs.charm.sh/vhs-6PuT3pdwSTp4aTvKrCBx9F.gif)

待办事项

  • 条件显示滚动条
  • 实现水平滚动和条

许可证

版权所有 © Josh McKinney

本项目受以下其中之一许可

根据您选择。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的,您有意提交的任何贡献,都将按上述方式双许可,不附加任何额外条款或条件。

查看 CONTRIBUTING.md.

依赖

~9.5MB
~158K SLoC