FTXUI 7.0.3
C++ functional terminal UI.
Loading...
Searching...
No Matches
nested_screen.cpp
Go to the documentation of this file.
1// Copyright 2020 Arthur Sonzogni. All rights reserved.
2// Use of this source code is governed by the MIT license that can be found in
3// the LICENSE file.
4#include <memory> // for allocator, shared_ptr, __shared_ptr_access
5#include <string> // for operator+, string, char_traits, basic_string
6
7#include "ftxui/component/app.hpp" // for App
8#include "ftxui/component/captured_mouse.hpp" // for ftxui
9#include "ftxui/component/component.hpp" // for Button, Vertical, Renderer
10#include "ftxui/component/component_base.hpp" // for ComponentBase
11#include "ftxui/dom/elements.hpp" // for separator, text, Element, operator|, vbox, border
12
13using namespace ftxui;
14
15void Nested(std::string path) {
16 auto screen = App::FitComponent();
17 auto back_button = Button("Back", screen.ExitLoopClosure());
18 auto goto_1 = Button("Goto /1", [path] { Nested(path + "/1"); });
19 auto goto_2 = Button("Goto /2", [path] { Nested(path + "/2"); });
20 auto goto_3 = Button("Goto /3", [path] { Nested(path + "/3"); });
21 auto layout = Container::Vertical({
22 back_button,
23 goto_1,
24 goto_2,
25 goto_3,
26 });
27 auto renderer = Renderer(layout, [&] {
28 return vbox({
29 text("path: " + path),
30 separator(),
31 back_button->Render(),
32 goto_1->Render(),
33 goto_2->Render(),
34 goto_3->Render(),
35 }) |
36 border;
37 });
38 screen.Loop(renderer);
39}
40
41int main() {
42 auto screen = App::FitComponent();
43 auto button_quit = Button("Quit", screen.ExitLoopClosure());
44 auto button_nested = Button("Nested", [] { Nested(""); });
45 screen.Loop(Container::Vertical({
46 button_quit,
47 button_nested,
48 }));
49 return 0;
50}
Component Button(ConstStringRef label, std::function< void()> on_click, ButtonOption options=ButtonOption::Simple())
Dessine un bouton. Exécute une fonction lorsqu'il est cliqué.
Component Renderer(Component child, std::function< Element()>)
Retourne un nouveau Component, similaire à |child|, mais utilisant |render| comme événement Component...
Element text(std::string_view text)
Affiche un morceau de texte unicode encodé en UTF8.
Element separator()
Dessine une séparation verticale ou horizontale entre deux autres éléments.
Element vbox(Elements children)
Un conteneur affichant les éléments verticalement un par un.
Definition vbox.cpp:96
L'espace de noms FTXUI ftxui::
Definition animation.hpp:11
void Nested(std::string path)
int main()