FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
loop.hpp
Aller à la documentation de ce fichier.
1// Copyright 2022 Arthur Sonzogni. All rights reserved.
2// L'utilisation de ce code source est régie par la licence MIT qui peut être trouvée
3// dans le fichier LICENSE.
4#ifndef FTXUI_COMPONENT_LOOP_HPP
5#define FTXUI_COMPONENT_LOOP_HPP
6
7#include <memory> // for shared_ptr
8
9#include "ftxui/component/component_base.hpp" // for ComponentBase
10
11namespace ftxui {
12class ComponentBase;
13
14using Component = std::shared_ptr<ComponentBase>;
15class ScreenInteractive;
16
17/// @brief Loop est une classe qui gère la boucle d'événements pour un composant.
18///
19/// Elle est responsable de l'exécution du composant, de la gestion des événements et
20/// de la mise à jour de l'écran.
21///
22/// La classe Loop est conçue pour être utilisée avec un objet ScreenInteractive,
23/// qui représente l'écran du terminal.
24///
25/// **Exemple**
26/// ```cpp
27/// #include <ftxui/component/component.hpp>
28/// #include <ftxui/component/screen_interactive.hpp>
29/// #include <ftxui/component/loop.hpp>
30///
31/// int main() {
32/// auto screen = ftxui::ScreenInteractive::TerminalOutput();
33/// auto component = ftxui::Button("Click me", [] { ... });
34///
35/// ftxui::Loop loop(screen.get(), component);
36
37/// // Soit
38/// loop.Run(); // Bloquant jusqu'à ce que le composant quitte.
39///
40/// // Ou
41/// loop.RunOnce(); // Non-bloquant, retourne immédiatement.
42///
43/// // Ou
44/// loop.RunOnceBlocking(); // Bloquant jusqu'à ce qu'un événement soit géré.
45///
46/// // Ou dans une boucle:
47/// while (!loop.HasQuitted()) {
48/// loop.RunOnce();
49///
50/// // Faites autre chose comme exécuter une autre fonction de boucle de bibliothèque.
51/// }
52/// }
53/// ```
54///
55/// @ingroup component
56class Loop {
57 public:
59 ~Loop();
60
61 bool HasQuitted();
62 void RunOnce();
63 void RunOnceBlocking();
64 void Run();
65
66 // Cette classe n'est pas copiable/déplaçable.
67 Loop(const Loop&) = default;
68 Loop(Loop&&) = delete;
69 Loop& operator=(Loop&&) = delete;
70 Loop(const ScreenInteractive&) = delete;
71 Loop& operator=(const Loop&) = delete;
72
73 private:
74 ScreenInteractive* screen_;
75 Component component_;
76};
77
78} // namespace ftxui
79
80#endif // FTXUI_COMPONENT_LOOP_HPP
auto screen
bool HasQuitted()
Indique si la boucle a été quittée.
Definition loop.cpp:30
Loop(const ScreenInteractive &)=delete
void Run()
Definition loop.cpp:49
Loop(ScreenInteractive *screen, Component component)
Une boucle est un wrapper autour d'un Component et d'un ScreenInteractive. Elle est utilisée pour exé...
Definition loop.cpp:20
Loop & operator=(const Loop &)=delete
void RunOnce()
Exécute la boucle une seule fois. Fait en sorte que le component traite toutes les tâches/événements ...
Definition loop.cpp:37
Loop(const Loop &)=default
Loop & operator=(Loop &&)=delete
Loop(Loop &&)=delete
void RunOnceBlocking()
Attend qu'au moins un événement soit géré et exécute Loop::RunOnce().
Definition loop.cpp:43
Loop est une classe qui gère la boucle d'événements pour un composant.
Definition loop.hpp:56
ScreenInteractive est un Screen qui peut gérer les événements, exécuter une boucle principale et gére...
L'espace de noms FTXUI ftxui::
Definition animation.hpp:10
std::shared_ptr< ComponentBase > Component