28class CaptureMouseImpl :
public CapturedMouseInterface {};
55 if (parent_ ==
nullptr) {
60 if (child.get() ==
this) {
72 child->parent_ =
this;
80 if (parent_ ==
nullptr) {
83 auto it = std::find_if(std::begin(parent_->
children_),
86 return this == that.get();
114 class Wrapper :
public Node {
116 bool active_ =
false;
118 Wrapper(
Element child,
bool active)
119 :
Node({std::move(child)}), active_(active) {}
121 void SetBox(
Box box)
override {
123 children_[0]->SetBox(box);
126 void ComputeRequirement()
override {
127 Node::ComputeRequirement();
128 requirement_.focused.component_active = active_;
132 return std::make_shared<Wrapper>(std::move(element),
Active());
143 return text(
"Not implemented component");
153 if (child->OnEvent(event)) {
165 child->OnAnimation(params);
173 if (child->Focusable()) {
185 if (child->Focusable()) {
194 return parent_ ==
nullptr || parent_->
ActiveChild().get() ==
this;
202 const auto* current =
this;
203 while (current && current->Active()) {
204 current = current->parent_;
223 parent->SetActiveChild(child);
233 return event.screen_->CaptureMouse();
235 return std::make_unique<CaptureMouseImpl>();
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.
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.
ScreenInteractive * screen_
virtual Component ActiveChild()
Retourne l'enfant actuellement actif.
void DetachAllChildren()
Supprime tous les enfants.
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.
size_t ChildCount() const
Retourne le nombre d'enfants.
ComponentBase * Parent() const
Retourne le ComponentBase parent, ou nul s'il n'y en a pas.
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.
Component & ChildAt(size_t i)
Accède à l'enfant à l'index i.
virtual void OnAnimation(animation::Params ¶ms)
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,...
Node est la classe de base pour tous les éléments de l'arbre DOM.
Element text(std::wstring text)
Affiche un morceau de texte unicode.
Box est une structure qui représente une zone rectangulaire dans un espace 2D.
Le namespace FTXUI ftxui::animation::
L'espace de noms FTXUI ftxui::
std::unique_ptr< CapturedMouseInterface > CapturedMouse
std::shared_ptr< Node > Element
std::shared_ptr< ComponentBase > Component