FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
modal_dialog.cpp
Aller à la documentation de ce fichier.
1// Copyright 2022 Arthur Sonzogni. Tous droits réservés.
2// L'utilisation de ce code source est régie par la licence MIT qui peut être trouvée dans
3// le fichier LICENSE.
4#include <ftxui/component/component_options.hpp> // for ButtonOption
5#include <ftxui/component/mouse.hpp> // for ftxui
6#include <functional> // for function
7#include <memory> // for allocator, shared_ptr
8
9#include "ftxui/component/component.hpp" // for Button, operator|=, Renderer, Vertical, Modal
10#include "ftxui/component/screen_interactive.hpp" // for ScreenInteractive, Component
11#include "ftxui/dom/elements.hpp" // for operator|, separator, text, size, Element, vbox, border, GREATER_THAN, WIDTH, center, HEIGHT
12
13using namespace ftxui;
14
16
17// Définition du composant principal. Les détails ne sont pas importants.
18Component MainComponent(std::function<void()> show_modal,
19 std::function<void()> exit) {
20 auto component = Container::Vertical({
21 Button("Show modal", show_modal, button_style),
22 Button("Quit", exit, button_style),
23 });
24 // Peaufiner le rendu des deux boutons :
25 component |= Renderer([&](Element inner) {
26 return vbox({
27 text("Main component"),
28 separator(),
29 inner,
30 }) //
31 | size(WIDTH, GREATER_THAN, 15) //
32 | size(HEIGHT, GREATER_THAN, 15) //
33 | border //
34 | center; //
35 });
36 return component;
37}
38
39// Définition du composant modal. Les détails ne sont pas importants.
40Component ModalComponent(std::function<void()> do_nothing,
41 std::function<void()> hide_modal) {
42 auto component = Container::Vertical({
43 Button("Do nothing", do_nothing, button_style),
44 Button("Quit modal", hide_modal, button_style),
45 });
46 // Peaufiner le rendu des deux boutons :
47 component |= Renderer([&](Element inner) {
48 return vbox({
49 text("Modal component "),
50 separator(),
51 inner,
52 }) //
53 | size(WIDTH, GREATER_THAN, 30) //
54 | border; //
55 });
56 return component;
57}
58
59int main(int argc, const char* argv[]) {
61
62 // État de l'application :
63 bool modal_shown = false;
64
65 // Quelques actions modifiant l'état :
66 auto show_modal = [&] { modal_shown = true; };
67 auto hide_modal = [&] { modal_shown = false; };
68 auto exit = screen.ExitLoopClosure();
69 auto do_nothing = [&] {};
70
71 // Instancier les composants principal et modal :
72 auto main_component = MainComponent(show_modal, exit);
73 auto modal_component = ModalComponent(do_nothing, hide_modal);
74
75 // Utiliser la fonction `Modal` pour associer le composant principal et sa fenêtre modale.
76 // Le booléen |modal_shown| contrôle si la modale est affichée ou non. main_component |= Modal(modal_component, &modal_shown);
77
78 screen.Loop(main_component);
79 return 0;
80}
auto screen
static ButtonOption Animated()
Crée une ButtonOption, utilisant des couleurs animées.
static ScreenInteractive TerminalOutput()
Component Button(ButtonOption options)
Dessine un bouton. Exécute une fonction lors d'un clic.
Component Renderer(Component child, std::function< Element()>)
Renvoie un nouveau composant, similaire à |child|, mais utilisant |render| comme événement Component:...
Decorator size(WidthOrHeight, Constraint, int value)
Applique une contrainte sur la taille d'un élément.
Element center(Element)
Centre un élément horizontalement et verticalement.
Element text(std::wstring text)
Affiche un morceau de texte unicode.
Definition text.cpp:160
Element separator()
Dessine une séparation verticale ou horizontale entre deux autres éléments.
Element border(Element)
Dessine une bordure autour de l'élément.
Element vbox(Elements)
Un conteneur affichant les éléments verticalement un par un.
Definition vbox.cpp:96
auto button_style
Component ModalComponent(std::function< void()> do_nothing, std::function< void()> hide_modal)
Component MainComponent(std::function< void()> show_modal, std::function< void()> exit)
L'espace de noms FTXUI ftxui::
Definition animation.hpp:10
std::shared_ptr< Node > Element
Definition elements.hpp:22
@ GREATER_THAN
Definition elements.hpp:161
std::shared_ptr< ComponentBase > Component