37 auto my_graph = [&shift](
int width,
int height) {
38 std::vector<int> output(width);
39 for (
int i = 0; i < width; ++i) {
41 v += 0.1f * sin((i + shift) * 0.1f);
42 v += 0.2f * sin((i + shift + 10) * 0.15f);
43 v += 0.1f * sin((i + shift) * 0.03f);
51 auto frequency =
vbox({
65 auto utilization =
vbox({
107 const std::vector<std::string> compiler_entries = {
112 "Compiladores de Ada",
113 "Compiladores de ALGOL 60",
114 "Compiladores de ALGOL 68",
115 "Ensambladores (Intel *86)",
116 "Ensambladores (Motorola 68*)",
117 "Ensambladores (Zilog Z80)",
118 "Ensambladores (otros)",
119 "Compiladores BASIC",
121 "Compiladores por lotes",
123 "Compiladores de fuente a fuente",
126 "Compiladores COBOL",
127 "Compiladores Common Lisp",
129 "Compiladores DIBOL/DBL",
130 "Intérpretes ECMAScript",
131 "Compiladores Eiffel",
132 "Compiladores Fortran",
134 "Compiladores Haskell",
136 "Compiladores Pascal",
140 "Compiladores Python",
141 "Compiladores e intérpretes Scheme",
142 "Compiladores Smalltalk",
149 int compiler_selected = 0;
152 std::array<std::string, 8> options_label = {
158 "-Wno-class-conversion",
160 "-Wno-conversion-null",
162 std::array<bool, 8> options_state = {
163 false,
false,
false,
false,
false,
false,
false,
false,
166 std::vector<std::string> input_entries;
167 int input_selected = 0;
171 std::string input_add_content;
172 input_option.on_enter = [&] {
173 input_entries.push_back(input_add_content);
174 input_add_content =
"";
176 Component input_add =
Input(&input_add_content,
"archivos de entrada", input_option);
178 std::string executable_content_ =
"";
179 Component executable_ =
Input(&executable_content_,
"ejecutable");
182 Checkbox(&options_label[0], &options_state[0]),
183 Checkbox(&options_label[1], &options_state[1]),
184 Checkbox(&options_label[2], &options_state[2]),
185 Checkbox(&options_label[3], &options_state[3]),
186 Checkbox(&options_label[4], &options_state[4]),
187 Checkbox(&options_label[5], &options_state[5]),
188 Checkbox(&options_label[6], &options_state[6]),
189 Checkbox(&options_label[7], &options_state[7]),
192 auto compiler_component = Container::Horizontal({
195 Container::Vertical({
197 Container::Horizontal({
204 auto render_command = [&] {
207 line.push_back(
text(compiler_entries[compiler_selected]) | bold);
209 for (
int i = 0; i < 8; ++i) {
210 if (options_state[i]) {
211 line.push_back(
text(
" "));
212 line.push_back(
text(options_label[i]) | dim);
216 if (!executable_content_.empty()) {
217 line.push_back(
text(
" -o ") | bold);
222 for (
auto& it : input_entries) {
228 auto compiler_renderer =
Renderer(compiler_component, [&] {
229 auto compiler_win =
window(
text(
"Compilador"),
230 compiler->
Render() | vscroll_indicator | frame);
245 input->
Render() | vscroll_indicator | frame |
266 for (
int i = 0; i < 22; ++i) {
267 entries.push_back(
spinner(i, shift / 5) | bold |
270 return hflow(std::move(entries));
277 text(
"Paleta de 16 colores:"),
326 for (
auto& column : info_columns) {
328 for (
auto& it : column) {
329 column_elements.push_back(
332 columns.push_back(
hbox(std::move(column_elements)));
345 int saturation = 255;
347 for (
int value = 0; value < 255; value += 16) {
349 for (
int hue = 0; hue < 255; hue += 6) {
350 line.push_back(
text(
"▀")
407 std::string
title = std::to_string(dimx) +
"x" + std::to_string(dimy);
409 text(
"contenido") | hcenter | dim) |
415 "Lorem Ipsum es simplemente un texto ficticio de la industria de la "
416 "impresión y la tipografía.\nLorem Ipsum ha sido el texto ficticio "
417 "estándar de la industria desde el siglo XVI, cuando una impresora "
418 "desconocida tomó una galera de tipos y la mezcló para hacer un libro "
419 "de muestras de tipos.";
430 window(
text(
"Elementos con diferente tamaño:"),
446 vscroll_indicator | yframe | flex;
450 return paragraph(
"<--- Esta barra vertical es redimensionable usando el ratón") |
466 "htop",
"color",
"spinner",
"gauge",
"compiler",
"paragraph",
474 spinner_tab_renderer,
485 Container::Horizontal({
504 while (!loop.HasQuitted()) {
509 screen.RequestAnimationFrame();
515 std::this_thread::sleep_for(std::chrono::milliseconds(1000 / 60));
std::vector< std::vector< ftxui::ColorInfo > > ColorInfoSorted2D()
Element make_box(int x, int y)
Element Render()
Dibuja el componente. Construye un ftxui::Element para ser dibujado en la ftxui::Screen representando...
static ScreenInteractive Fullscreen()
void RunOnce()
Ejecuta el bucle una vez. Hace que el component procese todas las tareas/eventos pendientes....
static MenuOption HorizontalAnimated()
Opciones estándar para un menú horizontal animado. Esto puede ser útil para implementar una barra de ...
static ButtonOption Animated()
Loop es una clase que gestiona el bucle de eventos de un componente.
Component Menu(MenuOption options)
Una lista de texto. El elemento enfocado es seleccionado.
Component Radiobox(RadioboxOption options)
Una lista de elementos, donde solo uno puede ser seleccionado.
Component Button(ButtonOption options)
Dibuja un botón. Ejecuta una función al hacer clic.
Component Renderer(Component child, std::function< Element()>)
Retorna un nuevo Componente, similar a |child|, pero usando |render| como el evento Component::Render...
Component Input(InputOption options={})
Un cuadro de entrada para editar texto.
Component Checkbox(CheckboxOption options)
Dibuja un elemento seleccionable.
Component ResizableSplitLeft(Component main, Component back, int *main_size)
Una división horizontal entre dos componentes, configurable usando el ratón.
virtual void Render(Screen &screen)
Muestra un elemento en un ftxui::Screen.
FlexboxConfig & SetGap(int gap_x, int gap_y)
Establece el espacio (gap) del flexbox.
Decorator bgcolor(Color)
Decora usando un color de fondo.
Element window(Element title, Element content, BorderStyle border=ROUNDED)
Draw window with a title and a border around the element.
Decorator size(WidthOrHeight, Constraint, int value)
Aplica una restricción al tamaño de un elemento.
Element flex(Element)
Hace que un elemento hijo se expanda proporcionalmente al espacio restante en un contenedor.
Element paragraphAlignRight(const std::string &text)
Devuelve un elemento que dibuja el párrafo en varias líneas, alineado a la derecha.
Element spinner(int charset_index, size_t image_index)
Útil para representar el efecto del tiempo y/o eventos. Esto muestra un "video" de arte ASCII.
Element center(Element)
Centra un elemento horizontal y verticalmente.
Element paragraphAlignCenter(const std::string &text)
Devuelve un elemento que dibuja el párrafo en varias líneas, alineado al centro.
Element text(std::wstring text)
Muestra un fragmento de texto Unicode.
Element flex_grow(Element)
Expandir si es posible.
Element paragraphAlignLeft(const std::string &text)
Devuelve un elemento que dibuja el párrafo en varias líneas, alineado a la izquierda.
Element separator()
Dibuja una separación vertical u horizontal entre otros dos elementos.
Element filler()
Un elemento que se expandirá proporcionalmente al espacio restante en un contenedor.
Element gauge(float progress)
Dibuja una barra de progreso de alta definición.
Element paragraphAlignJustify(const std::string &text)
Devuelve un elemento que dibuja el párrafo en varias líneas, alineado utilizando una alineación justi...
Decorator color(Color)
Decora usando un color de primer plano.
Element hcenter(Element)
Centra un elemento horizontalmente.
FlexboxConfig es una estructura de configuración que define las propiedades de diseño para un contene...
static Color HSV(uint8_t hue, uint8_t saturation, uint8_t value)
Construye un Color a partir de su representación HSV. https://en.wikipedia.org/wiki/HSL_and_HSV.
Color es una clase que representa un color en la interfaz de usuario de la terminal.
std::vector< std::string > tab_entries
int paragraph_renderer_split_position
auto palette_256_color_display
auto paragraph_renderer_group_renderer
auto paragraph_renderer_right
auto paragraph_renderer_left
auto paragraph_renderer_group
El espacio de nombres ftxui:: de FTXUI.
Element flexbox(Elements, FlexboxConfig config=FlexboxConfig())
Un contenedor que muestra elementos en filas/columnas y es capaz de ajustarse a la siguiente columna/...
Element hflow(Elements)
Un contenedor que muestra elementos en filas de izquierda a derecha. Cuando está lleno,...
Element hbox(Elements)
Un contenedor que muestra elementos horizontalmente uno por uno.
std::vector< Element > Elements
Elements paragraph(std::wstring text)
Element graph(GraphFunction)
Dibuja un gráfico usando una GraphFunction.
std::shared_ptr< ComponentBase > Component