FTXUI 6.1.9
C++ functional terminal UI.
Loading...
Searching...
No Matches
component_base.hpp
Go to the documentation of this file.
1// Copyright 2020 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_BASE_HPP
5#define FTXUI_COMPONENT_BASE_HPP
6
7#include <memory> // for unique_ptr
8#include <vector> // for vector
9
10#include "ftxui/component/captured_mouse.hpp" // for CaptureMouse
11#include "ftxui/dom/elements.hpp" // for Element
12
13namespace ftxui {
14
15class Delegate;
16class Focus;
17struct Event;
18
19namespace animation {
20class Params;
21} // namespace animation
22
23class ComponentBase;
24using Component = std::shared_ptr<ComponentBase>;
25using Components = std::vector<Component>;
26
27/// @brief Implementa el renderizado de sí mismo como ftxui::Element. Implementa
28/// la navegación por teclado respondiendo a ftxui::Event.
29/// @ingroup component
31 public:
32 explicit ComponentBase(Components children)
33 : children_(std::move(children)) {}
34 virtual ~ComponentBase();
35 ComponentBase() = default;
36
37 // Un componente no es copiable/movible.
38 ComponentBase(const ComponentBase&) = delete;
42
43 // Jerarquía de componentes:
44 ComponentBase* Parent() const;
45 Component& ChildAt(size_t i);
46 size_t ChildCount() const;
47 int Index() const;
48 void Add(Component children);
49 void Detach();
50 void DetachAllChildren();
51
52 // Renderiza el componente.
54
55 // Sobreescribe esta función para modificar cómo funciona `Render`.
56 virtual Element OnRender();
57
58 // Maneja un evento.
59 // Por defecto, se reduce a los hijos con un OR perezoso.
60 //
61 // Devuelve si el evento fue manejado o no.
62 virtual bool OnEvent(Event);
63
64 // Maneja un paso de animación.
65 virtual void OnAnimation(animation::Params& params);
66
67 // Gestión del foco ----------------------------------------------------------
68 //
69 // Si este componente contiene hijos, esto indica cuál está activo,
70 // nullptr si ninguno está activo.
71 //
72 // Decimos que un elemento tiene el foco si la cadena de ActiveChild() desde el
73 // componente raíz contiene este objeto.
74 virtual Component ActiveChild();
75
76 // Devuelve true cuando el componente contiene elementos enfocables.
77 // El componente no enfocable se omitirá al navegar usando el
78 // teclado.
79 virtual bool Focusable() const;
80
81 // Si este es el hijo activo de su padre.
82 bool Active() const;
83 // Si todos los ancestros están activos.
84 bool Focused() const;
85
86 // Hace que el |hijo| sea el "activo".
87 virtual void SetActiveChild(ComponentBase* child);
88 void SetActiveChild(Component child);
89
90 // Configura todos los ancestros para dar foco a este componente.
91 void TakeFocus();
92
93 protected:
94 CapturedMouse CaptureMouse(const Event& event);
95
97
98 private:
99 ComponentBase* parent_ = nullptr;
100 bool in_render = false;
101};
102
103} // namespace ftxui
104
105#endif /* fin de la guarda de inclusión: FTXUI_COMPONENT_BASE_HPP */
virtual bool Focusable() const
Devuelve verdadero cuando el componente contiene elementos enfocables. Los componentes no enfocables ...
bool Focused() const
Devuelve si el elemento está enfocado por el usuario. Verdadero cuando el ComponentBase está enfocado...
CapturedMouse CaptureMouse(const Event &event)
Toma el CapturedMouse si está disponible. Solo hay un componente de ellos. Representa un componente q...
void Add(Component children)
Agrega un hijo. @param child El hijo a adjuntar.
Definition component.cpp:70
Element Render()
Dibuja el componente. Construye un ftxui::Element para ser dibujado en la ftxui::Screen representando...
void TakeFocus()
Configura todos los ancestros para dar foco a este componente.
bool Active() const
Devuelve si el elemento es el hijo actualmente activo de su padre.
virtual Component ActiveChild()
Devuelve el hijo actualmente activo.
void DetachAllChildren()
Elimina todos los hijos.
Definition component.cpp:94
virtual void SetActiveChild(ComponentBase *child)
Hace que |child| sea el activo.
int Index() const
Devuelve el índice del componente en su padre. -1 si no tiene padre.
Definition component.cpp:54
size_t ChildCount() const
Devuelve el número de hijos.
Definition component.cpp:49
ComponentBase(ComponentBase &&)=delete
ComponentBase & operator=(ComponentBase &&)=delete
ComponentBase * Parent() const
Devuelve el ComponentBase padre, o nulo si no tiene.
Definition component.cpp:38
virtual Element OnRender()
Dibuja el componente. Construye un ftxui::Element para ser dibujado en la ftxui::Screen representando...
virtual bool OnEvent(Event)
Llamado en respuesta a un evento.
void Detach()
Desvincula este hijo de su padre.
Definition component.cpp:79
ComponentBase(const ComponentBase &)=delete
ComponentBase & operator=(const ComponentBase &)=delete
Component & ChildAt(size_t i)
Accede al hijo en el índice i.
Definition component.cpp:43
ComponentBase(Components children)
virtual ~ComponentBase()
Definition component.cpp:31
virtual void OnAnimation(animation::Params &params)
Llamado en respuesta a un evento de animación.
Implementa el renderizado de sí mismo como ftxui::Element. Implementa la navegación por teclado respo...
Representa un evento. Puede ser un evento de pulsación de tecla, un redimensionamiento de terminal,...
Definition event.hpp:29
El espacio de nombres ftxui::animation:: de FTXUI.
El espacio de nombres ftxui:: de FTXUI.
Definition animation.hpp:10
std::unique_ptr< CapturedMouseInterface > CapturedMouse
std::shared_ptr< Node > Element
Definition elements.hpp:22
std::vector< Component > Components
std::shared_ptr< ComponentBase > Component