4#ifndef FTXUI_COMPONENT_SCREEN_INTERACTIVE_HPP
5#define FTXUI_COMPONENT_SCREEN_INTERACTIVE_HPP
24using Component = std::shared_ptr<ComponentBase>;
25class ScreenInteractivePrivate;
97 void RunOnceBlocking(
Component component);
100 bool HandleSelection(
bool handled,
Event event);
101 void RefreshSelection();
103 void ResetCursorPosition();
105 void InstallPipedInputHandling();
107 void Signal(
int signal);
109 void FetchTerminalEvents();
111 void PostAnimationTask();
123 bool use_alternative_screen);
126 const bool use_alternative_screen_;
128 bool track_mouse_ =
true;
130 std::string set_cursor_position;
131 std::string reset_cursor_position;
133 std::atomic<bool> quit_{
false};
134 bool animation_requested_ =
false;
140 std::uint64_t frame_count_ = 0;
141 bool mouse_captured =
false;
142 bool previous_frame_resized_ =
false;
144 bool frame_valid_ =
false;
146 bool force_handle_ctrl_c_ =
true;
147 bool force_handle_ctrl_z_ =
true;
150 bool handle_piped_input_ =
true;
155 int cursor_reset_shape_ = 1;
159 struct SelectionData {
165 bool operator==(
const SelectionData& other)
const;
166 bool operator!=(
const SelectionData& other)
const;
168 SelectionData selection_data_;
169 SelectionData selection_data_previous_;
170 std::unique_ptr<Selection> selection_;
171 std::function<void()> selection_on_change_;
175 std::unique_ptr<Internal> internal_;
static void Signal(ScreenInteractive &s, int signal)
static ScreenInteractive TerminalOutput()
void HandlePipedInput(bool enable=true)
Habilita o deshabilita el manejo automático de entrada por tubería. Cuando está habilitado,...
void Exit()
Sale del bucle principal.
static ScreenInteractive FixedSize(int dimx, int dimy)
void PostEvent(Event event)
Añade un evento al bucle principal. Se ejecutará más tarde, después de todos los demás eventos progra...
void Post(Task task)
Añade una tarea al bucle principal. Se ejecutará más tarde, después de todas las demás tareas program...
static ScreenInteractive FitComponent()
static ScreenInteractive Fullscreen()
static ScreenInteractive FullscreenPrimaryScreen()
static ScreenInteractive * Active()
Devuelve la pantalla actualmente activa, o nulo si no hay ninguna.
CapturedMouse CaptureMouse()
Intenta obtener el bloqueo único para poder capturar el ratón.
std::string GetSelection()
Devuelve el contenido de la selección actual.
static ScreenInteractive FullscreenAlternateScreen()
void TrackMouse(bool enable=true)
Establece si el ratón es rastreado y se informan los eventos. se llama fuera del bucle principal....
void SelectionChange(std::function< void()> callback)
void RequestAnimationFrame()
Añade una tarea para dibujar la pantalla una vez más, hasta que todas las animaciones hayan terminado...
Closure ExitLoopClosure()
Devuelve una función para salir del bucle principal.
void ForceHandleCtrlC(bool force)
Fuerza a FTXUI a manejar o no Ctrl-C, incluso si el componente captura el Event::CtrlC.
~ScreenInteractive() override
void ForceHandleCtrlZ(bool force)
Fuerza a FTXUI a manejar o no Ctrl-Z, incluso si el componente captura el Event::CtrlZ.
Closure WithRestoredIO(Closure)
Decora una función. Se ejecuta de la misma manera, pero con los hooks del terminal de la pantalla act...
Loop es una clase que gestiona el bucle de eventos de un componente.
ScreenInteractive es una Screen que puede manejar eventos, ejecutar un bucle principal y administrar ...
Representa un evento. Puede ser un evento de pulsación de tecla, un redimensionamiento de terminal,...
Una cuadrícula rectangular de píxeles.
El espacio de nombres ftxui::Dimension:: de FTXUI.
std::chrono::time_point< Clock > TimePoint
El espacio de nombres ftxui:: de FTXUI.
std::unique_ptr< CapturedMouseInterface > CapturedMouse
std::variant< Event, Closure, AnimationTask > Task
std::function< void()> Closure
std::shared_ptr< ComponentBase > Component