19void Post(std::function<
void()> f) {
21 screen->Post(std::move(f));
46 : component_(std::move(component)), hover_(hover) {
52 return ComponentBase::OnRender() | reflect(box_);
55 bool OnEvent(
Event event)
override {
57 *hover_ = box_.Contain(event.
mouse().
x, event.
mouse().
y) &&
61 return ComponentBase::OnEvent(event);
86 std::function<
void()> on_enter,
87 std::function<
void()> on_leave) {
91 std::function<
void()> on_enter,
92 std::function<
void()> on_leave)
93 : component_(std::move(component)),
94 on_enter_(std::move(on_enter)),
95 on_leave_(std::move(on_leave)) {
101 return ComponentBase::OnRender() | reflect(box_);
104 bool OnEvent(
Event event)
override {
106 const bool hover = box_.Contain(event.
mouse().
x, event.
mouse().
y) &&
108 if (hover != hover_) {
109 Post(hover ? on_enter_ : on_leave_);
114 return ComponentBase::OnEvent(event);
120 std::function<void()> on_enter_;
121 std::function<void()> on_leave_;
124 return Make<Impl>(std::move(component), std::move(on_enter),
125 std::move(on_leave));
141 return Hoverable(std::move(component), hover);
164 std::function<
void()> on_leave) {
165 return [on_enter, on_leave](
Component component) {
166 return Hoverable(std::move(component), on_enter, on_leave);
186 std::move(component),
187 [on_change] { on_change(
true); },
188 [on_change] { on_change(
false); }
205 return [on_change](
Component component) {
206 return Hoverable(std::move(component), on_change);
static ScreenInteractive * Active()
Devuelve la pantalla actualmente activa, o nulo si no hay ninguna.
Implementa el renderizado de sí mismo como ftxui::Element. Implementa la navegación por teclado respo...
Component Hoverable(Component component, bool *hover)
Envuelve un componente. Permite saber si el ratón lo está "hovering".
Representa un evento. Puede ser un evento de pulsación de tecla, un redimensionamiento de terminal,...
Box es una estructura que representa un área rectangular en un espacio 2D.
El espacio de nombres ftxui:: de FTXUI.
std::shared_ptr< T > Make(Args &&... args)
std::shared_ptr< Node > Element
std::function< Component(Component)> ComponentDecorator
std::shared_ptr< ComponentBase > Component