FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
table.hpp
Go to the documentation of this file.
1// Copyright 2021 Arthur Sonzogni. All rights reserved.
2// Use of this source code is governed by the MIT license that can be found in
3// the LICENSE file.
4#ifndef FTXUI_DOM_TABLE
5#define FTXUI_DOM_TABLE
6
7#include <string> // for string
8#include <vector> // for vector
9
10#include "ftxui/dom/elements.hpp" // for Element, BorderStyle, LIGHT, Decorator
11
12namespace ftxui {
13
14class Table;
15class TableSelection;
16
17/// @brief Table is a utility to draw tables.
18///
19/// **example**
20/// ```cpp
21/// auto table = Table({
22/// {"X", "Y"},
23/// {"-1", "1"},
24/// {"+0", "0"},
25/// {"+1", "1"},
26/// });
27///
28/// table.SelectAll().Border(LIGHT);
29/// table.SelectRow(1).Border(DOUBLE);
30/// table.SelectRow(1).SeparatorInternal(LIGHT);
31///
32/// std::move(table).Render();
33/// ```
34///
35/// @ingroup dom
36class Table {
37 public:
38 Table();
39 explicit Table(std::vector<std::vector<std::string>>);
40 explicit Table(std::vector<std::vector<Element>>);
41 Table(std::initializer_list<std::vector<std::string>> init);
43 TableSelection SelectCell(int column, int row);
44 TableSelection SelectRow(int row_index);
45 TableSelection SelectRows(int row_min, int row_max);
46 TableSelection SelectColumn(int column_index);
47 TableSelection SelectColumns(int column_min, int column_max);
48 TableSelection SelectRectangle(int column_min,
49 int column_max,
50 int row_min,
51 int row_max);
53
54 private:
55 void Initialize(std::vector<std::vector<Element>>);
56 friend TableSelection;
57 std::vector<std::vector<Element>> elements_;
58 int input_dim_x_ = 0;
59 int input_dim_y_ = 0;
60 int dim_x_ = 0;
61 int dim_y_ = 0;
62};
63
65 public:
66 // Decorate the whole selection with a decorator.
67 void Decorate(Decorator);
68 void DecorateAlternateRow(Decorator, int modulo = 2, int shift = 0);
69 void DecorateAlternateColumn(Decorator, int modulo = 2, int shift = 0);
70
71 // Decorate only the cells of the selection with a decorator.
73 void DecorateCellsAlternateColumn(Decorator, int modulo = 2, int shift = 0);
74 void DecorateCellsAlternateRow(Decorator, int modulo = 2, int shift = 0);
75
76 // Decorate only the border of the selection with a decorator.
82
83 // Decorate only the separator of the selection with a decorator.
87
88 // Decorate the border of the selection with a border style and a decorator.
89 void Border(BorderStyle border = LIGHT);
91 void BorderLeft(BorderStyle border = LIGHT);
93 void BorderRight(BorderStyle border = LIGHT);
95 void BorderTop(BorderStyle border = LIGHT);
97 void BorderBottom(BorderStyle border = LIGHT);
99
100 // Decorate the separator of the selection with a border style and a
101 // decorator.
102 void Separator(BorderStyle border = LIGHT);
104 void SeparatorVertical(BorderStyle border = LIGHT);
108
109 private:
110 friend Table;
111 Table* table_;
112 int x_min_;
113 int x_max_;
114 int y_min_;
115 int y_max_;
116};
117
118} // namespace ftxui
119
120#endif /* end of include guard: FTXUI_DOM_TABLE */
void DecorateAlternateColumn(Decorator, int modulo=2, int shift=0)
Apply the decorator to the selection. This decorate only the lines modulo modulo with a shift of shif...
void DecorateSeparatorHorizontal(Decorator)
Apply the decorator to the horizontal separators of the selection.
void DecorateBorderBottom(Decorator)
Apply the decorator to the bottom border of the selection.
void DecorateSeparator(Decorator)
Apply the decorator to the separators of the selection.
void SeparatorVertical(BorderStyle border=LIGHT)
Draw some vertical separator lines in the selection.
void DecorateCells(Decorator)
Apply the decorator to the selection.
void DecorateBorderRight(Decorator)
Apply the decorator to the right border of the selection.
void DecorateBorder(Decorator)
Apply the decorator to the border of the selection.
void BorderLeft(BorderStyle border=LIGHT)
Draw some separator lines to the left side of the selection.
void DecorateCellsAlternateColumn(Decorator, int modulo=2, int shift=0)
Apply the decorator to the selection. This decorate only the corners modulo modulo with a shift of sh...
void DecorateBorderLeft(Decorator)
Apply the decorator to the left border of the selection.
void Decorate(Decorator)
Apply the decorator to the selection. This decorate both the cells, the lines and the corners.
void DecorateAlternateRow(Decorator, int modulo=2, int shift=0)
Apply the decorator to the selection. This decorate only the lines modulo modulo with a shift of shif...
void BorderTop(BorderStyle border=LIGHT)
Draw some separator lines to the top side of the selection.
void Separator(BorderStyle border=LIGHT)
Draw some separator lines in the selection.
void BorderBottom(BorderStyle border=LIGHT)
Draw some separator lines to the bottom side of the selection.
void DecorateCellsAlternateRow(Decorator, int modulo=2, int shift=0)
Apply the decorator to the selection. This decorate only the corners modulo modulo with a shift of sh...
void DecorateBorderTop(Decorator)
Apply the decorator to the top border of the selection.
void DecorateSeparatorVertical(Decorator)
Apply the decorator to the vertical separators of the selection.
void BorderRight(BorderStyle border=LIGHT)
Draw some separator lines to the right side of the selection.
void Border(BorderStyle border=LIGHT)
Apply a border around the selection.
void SeparatorHorizontal(BorderStyle border=LIGHT)
Draw some horizontal separator lines in the selection.
Element Render()
Render the table.
Table()
Create an empty table.
TableSelection SelectCell(int column, int row)
Select a cell of the table.
TableSelection SelectColumn(int column_index)
Select a column of the table.
TableSelection SelectRow(int row_index)
Select a row of the table.
TableSelection SelectColumns(int column_min, int column_max)
Select a range of columns of the table.
TableSelection SelectRows(int row_min, int row_max)
Select a range of rows of the table.
TableSelection SelectAll()
Select all the table.
TableSelection SelectRectangle(int column_min, int column_max, int row_min, int row_max)
Select a rectangle of the table.
Table is a utility to draw tables.
Definition table.hpp:36
BorderStyle
BorderStyle is an enumeration that represents the different styles of borders that can be applied to ...
Definition elements.hpp:36
@ LIGHT
Definition elements.hpp:37
The FTXUI ftxui:: namespace.
Definition animation.hpp:10
std::function< Element(Element)> Decorator
Definition elements.hpp:25
std::shared_ptr< Node > Element
Definition elements.hpp:23