FTXUI 6.1.9
C++ functional terminal UI.
载入中...
搜索中...
未找到
examples/component/selection.cpp
浏览该文件的文档.
1// 版权所有 2020 Arthur Sonzogni。保留所有权利。
2// 本源代码受 MIT 许可证的约束,您可以在 LICENSE 文件中找到该许可证。
3#include <string> // for char_traits, operator+, string, basic_string
4
5#include "ftxui/component/component.hpp" // for Input, Renderer, Vertical
6#include "ftxui/component/component_base.hpp" // for ComponentBase
7#include "ftxui/component/component_options.hpp" // for InputOption
8#include "ftxui/component/screen_interactive.hpp" // for Component, ScreenInteractive
9#include "ftxui/dom/elements.hpp" // for text, hbox, separator, Element, operator|, vbox, border
10#include "ftxui/util/ref.hpp" // for Ref
11
12using namespace ftxui;
13
15 return vbox({
16 text("FTXUI:一个用于构建用户界面的强大库。"),
17 text("享受丰富的组件集和声明式风格。"),
18 text("以最小的努力创建美观且响应迅速的 UI。"),
19 text("加入社区,体验 FTXUI 的强大功能。"),
20 });
21}
22
23int main() {
25
26 auto quit =
27 Button("退出", screen.ExitLoopClosure(), ButtonOption::Animated());
28
29 int selection_change_counter = 0;
30 std::string selection_content = "";
31 screen.SelectionChange([&] {
32 selection_change_counter++;
33 selection_content = screen.GetSelection();
34 });
35
36 // 组件:
37 auto renderer = Renderer(quit, [&] {
38 return vbox({
39 text("选择已更改:" + std::to_string(selection_change_counter) +
40 " 次"),
41 text("当前选中:"),
42 paragraph(selection_content) | vscroll_indicator | frame | border |
43 size(HEIGHT, EQUAL, 10),
44 window(text("水平分割"), hbox({
45 LoremIpsum(),
46 separator(),
47 LoremIpsum(),
48 separator(),
49 LoremIpsum(),
50 })),
51 window(text("垂直分割"), vbox({
52 LoremIpsum(),
53 separator(),
54 LoremIpsum(),
55 separator(),
56 LoremIpsum(),
57 })),
58 window(text("具有不同样式的网格分割"),
59 vbox({
60 hbox({
61 LoremIpsum(),
62 separator(),
63 LoremIpsum() //
67 separator(),
69 }),
70 separator(),
71 hbox({
73 separator(),
74 LoremIpsum() | selectionStyle([](Pixel& pixel) {
75 pixel.underlined_double = true;
76 }),
77 separator(),
78 LoremIpsum(),
79 }),
80 })),
81 quit->Render(),
82 });
83 });
84
85 screen.Loop(renderer);
86}
static ButtonOption Animated()
创建一个使用动画颜色的ButtonOption。
static ScreenInteractive TerminalOutput()
Component Button(ButtonOption options)
绘制一个按钮。点击时执行一个函数。
Component Renderer(Component child, std::function< Element()>)
返回一个新组件,类似于 |child|,但使用 |render| 作为 Component::Render() 事件。
virtual void Render(Screen &screen)
在 ftxui::Screen 上显示元素。
Decorator size(WidthOrHeight, Constraint, int value)
对元素大小应用约束。
Element text(std::wstring text)
显示一段Unicode文本。
Element separator()
在两个其他元素之间绘制垂直或水平分隔线。
Element vbox(Elements)
垂直一个接一个显示元素的容器。
bool underlined_double
一个 Unicode 字符及其相关样式。
#include "ftxui/component/component_base.hpp" // 用于 ComponentBase
std::shared_ptr< Node > Element
Decorator selectionStyle(std::function< void(Pixel &)> style)
设置元素选中时的样式。
Element hbox(Elements)
一个按水平顺序逐一显示元素的容器。
Decorator selectionBackgroundColor(Color foreground)
设置元素选中时的背景颜色。 请注意,此样式是在现有样式之上应用的。
Element window(Element title, Element content, BorderStyle border=ROUNDED)
Decorator selectionColor(Color foreground)
设置元素选中时的颜色。
Element selectionStyleReset(Element)
重置元素的选中样式。
Elements paragraph(std::wstring text)