FTXUI 6.1.9
C++ functional terminal UI.
Chargement...
Recherche...
Aucune correspondance
print_key_press.cpp
Aller à la documentation de ce fichier.
1// Copyright 2020 Arthur Sonzogni. All rights reserved.
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
5#include <stddef.h> // pour size_t
6#include <algorithm> // pour max
7#include <memory> // pour allocator, shared_ptr
8#include <string> // pour char_traits, operator+, string, basic_string, to_string
9#include <utility> // pour move
10#include <vector> // pour vector
11
12#include "ftxui/component/captured_mouse.hpp" // pour ftxui
13#include "ftxui/component/component.hpp" // pour CatchEvent, Renderer
14#include "ftxui/component/event.hpp" // pour Event
15#include "ftxui/component/mouse.hpp" // pour Mouse, Mouse::Left, Mouse::Middle, Mouse::None, Mouse::Pressed, Mouse::Released, Mouse::Right, Mouse::WheelDown, Mouse::WheelUp
16#include "ftxui/component/screen_interactive.hpp" // pour ScreenInteractive
17#include "ftxui/dom/elements.hpp" // pour text, vbox, window, Element, Elements
18
19using namespace ftxui;
20
21std::string Code(Event event) {
22 std::string codes;
23 for (auto& it : event.input()) {
24 codes += " " + std::to_string((unsigned int)it);
25 }
26 return codes;
27}
28
29int main() {
31
32 std::vector<Event> keys;
33
34 auto left_column = Renderer([&] {
35 Elements children = {
36 text("Codes"),
37 separator(),
38 };
39 for (size_t i = std::max(0, (int)keys.size() - 20); i < keys.size(); ++i) {
40 children.push_back(text(Code(keys[i])));
41 }
42 return vbox(children);
43 });
44
45 auto right_column = Renderer([&] {
46 Elements children = {
47 text("Event"),
48 separator(),
49 };
50 for (size_t i = std::max(0, (int)keys.size() - 20); i < keys.size(); ++i) {
51 children.push_back(text(keys[i].DebugString()));
52 }
53 return vbox(children);
54 });
55
56 int split_size = 40;
57 auto component = ResizableSplitLeft(left_column, right_column, &split_size);
58 component |= border;
59
60 component |= CatchEvent([&](Event event) {
61 keys.push_back(event);
62 return false;
63 });
64
65 screen.Loop(component);
66}
auto screen
static ScreenInteractive TerminalOutput()
const std::string & input() const
Definition event.hpp:103
Component Renderer(Component child, std::function< Element()>)
Renvoie un nouveau composant, similaire à |child|, mais utilisant |render| comme événement Component:...
Component ResizableSplitLeft(Component main, Component back, int *main_size)
Une séparation horizontale entre deux composants, configurable à l'aide de la souris.
Représente un événement. Il peut s'agir d'un événement de touche, d'un redimensionnement de terminal,...
Definition event.hpp:28
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
L'espace de noms FTXUI ftxui::
Definition animation.hpp:10
std::vector< Element > Elements
Definition elements.hpp:23
Component CatchEvent(Component child, std::function< bool(Event)>)
std::string Code(Event event)
int main()