FTXUI 6.1.9
C++ functional terminal UI.
载入中...
搜索中...
未找到
table.hpp
浏览该文件的文档.
1// Copyright 2021 Arthur Sonzogni. 保留所有权利。
2// 本源代码的使用受可在 LICENSE 文件中找到的 MIT 许可协议的约束。
3#ifndef FTXUI_DOM_TABLE
4#define FTXUI_DOM_TABLE
5
6#include <string> // for string
7#include <vector> // for vector
8
9#include "ftxui/dom/elements.hpp" // for Element, BorderStyle, LIGHT, Decorator
10
11namespace ftxui {
12
13class Table;
14class TableSelection;
15
16/// @brief Table 是一个绘制表格的实用工具。
17///
18/// **示例**
19/// ```cpp
20/// auto table = Table({
21/// {"X", "Y"},
22/// {"-1", "1"},
23/// {"+0", "0"},
24/// {"+1", "1"},
25/// });
26///
27/// table.SelectAll().Border(LIGHT);
28/// table.SelectRow(1).Border(DOUBLE);
29/// table.SelectRow(1).SeparatorInternal(LIGHT);
30///
31/// std::move(table).Render();
32/// ```
33///
34/// @ingroup dom
35class Table {
36 public:
37 Table();
38 explicit Table(std::vector<std::vector<std::string>>);
39 explicit Table(std::vector<std::vector<Element>>);
40 Table(std::initializer_list<std::vector<std::string>> init);
42 TableSelection SelectCell(int column, int row);
43 TableSelection SelectRow(int row_index);
44 TableSelection SelectRows(int row_min, int row_max);
45 TableSelection SelectColumn(int column_index);
46 TableSelection SelectColumns(int column_min, int column_max);
47 TableSelection SelectRectangle(int column_min,
48 int column_max,
49 int row_min,
50 int row_max);
52
53 private:
54 void Initialize(std::vector<std::vector<Element>>);
55 friend TableSelection;
56 std::vector<std::vector<Element>> elements_;
57 int input_dim_x_ = 0;
58 int input_dim_y_ = 0;
59 int dim_x_ = 0;
60 int dim_y_ = 0;
61};
62
64 public:
65 void Decorate(Decorator);
66 void DecorateAlternateRow(Decorator, int modulo = 2, int shift = 0);
67 void DecorateAlternateColumn(Decorator, int modulo = 2, int shift = 0);
68
70 void DecorateCellsAlternateColumn(Decorator, int modulo = 2, int shift = 0);
71 void DecorateCellsAlternateRow(Decorator, int modulo = 2, int shift = 0);
72
73 void Border(BorderStyle border = LIGHT);
74 void BorderLeft(BorderStyle border = LIGHT);
75 void BorderRight(BorderStyle border = LIGHT);
76 void BorderTop(BorderStyle border = LIGHT);
77 void BorderBottom(BorderStyle border = LIGHT);
78
79 void Separator(BorderStyle border = LIGHT);
80 void SeparatorVertical(BorderStyle border = LIGHT);
82
83 private:
84 friend Table;
85 Table* table_;
86 int x_min_;
87 int x_max_;
88 int y_min_;
89 int y_max_;
90};
91
92} // namespace ftxui
93
94#endif /* end of include guard: FTXUI_DOM_TABLE */
void DecorateAlternateColumn(Decorator, int modulo=2, int shift=0)
将 decorator 应用于选择。 这只装饰模数为 modulo 且偏移量为 shift 的线条。
void SeparatorVertical(BorderStyle border=LIGHT)
在选择中绘制一些垂直分隔线。
void DecorateCells(Decorator)
将 decorator 应用于选择。
void BorderLeft(BorderStyle border=LIGHT)
在选择的左侧绘制一些分隔线。
void DecorateCellsAlternateColumn(Decorator, int modulo=2, int shift=0)
将 decorator 应用于选择。 这只装饰模数为 modulo 且偏移量为 shift 的角。
void Decorate(Decorator)
将 decorator 应用于选择。 这将装饰单元格、线条和角。
void DecorateAlternateRow(Decorator, int modulo=2, int shift=0)
将 decorator 应用于选择。 这只装饰模数为 modulo 且偏移量为 shift 的线条。
void BorderTop(BorderStyle border=LIGHT)
在选择的顶部绘制一些分隔线。
void Separator(BorderStyle border=LIGHT)
在选择中绘制一些分隔线。
void BorderBottom(BorderStyle border=LIGHT)
在选择的底部绘制一些分隔线。
void DecorateCellsAlternateRow(Decorator, int modulo=2, int shift=0)
将 decorator 应用于选择。 这只装饰模数为 modulo 且偏移量为 shift 的角。
void BorderRight(BorderStyle border=LIGHT)
在选择的右侧绘制一些分隔线。
void Border(BorderStyle border=LIGHT)
在选择周围应用 border。
void SeparatorHorizontal(BorderStyle border=LIGHT)
在选择中绘制一些水平分隔线。
Element Render()
渲染表格。
Table()
创建一个空表格。
TableSelection SelectCell(int column, int row)
选择表格的一个单元格。
TableSelection SelectColumn(int column_index)
选择表格的一列。
TableSelection SelectRow(int row_index)
选择表格的一行。
TableSelection SelectColumns(int column_min, int column_max)
选择表格的列范围。
TableSelection SelectRows(int row_min, int row_max)
选择表格的行范围。
TableSelection SelectAll()
选择整个表格。
TableSelection SelectRectangle(int column_min, int column_max, int row_min, int row_max)
选择表格的一个矩形区域。
Table 是一个绘制表格的实用工具。
BorderStyle
BorderStyle 是一个枚举,表示可应用于终端 UI 中元素的不同边框样式。
#include "ftxui/component/component_base.hpp" // 用于 ComponentBase
std::function< Element(Element)> Decorator
std::shared_ptr< Node > Element