4#ifndef FTXUI_COMPONENT_SCREEN_INTERACTIVE_HPP
5#define FTXUI_COMPONENT_SCREEN_INTERACTIVE_HPP
24using Component = std::shared_ptr<ComponentBase>;
25class ScreenInteractivePrivate;
96 void RunOnceBlocking(
Component component);
99 bool HandleSelection(
bool handled,
Event event);
100 void RefreshSelection();
102 void ResetCursorPosition();
104 void InstallPipedInputHandling();
106 void Signal(
int signal);
108 void FetchTerminalEvents();
110 void PostAnimationTask();
122 bool use_alternative_screen);
125 const bool use_alternative_screen_;
127 bool track_mouse_ =
true;
129 std::string set_cursor_position;
130 std::string reset_cursor_position;
132 std::atomic<bool> quit_{
false};
133 bool animation_requested_ =
false;
139 std::uint64_t frame_count_ = 0;
140 bool mouse_captured =
false;
141 bool previous_frame_resized_ =
false;
143 bool frame_valid_ =
false;
145 bool force_handle_ctrl_c_ =
true;
146 bool force_handle_ctrl_z_ =
true;
149 bool handle_piped_input_ =
true;
154 int cursor_reset_shape_ = 1;
158 struct SelectionData {
164 bool operator==(
const SelectionData& other)
const;
165 bool operator!=(
const SelectionData& other)
const;
167 SelectionData selection_data_;
168 SelectionData selection_data_previous_;
169 std::unique_ptr<Selection> selection_;
170 std::function<void()> selection_on_change_;
174 std::unique_ptr<Internal> internal_;
static void Signal(ScreenInteractive &s, int signal)
static ScreenInteractive TerminalOutput()
void HandlePipedInput(bool enable=true)
Active ou désactive la gestion automatique des entrées pipées. Lorsqu'elle est activée,...
void Exit()
Quitte la boucle principale.
static ScreenInteractive FixedSize(int dimx, int dimy)
void PostEvent(Event event)
Ajoute un événement à la boucle principale. Il sera exécuté plus tard, après tous les autres événemen...
void Post(Task task)
Ajoute une tâche à la boucle principale. Elle sera exécutée plus tard, après toutes les autres tâches...
static ScreenInteractive FitComponent()
static ScreenInteractive Fullscreen()
static ScreenInteractive FullscreenPrimaryScreen()
static ScreenInteractive * Active()
Retourne l'écran actuellement actif, ou null si aucun.
CapturedMouse CaptureMouse()
Tente d'obtenir le verrou unique permettant de capturer la souris.
std::string GetSelection()
Retourne le contenu de la sélection actuelle.
static ScreenInteractive FullscreenAlternateScreen()
void TrackMouse(bool enable=true)
Définit si la souris est suivie et si les événements sont signalés. appelé en dehors de la boucle pri...
void SelectionChange(std::function< void()> callback)
void RequestAnimationFrame()
Ajoute une tâche pour dessiner l'écran une fois de plus, jusqu'à ce que toutes les animations soient ...
Closure ExitLoopClosure()
Retourne une fonction pour quitter la boucle principale.
void ForceHandleCtrlC(bool force)
Force FTXUI à gérer ou non le Ctrl-C, même si le composant intercepte l'événement Event::CtrlC.
~ScreenInteractive() override
void ForceHandleCtrlZ(bool force)
Force FTXUI à gérer ou non le Ctrl-Z, même si le composant intercepte l'événement Event::CtrlZ.
Closure WithRestoredIO(Closure)
Décore une fonction. Elle s'exécute de la même manière, mais avec les hooks du terminal de l'écran ac...
Loop est une classe qui gère la boucle d'événements pour un composant.
ScreenInteractive est un Screen qui peut gérer les événements, exécuter une boucle principale et gére...
Représente un événement. Il peut s'agir d'un événement de touche, d'un redimensionnement de terminal,...
Une grille rectangulaire de pixels.
L'espace de noms FTXUI ftxui::Dimension::
std::chrono::time_point< Clock > TimePoint
L'espace de noms FTXUI ftxui::
std::unique_ptr< CapturedMouseInterface > CapturedMouse
std::variant< Event, Closure, AnimationTask > Task
std::function< void()> Closure
std::shared_ptr< ComponentBase > Component