FTXUI 7.0.3
C++ functional terminal UI.
Loading...
Searching...
No Matches
examples/component/selection.cpp
Go to the documentation of this file.
1// Copyright 2020 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#include <string> // for char_traits, operator+, string, basic_string
5
6#include "ftxui/component/app.hpp" // for Component, App
7#include "ftxui/component/component.hpp" // for Input, Renderer, Vertical
8#include "ftxui/component/component_base.hpp" // for ComponentBase
9#include "ftxui/component/component_options.hpp" // for InputOption
10#include "ftxui/dom/elements.hpp" // for text, hbox, separator, Element, operator|, vbox, border
11#include "ftxui/util/ref.hpp" // for Ref
12
13using namespace ftxui;
14
16 return text(
17 "FTXUI: A powerful library for building user interfaces.\n"
18 "Enjoy a rich set of components and a declarative style.\n"
19 "Create beautiful and responsive UIs with minimal effort.\n"
20 "Join the community and experience the power of FTXUI.");
21}
22
23int main() {
24 auto screen = App::TerminalOutput();
25
26 auto quit =
27 Button("Quit", 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 // Los componentes:
37 auto renderer = Renderer(quit, [&] {
38 return vbox({
39 text("Select changed: " + std::to_string(selection_change_counter) +
40 " times"),
41 text("Currently selected: "),
42 paragraph(selection_content) | vscroll_indicator | frame | border |
43 size(HEIGHT, EQUAL, 10),
44 window(text("Horizontal split"), hbox({
45 LoremIpsum(),
46 separator(),
47 LoremIpsum(),
48 separator(),
49 LoremIpsum(),
50 })),
51 window(text("Vertical split"), vbox({
52 LoremIpsum(),
53 separator(),
54 LoremIpsum(),
55 separator(),
56 LoremIpsum(),
57 })),
58 window(text("Grid split with different style"),
59 vbox({
60 hbox({
61 LoremIpsum(),
62 separator(),
63 LoremIpsum() //
64 | selectionBackgroundColor(Color::Yellow) //
65 | selectionColor(Color::Black) //
67 separator(),
68 LoremIpsum() | selectionColor(Color::Blue),
69 }),
70 separator(),
71 hbox({
72 LoremIpsum() | selectionColor(Color::Red),
73 separator(),
74 LoremIpsum() | selectionStyle([](Cell& pixel) {
75 pixel.underlined_double = true;
76 }),
77 separator(),
78 LoremIpsum(),
79 }),
80 })),
81 quit->Render(),
82 });
83 });
84
85 screen.Loop(renderer);
86}
Element LoremIpsum()
Component Button(ConstStringRef label, std::function< void()> on_click, ButtonOption options=ButtonOption::Simple())
Dibuja un botón. Ejecuta una función cuando se hace clic.
Component Renderer(Component child, std::function< Element()>)
Devuelve un nuevo Component, similar a |child|, pero usando |render| como el evento Component::Render...
Element window(Element title, Element content, BorderStyle border=ROUNDED)
Dibuja una ventana con un título y un borde alrededor del elemento.
Element text(std::string_view text)
Muestra un fragmento de texto Unicode codificado en UTF8.
Decorator size(WidthOrHeight direction, Constraint constraint, int value)
Aplica una restricción al tamaño de un elemento.
Element paragraph(std::string_view the_text)
Devuelve un elemento que dibuja el párrafo en varias líneas.
Element separator()
Dibuja una separación vertical u horizontal entre otros dos elementos.
Element vbox(Elements children)
Un contenedor que muestra elementos verticalmente uno por uno.
Definition vbox.cpp:96
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:11
std::shared_ptr< Node > Element
Definition elements.hpp:25
Element hbox(Elements children)
Un contenedor que muestra elementos horizontalmente uno por uno.
Definition hbox.cpp:94
Decorator selectionBackgroundColor(Color foreground)
Establece el color de fondo de un elemento cuando está seleccionado. Tenga en cuenta que el estilo se...
Decorator selectionColor(Color foreground)
Establece el color de un elemento cuando está seleccionado.
Element selectionStyleReset(Element child)
Restablece el estilo de selección de un elemento.
Decorator selectionStyle(std::function< void(Cell &)> style)
Establece el estilo de un elemento cuando está seleccionado.