FTXUI  0.11.0
C++ functional terminal UI.
Loading...
Searching...
No Matches
maybe.cpp
Go to the documentation of this file.
1#include <memory> // for make_unique, __shared_ptr_access, __shared_ptr_access<>::element_type, shared_ptr
2#include <utility> // for move
3
4#include "ftxui/component/component.hpp" // for Make, Maybe
5#include "ftxui/component/component_base.hpp" // for ComponentBase, Component
6#include "ftxui/component/event.hpp" // for Event
7#include "ftxui/dom/elements.hpp" // for Element
8#include "ftxui/dom/node.hpp" // for Node
9
10namespace ftxui {
11
12Component Maybe(Component child, bool* show) {
13 class Impl : public ComponentBase {
14 public:
15 Impl(bool* show) : show_(show) {}
16
17 private:
18 Element Render() override {
19 return *show_ ? ComponentBase::Render() : std::make_unique<Node>();
20 }
21 bool Focusable() const override {
22 return *show_ && ComponentBase::Focusable();
23 }
24 bool OnEvent(Event event) override {
25 return *show_ && ComponentBase::OnEvent(event);
26 }
27
28 bool* show_;
29 };
30
31 auto maybe = Make<Impl>(show);
32 maybe->Add(std::move(child));
33 return maybe;
34}
35
36} // namespace ftxui
37
38// Copyright 2021 Arthur Sonzogni. All rights reserved.
39// Use of this source code is governed by the MIT license that can be found in
40// the LICENSE file.
It implement rendering itself as ftxui::Element. It implement keyboard navigation by responding to ft...
std::shared_ptr< T > Make(Args &&... args)
Definition component.hpp:25
std::shared_ptr< Node > Element
Definition elements.hpp:15
Component Maybe(Component, bool *show)
Definition maybe.cpp:12
void Render(Screen &screen, const Element &node)
Display an element on a ftxui::Screen.
Definition node.cpp:34
std::shared_ptr< ComponentBase > Component
Represent an event. It can be key press event, a terminal resize, or more ...
Definition event.hpp:25