FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
menu_underline_animated_gallery.cpp
Aller à la documentation de ce fichier.
1// Copyright 2020 Arthur Sonzogni. Tous droits réservés.
2// L'utilisation de ce code source est régie par la licence MIT que l'on peut trouver dans
3// le fichier LICENSE.
4#include <chrono> // for operator""ms, literals
5#include <memory> // for allocator, shared_ptr, __shared_ptr_access
6#include <string> // for string, operator+, to_string, basic_string
7#include <vector> // for vector
8
9#include "ftxui/component/animation.hpp" // for BackOut, Duration
10#include "ftxui/component/component.hpp" // for Menu, Renderer, Vertical
11#include "ftxui/component/component_base.hpp" // for ComponentBase
12#include "ftxui/component/component_options.hpp" // for MenuOption, UnderlineOption
13#include "ftxui/component/mouse.hpp" // for ftxui
14#include "ftxui/component/screen_interactive.hpp" // for Component, ScreenInteractive
15#include "ftxui/dom/elements.hpp" // for text, Element, operator|, borderEmpty, inverted
16#include "ftxui/screen/color.hpp" // for Color, Color::Blue, Color::Red
17
18using namespace ftxui;
19
21 return Renderer([id](bool focused) {
22 auto t = text("component " + std::to_string(id));
23 if (focused) {
24 t = t | inverted;
25 }
26 return t;
27 });
28}
29
30Component Text(const std::string& t) {
31 return Renderer([t] { return text(t) | borderEmpty; });
32}
33
34int main() {
35 using namespace std::literals;
36 std::vector<std::string> tab_values{
37 "Tab 1", "Tab 2", "Tab 3", "A very very long tab", "탭",
38 };
39 int tab_selected = 0;
40
41 auto container = Container::Vertical({});
42
43 int frame_count = 0;
44 container->Add(Renderer(
45 [&] { return text("Frame count: " + std::to_string(frame_count++)); }));
46
47 {
48 auto option = MenuOption::HorizontalAnimated();
49 container->Add(Text("Ceci démontre le composant Menu"));
50 container->Add(Menu(&tab_values, &tab_selected, option));
51 }
52
53 {
54 container->Add(Text("Définir la couleur du soulignement en bleu"));
55 auto option = MenuOption::HorizontalAnimated();
56 option.underline.color_inactive = Color::Blue;
57 container->Add(Menu(&tab_values, &tab_selected, option));
58 }
59
60 {
61 container->Add(Text("Définir la couleur active du soulignement en rouge"));
62 auto option = MenuOption::HorizontalAnimated();
63 option.underline.color_active = Color::Red;
64 container->Add(Menu(&tab_values, &tab_selected, option));
65 }
66
67 {
68 container->Add(Text("Définir la durée de l'animation à 0ms"));
69 auto option = MenuOption::HorizontalAnimated();
70 option.underline.SetAnimationDuration(0ms);
71 container->Add(Menu(&tab_values, &tab_selected, option));
72 }
73
74 {
75 container->Add(Text("Définir la fonction d'assouplissement de l'animation sur 'back-out'"));
76 auto option = MenuOption::HorizontalAnimated();
77 option.underline.SetAnimationFunction(animation::easing::BackOut);
78 option.underline.SetAnimationDuration(350ms);
79 container->Add(Menu(&tab_values, &tab_selected, option));
80 }
81
82 // option.underline_animation_follower_delay = 250ms
83 {
84 container->Add(Text("Ajouter un délai pour désynchroniser l'animation"));
85 auto option = MenuOption::HorizontalAnimated();
86 option.underline.follower_delay = 250ms;
87 container->Add(Menu(&tab_values, &tab_selected, option));
88 }
89
90 container->SetActiveChild(container->ChildAt(2));
91
93 screen.Loop(container);
94}
auto screen
static ScreenInteractive TerminalOutput()
void Add(Component children)
Ajoute un enfant. @param child L'enfant à attacher.
Definition component.cpp:70
static MenuOption HorizontalAnimated()
Options standard pour un menu horizontal animé. Cela peut être utile pour implémenter une barre d'ong...
Component Menu(MenuOption options)
Une liste de texte. L'élément sélectionné est mis en évidence.
Component Renderer(Component child, std::function< Element()>)
Renvoie un nouveau composant, similaire à |child|, mais utilisant |render| comme événement Component:...
Element inverted(Element)
Ajoute un filtre qui inversera les couleurs de premier plan et d'arrière-plan.
Definition inverted.cpp:33
Element text(std::wstring text)
Affiche un morceau de texte unicode.
Definition text.cpp:160
Element borderEmpty(Element)
Dessine une bordure vide autour de l'élément.
L'espace de noms FTXUI ftxui::
Definition animation.hpp:10
std::shared_ptr< ComponentBase > Component