#screen #output #bridge #multiple #allowing #terminal #buffer

multi-window-output

允许在同一屏幕上具有多个输出窗口的工具

2 个版本

0.1.4 2023 年 2 月 9 日
0.1.3 2023 年 2 月 9 日
0.1.2 2023 年 2 月 9 日
0.1.1 2023 年 2 月 8 日
0.1.0 2023 年 2 月 7 日

#16 in #allowing

每月 37 次下载

MIT 许可证

23KB
473

多窗口输出

多窗口输出允许你在同一个终端屏幕上拥有多个输出屏幕。每次 Screen 更新时,Screen 会清空其缓冲区并使用 Screen 的内容更新终端屏幕。

Screen

使用 Screen::new() 启动一个新的 Screen。你可以使用 set_name 方法设置屏幕的名称。你也可以使用 set_window_name 方法设置窗口的名称。屏幕的名称将显示在终端的顶部。每个窗口的名称将显示在其底部。默认窗口的 id0

let mut screen = Screen::new();

你可以将窗口分割成多个窗口。调用 append_left_child(id)append_down_child(id) 方法可以垂直或水平分割具有 id 的窗口。

let new_window_id = screen.append_left_child(0).unwrap();
let other_new_window_id = screen.append_down_child(0).unwrap();
let last_window_id = screen.append_left_child(new_window_id).unwrap();

要将内容放置到屏幕上,你可以使用 Screen::println(&mut screen, id, line)Screen::print(&mut screen, id, line),和 Screen::flush(&mut screen, id)

// This will print a new line with "New Line" in the window with id new_window_id and refresh the screen.
screen.println(new_window, "New Line").unwrap();

// This will print a line with "Line" in the window with id new_window_id; however, it will not start a new line nor refresh the screen.
screen.print(new_window, "Line").unwrap();

// This will flush the current line and refresh the screen.
screen.flush(new_window).unwrap();

桥接

Bridge 允许你从不同的位置调用 Screen 的内容函数。这在从不同的线程打印内容时特别有用。使用桥接的唯一缺点是,你不能向传递给 Bridge::new(&screen)Screen 添加新的子窗口。

创建桥接。

let bridge = Bridge::new(screen);

要从多个位置访问桥接器,请使用 Bridge::clone(&bridge) 函数。

let other_bridge = Bridge::clone(&bridge);

要将内容放入您用于创建 BridgeScreen,请使用 Bridge::println(...)Bridge::print(...)Bridge::flush(...)。这些函数与它的 Screen 对应函数工作方式相似。

// Notice how you can call the println function from different variables
bridge.println(new_window, "New Line").unwrap();
other_bridge.println(new_window, "New New Line").unwrap();

理想情况下,当您完成屏幕的使用后,运行 bridge.kill() 来结束屏幕过程。

https://user-images.githubusercontent.com/57689554/214165855-e4569f2d-499e-471d-8d88-159cab0fe3a0.mp4

依赖项

~175KB