FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
component_base.hpp
Aller à la documentation de ce fichier.
1// Copyright 2020 Arthur Sonzogni. Tous droits réservés.
2// L'utilisation de ce code source est régie par la licence MIT qui peut être trouvée dans
3// le fichier 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 Il implémente son propre rendu en tant que ftxui::Element. Il implémente
28/// la navigation au clavier en répondant à 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 // A component is not copyable/movable.
38 ComponentBase(const ComponentBase&) = delete;
42
43 // Hiérarchie des composants:
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 // Rend le composant.
54
55 // Outrepasse cette fonction pour modifier le fonctionnement de `Render`.
56 virtual Element OnRender();
57
58 // Gère un événement.
59 // Par défaut, réduit sur les enfants avec un OU paresseux.
60 //
61 // Retourne si l'événement a été géré ou non.
62 virtual bool OnEvent(Event);
63
64 // Gère une étape d'animation.
65 virtual void OnAnimation(animation::Params& params);
66
67 // Gestion du focus ----------------------------------------------------------
68 //
69 // Si ce composant contient des enfants, cela indique lequel est actif,
70 // nullptr si aucun n'est actif.
71 //
72 // On dit qu'un élément a le focus si la chaîne de ActiveChild() à partir du
73 // composant racine contient cet objet.
74 virtual Component ActiveChild();
75
76 // Retourne vrai lorsque le composant contient des éléments focusables.
77 // Les composants non focusables seront ignorés lors de la navigation à l'aide du
78 // clavier.
79 virtual bool Focusable() const;
80
81 // Indique si c'est l'enfant actif de son parent.
82 bool Active() const;
83 // Indique si tous les ancêtres sont actifs.
84 bool Focused() const;
85
86 // Fait de l'enfant le composant "actif".
87 virtual void SetActiveChild(ComponentBase* child);
88 void SetActiveChild(Component child);
89
90 // Configure tous les ancêtres pour donner le focus à ce composant.
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 /* end of include guard: FTXUI_COMPONENT_BASE_HPP */
virtual bool Focusable() const
Retourne vrai si le composant contient des éléments focusables. Les composants non focusables seront ...
bool Focused() const
Indique si les éléments sont focusés par l'utilisateur. Vrai lorsque le ComponentBase est focusé par ...
CapturedMouse CaptureMouse(const Event &event)
Prend le CapturedMouse si disponible. Il n'y en a qu'un seul composant de eux. Il représente un compo...
void Add(Component children)
Ajoute un enfant. @param child L'enfant à attacher.
Definition component.cpp:70
Element Render()
Dessine le composant. Construit un ftxui::Element à dessiner sur l'écran ftxui::Screen représentant c...
void TakeFocus()
Configure tous les ancêtres pour donner le focus à ce composant.
bool Active() const
Indique si l'élément est l'enfant actuellement actif de son parent.
virtual Component ActiveChild()
Retourne l'enfant actuellement actif.
void DetachAllChildren()
Supprime tous les enfants.
Definition component.cpp:94
virtual void SetActiveChild(ComponentBase *child)
Fait du |child| l'élément "actif".
int Index() const
Retourne l'index du composant dans son parent. -1 si pas de parent.
Definition component.cpp:54
size_t ChildCount() const
Retourne le nombre d'enfants.
Definition component.cpp:49
ComponentBase(ComponentBase &&)=delete
ComponentBase & operator=(ComponentBase &&)=delete
ComponentBase * Parent() const
Retourne le ComponentBase parent, ou nul s'il n'y en a pas.
Definition component.cpp:38
virtual Element OnRender()
Dessine le composant. Construit un ftxui::Element à dessiner sur l'écran ftxui::Screen représentant c...
virtual bool OnEvent(Event)
Appelé en réponse à un événement.
void Detach()
Détache cet enfant de son parent.
Definition component.cpp:79
ComponentBase(const ComponentBase &)=delete
ComponentBase & operator=(const ComponentBase &)=delete
Component & ChildAt(size_t i)
Accède à l'enfant à l'index i.
Definition component.cpp:43
ComponentBase(Components children)
virtual ~ComponentBase()
Definition component.cpp:31
virtual void OnAnimation(animation::Params &params)
Appelé en réponse à un événement d'animation.
Il implémente son propre rendu en tant que ftxui::Element. Il implémente la navigation au clavier en ...
Représente un événement. Il peut s'agir d'un événement de touche, d'un redimensionnement de terminal,...
Definition event.hpp:28
L'espace de noms FTXUI ftxui::animation::
L'espace de noms FTXUI 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