FTXUI
0.8.1
C++ functional terminal UI.
|
Go to the documentation of this file.
11 bool GeneratorBool(
const char*& data,
size_t&
size) {
15 auto out = bool(data[0] % 2);
21 std::string GeneratorString(
const char*& data,
size_t&
size) {
23 while (index <
size && data[index])
26 auto out = std::string(data, data + index);
36 return std::move(out);
39 int GeneratorInt(
const char* data,
size_t size) {
42 auto out = int(data[0]);
50 std::vector<std::string> g_list;
52 Components GeneratorComponents(
const char*& data,
size_t&
size,
int depth);
54 Component GeneratorComponent(
const char*& data,
size_t&
size,
int depth) {
56 int value = GeneratorInt(data,
size);
58 return Button(GeneratorString(data,
size), [] {});
64 return Input(GeneratorString(data,
size), GeneratorString(data,
size));
66 return Menu(&g_list, &g_int);
70 return Toggle(&g_list, &g_int);
72 return Slider(GeneratorString(data,
size), &g_int,
73 GeneratorInt(data,
size), GeneratorInt(data,
size),
74 GeneratorInt(data,
size));
77 GeneratorComponent(data,
size, depth - 1),
81 GeneratorComponent(data,
size, depth - 1),
85 GeneratorComponent(data,
size, depth - 1),
89 GeneratorComponent(data,
size, depth - 1),
106 return Button(GeneratorString(data,
size), [] {});
110 Components GeneratorComponents(
const char*& data,
size_t&
size,
int depth) {
113 while (
size && GeneratorInt(data,
size) % 2) {
114 out.push_back(GeneratorComponent(data,
size, depth - 1));
117 return std::move(out);
122 g_bool = GeneratorBool(data,
size);
123 g_int = GeneratorInt(data,
size);
125 "test_1",
"test_2",
"test_3",
"test_4",
"test_5",
129 auto component = GeneratorComponent(data,
size, depth);
131 int width = GeneratorInt(data,
size);
132 int height = GeneratorInt(data,
size);
143 auto event_receiver = MakeReceiver<Event>();
146 for (
size_t i = 0; i <
size; ++i)
151 while (event_receiver->Receive(&event)) {
152 component->OnEvent(event);
153 auto document = component->Render();
Component Horizontal(Components children)
A list of components, drawn one by one horizontally and navigated horizontally using left/right arrow...
Component ResizableSplitRight(Component main, Component back, int *main_size)
An horizontal split in between two components, configurable using the mouse.
std::shared_ptr< ComponentBase > Component
std::wstring to_wstring(const std::string &s)
Convert a std::wstring into a UTF8 std::string.
Component ResizableSplitLeft(Component main, Component back, int *main_size)
An horizontal split in between two components, configurable using the mouse.
int LLVMFuzzerTestOneInput(const char *data, size_t size)
Component Checkbox(ConstStringRef label, bool *checked, Ref< CheckboxOption > option={})
Draw checkable element.
Component Slider(ConstStringRef label, T *value, T min, T max, T increment)
An horizontal slider.
Component Tab(Components children, int *selector)
A list of components, where only one is drawn and interacted with at a time. The |selector| gives the...
Component Vertical(Components children)
A list of components, drawn one by one vertically and navigated vertically using up/down arrow key or...
Component Toggle(ConstStringListRef entries, int *selected, Ref< ToggleOption > option={})
An horizontal list of elements. The user can navigate through them.
Component ResizableSplitTop(Component main, Component back, int *main_size)
An vertical split in between two components, configurable using the mouse.
Decorator size(Direction, Constraint, int value)
Apply a constraint on the size of an element.
Component Button(ConstStringRef label, std::function< void()> on_click, Ref< ButtonOption >={})
Draw a button. Execute a function when clicked.
static Screen Create(Dimensions dimension)
Create a screen with the given dimension.
std::vector< Component > Components
Component Radiobox(ConstStringListRef entries, int *selected_, Ref< RadioboxOption > option={})
A list of element, where only one can be selected.
void Render(Screen &screen, const Element &node)
Display an element on a ftxui::Screen.
Component Menu(ConstStringListRef entries, int *selected_, Ref< MenuOption >={})
A list of text. The focused element is selected.
Component ResizableSplitBottom(Component main, Component back, int *main_size)
An vertical split in between two components, configurable using the mouse.
Component Input(StringRef content, ConstStringRef placeholder, Ref< InputOption > option={})
An input box for editing text.
Represent an event. It can be key press event, a terminal resize, or more ...