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
14// Usage:
15//
16// Initialization:
17// ---------------
18//
19// auto table = Table({
20// {"X", "Y"},
21// {"-1", "1"},
22// {"+0", "0"},
23// {"+1", "1"},
24// });
25//
26// table.SelectAll().Border(LIGHT);
27//
28// table.SelectRow(1).Border(DOUBLE);
29// table.SelectRow(1).SeparatorInternal(Light);
30//
31// std::move(table).Element();
32
33class Table;
34class TableSelection;
35
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 void Decorate(Decorator);
67 void DecorateAlternateRow(Decorator, int modulo = 2, int shift = 0);
68 void DecorateAlternateColumn(Decorator, int modulo = 2, int shift = 0);
69
71 void DecorateCellsAlternateColumn(Decorator, int modulo = 2, int shift = 0);
72 void DecorateCellsAlternateRow(Decorator, int modulo = 2, int shift = 0);
73
74 void Border(BorderStyle border = LIGHT);
75 void BorderLeft(BorderStyle border = LIGHT);
76 void BorderRight(BorderStyle border = LIGHT);
77 void BorderTop(BorderStyle border = LIGHT);
78 void BorderBottom(BorderStyle border = LIGHT);
79
80 void Separator(BorderStyle border = LIGHT);
81 void SeparatorVertical(BorderStyle border = LIGHT);
83
84 private:
85 friend Table;
86 Table* table_;
87 int x_min_;
88 int x_max_;
89 int y_min_;
90 int y_max_;
91};
92
93} // namespace ftxui
94
95#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 SeparatorVertical(BorderStyle border=LIGHT)
Draw some vertical separator lines in the selection.
Element Render()
Render the table.
Table()
Create an empty table.
void DecorateCells(Decorator)
Apply the decorator to the selection.
TableSelection SelectCell(int column, int row)
Select a cell of the table.
TableSelection SelectColumn(int column_index)
Select a column of the table.
void BorderLeft(BorderStyle border=LIGHT)
Draw some separator lines to the left side of the selection.
TableSelection SelectRow(int row_index)
Select a row of the table.
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...
TableSelection SelectColumns(int column_min, int column_max)
Select a range of columns of the table.
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.
TableSelection SelectRows(int row_min, int row_max)
Select a range of rows of the table.
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...
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.
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.
The FTXUI ftxui:: namespace.
Definition animation.hpp:10
std::function< Element(Element)> Decorator
Definition elements.hpp:24
std::shared_ptr< Node > Element
Definition elements.hpp:22
BorderStyle
Definition elements.hpp:27
@ LIGHT
Definition elements.hpp:28