FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
component.hpp
Go to the documentation of this file.
1// Copyright 2021 Arthur Sonzogni. Todos los derechos reservados.
2// El uso de este código fuente se rige por la licencia MIT que se puede encontrar en
3// el archivo LICENSE.
4#ifndef FTXUI_COMPONENT_HPP
5#define FTXUI_COMPONENT_HPP
6
7#include <functional> // for function
8#include <memory> // for make_shared, shared_ptr
9#include <utility> // for forward
10
12#include "ftxui/component/component_base.hpp" // for Component, Components
13#include "ftxui/component/component_options.hpp" // for ButtonOption, CheckboxOption, MenuOption
14#include "ftxui/dom/elements.hpp" // for Element
15#include "ftxui/util/ref.hpp" // for ConstRef, Ref, ConstStringRef, ConstStringListRef, StringRef
16
17namespace ftxui {
18struct ButtonOption;
19struct CheckboxOption;
20struct Event;
21struct InputOption;
22struct MenuOption;
23struct RadioboxOption;
24struct MenuEntryOption;
25
26template <class T, class... Args>
27std::shared_ptr<T> Make(Args&&... args) {
28 return std::make_shared<T>(std::forward<Args>(args)...);
29}
30
31// Operador de tubería para decorar componentes.
32using ComponentDecorator = std::function<Component(Component)>;
33using ElementDecorator = std::function<Element(Element)>;
35Component operator|(Component component, ElementDecorator decorator);
36Component& operator|=(Component& component, ComponentDecorator decorator);
37Component& operator|=(Component& component, ElementDecorator decorator);
38
39namespace Container {
41Component Vertical(Components children, int* selector);
43Component Horizontal(Components children, int* selector);
44Component Tab(Components children, int* selector);
46} // namespace Container
47
50 std::function<void()> on_click,
52
55 bool* checked,
57
58Component Input(InputOption options = {});
59Component Input(StringRef content, InputOption options = {});
60Component Input(StringRef content,
61 StringRef placeholder,
62 InputOption options = {});
63
64Component Menu(MenuOption options);
65Component Menu(ConstStringListRef entries,
66 int* selected_,
67 MenuOption options = MenuOption::Vertical());
68Component MenuEntry(MenuEntryOption options);
69Component MenuEntry(ConstStringRef label, MenuEntryOption options = {});
70
71Component Radiobox(RadioboxOption options);
72Component Radiobox(ConstStringListRef entries,
73 int* selected_,
74 RadioboxOption options = {});
75
76Component Dropdown(ConstStringListRef entries, int* selected);
77Component Dropdown(DropdownOption options);
78
79Component Toggle(ConstStringListRef entries, int* selected);
80
81// Constructor de deslizador general:
82template <typename T>
83Component Slider(SliderOption<T> options);
84
85// Abreviatura sin el constructor `SliderOption`:
86Component Slider(ConstStringRef label,
87 Ref<int> value,
88 ConstRef<int> min = 0,
89 ConstRef<int> max = 100,
90 ConstRef<int> increment = 5);
91Component Slider(ConstStringRef label,
92 Ref<float> value,
93 ConstRef<float> min = 0.f,
94 ConstRef<float> max = 100.f,
95 ConstRef<float> increment = 5.f);
96Component Slider(ConstStringRef label,
97 Ref<long> value,
98 ConstRef<long> min = 0L,
99 ConstRef<long> max = 100L,
100 ConstRef<long> increment = 5L);
101
102Component ResizableSplit(ResizableSplitOption options);
105Component ResizableSplitTop(Component main, Component back, int* main_size);
107
108Component Renderer(Component child, std::function<Element()>);
109Component Renderer(std::function<Element()>);
110Component Renderer(std::function<Element(bool /* focused */)>);
112
113Component CatchEvent(Component child, std::function<bool(Event)>);
114ComponentDecorator CatchEvent(std::function<bool(Event)> on_event);
115
116Component Maybe(Component, const bool* show);
117Component Maybe(Component, std::function<bool()>);
118ComponentDecorator Maybe(const bool* show);
119ComponentDecorator Maybe(std::function<bool()>);
120
121Component Modal(Component main, Component modal, const bool* show_modal);
122ComponentDecorator Modal(Component modal, const bool* show_modal);
123
125 Component child,
126 Ref<bool> show = false);
127
128Component Hoverable(Component component, bool* hover);
130 std::function<void()> on_enter,
131 std::function<void()> on_leave);
132Component Hoverable(Component component, //
133 std::function<void(bool)> on_change);
134ComponentDecorator Hoverable(bool* hover);
135ComponentDecorator Hoverable(std::function<void()> on_enter,
136 std::function<void()> on_leave);
137ComponentDecorator Hoverable(std::function<void(bool)> on_change);
138
140
141} // namespace ftxui
142
143#endif /* end of include guard: FTXUI_COMPONENT_HPP */
Un adaptador. Posee o referencia una cadena constante. Para mayor comodidad, esta clase convierte múl...
Definition ref.hpp:94
Un adaptador. Posee o referencia un objeto mutable.
Definition ref.hpp:46
static CheckboxOption Simple()
Opción para Checkbox estándar.
static ButtonOption Simple()
Crea una ButtonOption, invertida cuando está enfocada.
static MenuOption Vertical()
Opciones estándar para un menú vertical. Esto puede ser útil para implementar una lista de elementos ...
Component Horizontal(Components children)
Una lista de componentes, dibujados uno a uno horizontalmente y navegados horizontalmente usando las ...
Component Maybe(Component, const bool *show)
Decora un componente |child|. Se muestra solo cuando |show| es verdadero.
Component ResizableSplitTop(Component main, Component back, int *main_size)
Una división vertical entre dos componentes, configurable usando el ratón.
Component Menu(MenuOption options)
Una lista de texto. El elemento enfocado es seleccionado.
Component MenuEntry(MenuEntryOption options)
Una entrada de menú específica. Se pueden colocar en un Container::Vertical para formar un menú.
Component Toggle(ConstStringListRef entries, int *selected)
Una lista horizontal de elementos. El usuario puede navegar a través de ellos.
Component Radiobox(RadioboxOption options)
Una lista de elementos, donde solo uno puede ser seleccionado.
Component Button(ButtonOption options)
Dibuja un botón. Ejecuta una función al hacer clic.
Component Modal(Component main, Component modal, const bool *show_modal)
Definition modal.cpp:18
Component Renderer(Component child, std::function< Element()>)
Retorna un nuevo Componente, similar a |child|, pero usando |render| como el evento Component::Render...
Component Hoverable(Component component, bool *hover)
Envuelve un componente. Permite saber si el ratón lo está "hovering".
Definition hoverable.cpp:42
Component Window(WindowOptions option)
Una ventana arrastrable y redimensionable. Para usar varias, deben apilarse usando el componente Cont...
Component Vertical(Components children)
Una lista de componentes, dibujados uno a uno verticalmente y navegados verticalmente usando las tecl...
Component Input(InputOption options={})
Un cuadro de entrada para editar texto.
Component ResizableSplitRight(Component main, Component back, int *main_size)
Una división horizontal entre dos componentes, configurable usando el ratón.
Component Dropdown(ConstStringListRef entries, int *selected)
Un menú desplegable.
Component Stacked(Components children)
Una lista de componentes que se apilan uno encima del otro. Los eventos se propagan al primer compone...
Component ResizableSplitBottom(Component main, Component back, int *main_size)
Una división vertical entre dos componentes, configurable usando el ratón.
Component Checkbox(CheckboxOption options)
Dibuja un elemento seleccionable.
Component ResizableSplitLeft(Component main, Component back, int *main_size)
Una división horizontal entre dos componentes, configurable usando el ratón.
Component Tab(Components children, int *selector)
Una lista de componentes, donde solo uno se dibuja e interactúa a la vez. El |selector| da el índice ...
Opción para el componente AnimatedButton.
Opción para el componente Checkbox.
Representa un evento. Puede ser un evento de pulsación de tecla, un redimensionamiento de terminal,...
Definition event.hpp:29
Opción para el componente Input.
El espacio de nombres ftxui::Container:: de FTXUI.
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:10
std::shared_ptr< T > Make(Args &&... args)
Definition component.hpp:27
std::shared_ptr< Node > Element
Definition elements.hpp:22
std::function< Element(Element)> ElementDecorator
Definition component.hpp:33
std::vector< Component > Components
Component ResizableSplit(ResizableSplitOption options)
Una división entre dos componentes.
Component operator|(Component component, ComponentDecorator decorator)
Component Collapsible(ConstStringRef label, Component child, Ref< bool > show=false)
Un componente plegable. Muestra una casilla de verificación con una flecha. Una vez activado,...
Component Slider(SliderOption< T > options)
Un deslizador en cualquier dirección.
Component & operator|=(Component &component, ComponentDecorator decorator)
std::function< Component(Component)> ComponentDecorator
Definition component.hpp:32
std::shared_ptr< ComponentBase > Component
Component CatchEvent(Component child, std::function< bool(Event)>)