grmenu 3.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +584 -300
- data/data/borders.json +77 -57
- data/data/colors.json +356 -13
- data/data/help.txt +346 -218
- data/data/themes/cyberpunk.gr +60 -0
- data/data/themes/dracula.gr +60 -0
- data/data/themes/matrix.gr +60 -0
- data/data/themes/monokai.gr +60 -0
- data/data/themes/neon_red.gr +51 -0
- data/data/themes/nord.gr +60 -0
- data/data/themes/sunset.gr +60 -0
- data/{GRmenu.rb → grmenu.rb} +1946 -139
- metadata +9 -2
data/data/help.txt
CHANGED
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
{bright_cyan}╚═══════════════════════════════════════════════════════════════════════════════════╝{reset}
|
|
9
9
|
|
|
10
10
|
{bright_cyan}╔═══════════════════════════════════════════════════════════════════════════════════╗{reset}
|
|
11
|
-
{bright_cyan}║{bright_yellow}
|
|
12
|
-
{bright_cyan}║{gray}
|
|
11
|
+
{bright_cyan}║{bright_yellow} DOCUMENTACION Y GUIA COMPLETA DE PARAMETROS (v4.0.1) {bright_cyan}║{reset}
|
|
12
|
+
{bright_cyan}║{gray} Soporte Raton SGR 1006, Submenus en Cascada 3 Niveles, Pestanas y CSS .gr {bright_cyan}║{reset}
|
|
13
13
|
{bright_cyan}╚═══════════════════════════════════════════════════════════════════════════════════╝{reset}
|
|
14
14
|
|
|
15
15
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
@@ -18,29 +18,47 @@
|
|
|
18
18
|
Crea una nueva instancia de menu interactivo para la terminal.
|
|
19
19
|
|
|
20
20
|
{cyan}PARAMETROS DEL CONSTRUCTOR:{reset}
|
|
21
|
-
{bright_green}* functions:{reset} {white}[Array]{reset}
|
|
22
|
-
{bright_green}* title:{reset} {white}[String]{reset}
|
|
23
|
-
{bright_green}* banner:{reset} {white}[String]{reset}
|
|
24
|
-
{bright_green}* subtitle:{reset} {white}[String]{reset}
|
|
25
|
-
{bright_green}* search:{reset} {white}[Boolean]{reset}
|
|
26
|
-
{bright_green}* columns:{reset} {white}[Integer]{reset}
|
|
27
|
-
{bright_green}* page_size:{reset} {white}[Integer]{reset}
|
|
28
|
-
{bright_green}* style:{reset} {white}[Integer]{reset} -> Estilo de marco de opciones
|
|
29
|
-
{bright_green}* banner_style:{reset} {white}[Integer]{reset} -> Estilo de marco para banner
|
|
30
|
-
{bright_green}* font:{reset} {white}[Integer]{reset} -> Fuente ASCII del banner
|
|
31
|
-
{bright_green}* image:{reset} {white}[String]{reset}
|
|
32
|
-
{bright_green}* image_width:{reset} {white}[Integer]{reset}
|
|
33
|
-
{bright_green}* divider:{reset} {white}[Boolean/Int]{reset}
|
|
34
|
-
{bright_green}* center:{reset} {white}[Boolean]{reset}
|
|
21
|
+
{bright_green}* functions:{reset} {white}[Array]{reset} -> Lista de opciones a ejecutar (ver seccion [2]).
|
|
22
|
+
{bright_green}* title:{reset} {white}[String]{reset} -> Titulo centrado en el marco del menu.
|
|
23
|
+
{bright_green}* banner:{reset} {white}[String]{reset} -> Texto convertido a arte ASCII 3D superior.
|
|
24
|
+
{bright_green}* subtitle:{reset} {white}[String]{reset} -> Descripcion o subtitulo (admite saltos de linea \n).
|
|
25
|
+
{bright_green}* search:{reset} {white}[Boolean]{reset} -> Buscador en vivo con filtro reactivo (default: false).
|
|
26
|
+
{bright_green}* columns:{reset} {white}[Integer]{reset} -> Cantidad de columnas para grid 2D (default: 1).
|
|
27
|
+
{bright_green}* page_size:{reset} {white}[Integer]{reset} -> Cantidad de filas visibles antes de scroll (default: auto).
|
|
28
|
+
{bright_green}* style:{reset} {white}[Integer 1..20]{reset} -> Estilo de marco de opciones (default: 19).
|
|
29
|
+
{bright_green}* banner_style:{reset} {white}[Integer 1..20]{reset} -> Estilo de marco para el banner (default: 3).
|
|
30
|
+
{bright_green}* font:{reset} {white}[Integer 1..10]{reset} -> Fuente tipografica ASCII 3D del banner (default: 1).
|
|
31
|
+
{bright_green}* image:{reset} {white}[String]{reset} -> Ruta a imagen (PNG/JPG/WEBP/GIF/BMP) de cabecera.
|
|
32
|
+
{bright_green}* image_width:{reset} {white}[Integer]{reset} -> Ancho en columnas para renderizar la imagen (default: 40).
|
|
33
|
+
{bright_green}* divider:{reset} {white}[Boolean/Int]{reset} -> Lineas divisorias horizontales o ancho especifico.
|
|
34
|
+
{bright_green}* center:{reset} {white}[Boolean]{reset} -> Centrado horizontal automatico en consola (default: true).
|
|
35
|
+
{bright_green}* animate:{reset} {white}[String/Bool]{reset} -> Animacion de entrada ("diagonal", "linear", "fade", "rgb", false).
|
|
36
|
+
{bright_green}* desc_prefix:{reset} {white}[String]{reset} -> Prefijo del pie de tooltip/descripcion (default: "[i]").
|
|
37
|
+
{bright_green}* mouse:{reset} {white}[Boolean]{reset} -> Habilita raton ANSI SGR 1006 (clic, scroll, submenus) (default: false).
|
|
38
|
+
{bright_green}* tabs:{reset} {white}[Hash]{reset} -> Menu multitarea por pestanas { "Pestana 1" => [...], ... }.
|
|
39
|
+
|
|
40
|
+
{cyan}CONSTRUCTOR ALTERNATIVO PARA PESTANAS:{reset}
|
|
41
|
+
{bright_white}* GRmenu.tabs(tabs_hash, **opciones){reset}
|
|
42
|
+
Crea directamente un menu organizado por pestanas horizontales:
|
|
43
|
+
{bright_white}menu = GRmenu.tabs({ "Web" => [...], "Bases" => [...] }, mouse: true, style: 3){reset}
|
|
35
44
|
|
|
36
45
|
{cyan}METODOS DE INSTANCIA:{reset}
|
|
37
46
|
{bright_white}* menu.draw(size_max: 40, min_width: nil){reset}
|
|
38
|
-
Inicia el bucle interactivo. Bloquea hasta que el usuario
|
|
47
|
+
Inicia el bucle interactivo de terminal. Bloquea hasta que el usuario elija.
|
|
39
48
|
- {cyan}size_max:{reset} Ancho minimo visual garantizado en columnas.
|
|
40
|
-
-
|
|
49
|
+
- {cyan}Deteccion CLI:{reset} Si se ejecuta el script con {yellow}-theme{reset} o {yellow}-ex{reset}, exporta
|
|
50
|
+
automaticamente el tema configurado a un archivo .gr y termina la ejecucion.
|
|
51
|
+
- Retorna el valor devuelto por la accion seleccionada.
|
|
52
|
+
|
|
53
|
+
{bright_white}* menu.style(bloque_gr){reset}
|
|
54
|
+
Aplica configuracion CSS al menu usando un bloque de texto (ej: <<-GR ... GR).
|
|
55
|
+
Permite definir bordes, animaciones, prefijos, mouse y colores inline sin archivos externos.
|
|
56
|
+
|
|
57
|
+
{bright_white}* menu.export_theme(ruta = nil){reset} (Alias: {bright_white}menu.export_config{reset})
|
|
58
|
+
Guarda la configuracion actual de este menu en un archivo de tema .gr.
|
|
41
59
|
|
|
42
60
|
{bright_white}* menu.set_style{reset}
|
|
43
|
-
|
|
61
|
+
Acceso al objeto de personalizacion fluido por metodos (ver seccion [3]).
|
|
44
62
|
|
|
45
63
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
46
64
|
{bright_yellow}[2] FORMATOS DE OPCIONES EN EL ARRAY functions{reset}
|
|
@@ -57,248 +75,358 @@
|
|
|
57
75
|
|
|
58
76
|
{cyan}3. Arreglo [Nombre, Accion]:{reset}
|
|
59
77
|
{bright_white}["Iniciar Servidor Web", method(:iniciar_servidor)]{reset}
|
|
60
|
-
-> Muestra la etiqueta personalizada y ejecuta la accion con Enter.
|
|
78
|
+
-> Muestra la etiqueta personalizada y ejecuta la accion con Enter o doble clic.
|
|
61
79
|
|
|
62
80
|
{cyan}4. Arreglo con Tooltip Dinamico [Nombre, Accion, Descripcion]:{reset}
|
|
63
81
|
{bright_white}["Crear Respaldo", :respaldo, "Copia de seguridad en S3"]{reset}
|
|
64
|
-
-> Muestra la descripcion
|
|
82
|
+
-> Muestra la descripcion en el pie del menu cuando la opcion tiene foco.
|
|
65
83
|
|
|
66
84
|
{cyan}5. Lambda o Proc:{reset}
|
|
67
85
|
{bright_white}["Limpiar Cache", -> { puts "Cache limpia!"; GRmenu.continue }]{reset}
|
|
68
86
|
{bright_white}["Test", -> { puts "OK" }, "Descripcion tooltip opcional"]{reset}
|
|
69
87
|
|
|
70
88
|
{cyan}6. Hash explicito:{reset}
|
|
71
|
-
{bright_white}{ name: "Configurar", action: method(:config), desc: "Ajustes" }{reset}
|
|
89
|
+
{bright_white}{ name: "Configurar", action: method(:config), desc: "Ajustes del sistema" }{reset}
|
|
90
|
+
|
|
91
|
+
{cyan}7. Submenus anidados en cascada (Hasta 3 niveles: Original -> Sub 1 -> Sub 2):{reset}
|
|
92
|
+
{bright_white}[{reset}
|
|
93
|
+
{bright_white} ["Servidores", [{reset}
|
|
94
|
+
{bright_white} ["Servidores Web", [{reset}
|
|
95
|
+
{bright_white} ["Iniciar NGINX", -> { puts "NGINX OK" }],{reset}
|
|
96
|
+
{bright_white} ["Reiniciar Apache", -> { puts "Apache OK" }]{reset}
|
|
97
|
+
{bright_white} ]],{reset}
|
|
98
|
+
{bright_white} ["Bases de Datos", [{reset}
|
|
99
|
+
{bright_white} ["PostgreSQL", -> { puts "PG OK" }],{reset}
|
|
100
|
+
{bright_white} ["Redis", -> { puts "Redis OK" }]{reset}
|
|
101
|
+
{bright_white} ]]{reset}
|
|
102
|
+
{bright_white} ], "Administra servidores (hasta 3 niveles)"]{reset}
|
|
103
|
+
{bright_white}]{reset}
|
|
104
|
+
|
|
105
|
+
-> {yellow}Visual:{reset} Muestra el indicador {cyan}▶{reset} en opciones con submenus. Al pulsar {yellow}[->]{reset} o {yellow}Clic{reset},
|
|
106
|
+
despliega cajas unidas por puentes dobles {cyan}──{reset} ({bright_white}Box 0 ── Box 1 ── Box 2{reset}).
|
|
107
|
+
-> {yellow}Responsivo:{reset} Si la terminal no tiene espacio para las 3 cajas, desliza una ventana
|
|
108
|
+
fluida ({bright_white}Box 1 ── Box 2{reset}) para no romper la pantalla.
|
|
109
|
+
-> {yellow}Teclado:{reset} {yellow}→{reset} abre nivel siguiente, {yellow}← / Esc{reset} regresa al nivel anterior, {yellow}Enter{reset} ejecuta accion final.
|
|
110
|
+
-> {yellow}Raton:{reset} Clic en cualquier caja enfoca ese nivel; clic en la accion final la ejecuta. Scroll en el nivel activo.
|
|
72
111
|
|
|
73
112
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
74
|
-
{bright_yellow}[3] PERSONALIZACION DE COLORES Y MODO RGB
|
|
113
|
+
{bright_yellow}[3] PERSONALIZACION DE COLORES Y MODO RGB: menu.set_style{reset}
|
|
75
114
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
{bright_green}* menu.set_style.
|
|
81
|
-
|
|
82
|
-
{bright_green}* menu.set_style.
|
|
83
|
-
|
|
84
|
-
{bright_green}* menu.set_style.
|
|
85
|
-
|
|
86
|
-
{bright_green}* menu.set_style.
|
|
87
|
-
|
|
88
|
-
{bright_green}* menu.set_style.divider(color, level = 1){reset}
|
|
89
|
-
- Color de las lineas divisorias horizontales (soporta "rgb").
|
|
90
|
-
{bright_green}* menu.set_style.border(color, level = 1){reset}
|
|
91
|
-
- Color del marco y esquinas de la caja de opciones (soporta "rgb").
|
|
92
|
-
{bright_green}* menu.set_style.options(color, level = 1){reset}
|
|
93
|
-
- Color de las opciones inactivas / no seleccionadas (soporta "rgb").
|
|
94
|
-
{bright_green}* menu.set_style.focus(color, level = 2){reset}
|
|
95
|
-
- Color de la opcion seleccionada (> Opcion) (soporta "rgb").
|
|
96
|
-
|
|
97
|
-
{cyan}Efecto RGB Animado en tiempo real:{reset}
|
|
98
|
-
{bright_white}menu.set_style.banner("rgb"){reset} # Flujo continuo de colores a 30 FPS
|
|
99
|
-
{bright_white}menu.set_style.border("rgb"){reset} # Marco multicolor animado sin lag
|
|
115
|
+
Acepta: {cyan}(nombre_color, nivel_brillo){reset}, {cyan}Hash { color:, level: }{reset},
|
|
116
|
+
o el modo dinamico {bright_yellow}"rgb"{reset} / {bright_yellow}"rainbow"{reset} para animacion multicolor fluida a 30 FPS.
|
|
117
|
+
|
|
118
|
+
{bright_green}* menu.set_style.font(id){reset} -> [Integer 1..10] Fuente 3D del banner.
|
|
119
|
+
{bright_green}* menu.set_style.banner(color, lvl = 2){reset} -> Letras 3D del banner (soporta "rgb").
|
|
120
|
+
{bright_green}* menu.set_style.title(color, lvl = 2){reset} -> Titulo de cabecera del menu.
|
|
121
|
+
{bright_green}* menu.set_style.subtitle(color, lvl = 2){reset}-> Texto del subtitulo / descripcion.
|
|
122
|
+
{bright_green}* menu.set_style.divider(color, lvl = 1){reset} -> Lineas divisorias horizontales.
|
|
123
|
+
{bright_green}* menu.set_style.border(color, lvl = 1){reset} -> Marco y esquinas de la caja de opciones.
|
|
124
|
+
{bright_green}* menu.set_style.options(color, lvl = 1){reset} -> Opciones inactivas / sin foco.
|
|
125
|
+
{bright_green}* menu.set_style.focus(color, lvl = 2){reset} -> Opcion activa / seleccionada (> Opcion).
|
|
126
|
+
{bright_green}* menu.set_style.desc_prefix(texto){reset} -> Prefijo de descripciones (ej: "[i]", "*", "->").
|
|
100
127
|
|
|
101
128
|
{cyan}Configuracion Global por defecto:{reset}
|
|
102
129
|
{bright_white}GRmenu::SetStyle.border("cyan", 1){reset}
|
|
103
130
|
{bright_white}GRmenu::SetStyle.focus("green", 2){reset}
|
|
104
131
|
{bright_white}GRmenu::SetStyle.title("yellow", 2){reset}
|
|
132
|
+
{bright_white}GRmenu::SetStyle.desc_prefix("[i]"){reset}
|
|
105
133
|
|
|
106
134
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
107
|
-
{bright_yellow}[4]
|
|
135
|
+
{bright_yellow}[4] TABLAS, TARJETAS Y ALERTAS EJECUTIVAS{reset}
|
|
108
136
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
109
137
|
|
|
110
|
-
{bright_green}* GRmenu.
|
|
111
|
-
|
|
138
|
+
{bright_green}* GRmenu.table(headers, rows, ...){reset}
|
|
139
|
+
Renderiza una tabla interactiva con bordes blindados y auto-ajuste de columnas.
|
|
140
|
+
Acepta tanto argumentos posicionales como por palabra clave:
|
|
141
|
+
- {bright_white}GRmenu.table(["ID", "Servicio", "RAM"], [["1", "nginx", "12MB"]], style: 3, header_color: "yellow"){reset}
|
|
142
|
+
- {bright_white}GRmenu.table(headers: [...], rows: [...], search: true, sort: true, page_size: 8){reset}
|
|
143
|
+
- {cyan}search:{reset} [Boolean] Activa buscador en vivo reactivo escribiendo texto.
|
|
144
|
+
- {cyan}sort:{reset} [Boolean] Permite ordenar columnas en orden asc/desc pulsando 's'.
|
|
145
|
+
- {cyan}page_size:{reset} [Integer] Limite de filas visibles con auto-scroll.
|
|
146
|
+
- {cyan}header_color:{reset} [String] Color del encabezado de columnas (soporta neon).
|
|
147
|
+
- {cyan}selected_row:{reset} [String] Color de la fila seleccionada.
|
|
148
|
+
- {cyan}Teclas:{reset} {yellow}↑ / ↓{reset} (navegar), {yellow}s{reset} (ordenar), {yellow}Enter{reset} (elegir fila), {yellow}Esc / q{reset} (salir).
|
|
149
|
+
- {cyan}Retorna:{reset} La fila seleccionada por el usuario (o nil si cancela).
|
|
150
|
+
|
|
151
|
+
{bright_green}* GRmenu.card(title, content, ...){reset}
|
|
152
|
+
Recuadro estilizado para reportes y mensajes. Incluye word-wrapping automatico
|
|
153
|
+
para parrafos largos sin deformar bordes ni desbordar la consola.
|
|
154
|
+
Acepta argumentos posicionales y por palabra clave:
|
|
155
|
+
- {bright_white}GRmenu.card("Titulo Noticia", "Cuerpo del mensaje...", style: 3, border_color: "neon_cyan"){reset}
|
|
156
|
+
- {bright_white}GRmenu.card("Solo Mensaje sin Titulo", pause: false){reset}
|
|
157
|
+
- {bright_white}GRmenu.card(title: "Status", content: "OK", style: 7, border_color: "green", pause: false){reset}
|
|
158
|
+
- {cyan}pause:{reset} [Boolean] Si es true (default en standalone), espera Enter; si es false (ideal para sleep), no bloquea.
|
|
159
|
+
- {cyan}border_color:{reset} [String] Color del marco (soporta hex, neon y "rgb").
|
|
160
|
+
- {cyan}title_color:{reset} [String] Color del texto del titulo.
|
|
161
|
+
- {cyan}content_color:{reset}[String] Color del contenido.
|
|
162
|
+
- {cyan}style:{reset} [Integer 1..20] Estilo de marco (default: 7).
|
|
163
|
+
|
|
164
|
+
{bright_green}* GRmenu.alert(tipo, mensaje, ...){reset}
|
|
165
|
+
Emite una notificacion modal con tag visual y paleta correspondiente:
|
|
166
|
+
- {cyan}:success{reset} -> Verde [✔ EXITO]
|
|
167
|
+
- {cyan}:error{reset} -> Rojo [✖ ERROR]
|
|
168
|
+
- {cyan}:warning{reset} -> Ambar [⚠ AVISO]
|
|
169
|
+
- {cyan}:info{reset} -> Cian [ℹ INFO]
|
|
170
|
+
- Acepta {cyan}pause: false{reset} para desvanecer sin bloquear.
|
|
171
|
+
- Soporta colores personalizados con {cyan}border_color:{reset} y {cyan}title_color:{reset}.
|
|
172
|
+
|
|
173
|
+
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
174
|
+
{bright_yellow}[5] PESTANAS, ENTRADA DE DATOS (INPUT), MODALES Y CONTROLES{reset}
|
|
175
|
+
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
176
|
+
|
|
177
|
+
{bright_green}* GRmenu.tabs(tabs_hash, title: nil, style: 3, mouse: false, ...){reset}
|
|
178
|
+
Crea un panel multitarea dividido en pestanas horizontales superiores:
|
|
179
|
+
{bright_white}GRmenu.tabs({{reset}
|
|
180
|
+
{bright_white} "Servidores" => [["NGINX", -> {}], ["Apache", -> {}]],{reset}
|
|
181
|
+
{bright_white} "Bases de Datos" => [["Postgres", -> {}], ["Redis", -> {}]],{reset}
|
|
182
|
+
{bright_white} "Ajustes" => [["Tema Neon", -> {}]]{reset}
|
|
183
|
+
{bright_white}}, title: "Panel Multitarea", style: 3, mouse: true).draw{reset}
|
|
184
|
+
- {cyan}Navegacion:{reset} Pulsa {yellow}Tab{reset} para avanzar de pestana, {yellow}Shift+Tab{reset} para retroceder, o haz {yellow}clic{reset} en el titulo de la pestana.
|
|
185
|
+
|
|
186
|
+
{bright_green}* GRmenu.input(prompt_o_titulo, ...){reset}
|
|
187
|
+
Rediseno de caja de texto con marco integrado, titulo superior centrado en el borde,
|
|
188
|
+
etiqueta interna ({cyan}label:{reset}), cursor de bloque en vivo {bright_white}█{reset} y soporte de contrasenas.
|
|
189
|
+
Acepta argumentos posicionales o por palabra clave:
|
|
190
|
+
- {bright_white}servidor = GRmenu.input(title: "Configuracion", label: "URL del Host:", default: "http://localhost:8080", style: 3){reset}
|
|
191
|
+
- {bright_white}token = GRmenu.input(title: "Seguridad", label: "Token Secreto:", password: true, style: 3, border_color: "neon_red"){reset}
|
|
192
|
+
- {bright_white}nombre = GRmenu.input("Ingresa tu Nombre:", default: "admin"){reset}
|
|
193
|
+
- {cyan}password:{reset} [Boolean] Enmascara el texto con asteriscos (****).
|
|
194
|
+
- {cyan}default:{reset} [String] Valor inicial pre-rellenado editable.
|
|
195
|
+
- {cyan}title_color:{reset} [String] Color del titulo del marco superior.
|
|
196
|
+
- {cyan}label_color:{reset} [String] Color de la etiqueta interna.
|
|
197
|
+
- {cyan}border_color:{reset} [String] Color del borde.
|
|
198
|
+
- {cyan}Teclas:{reset} Escribir texto, {yellow}Backspace{reset} (borrar), {yellow}Ctrl+U{reset} (limpiar), {yellow}Enter{reset} (confirmar).
|
|
199
|
+
|
|
200
|
+
{bright_green}* GRmenu.checkbox(items, ...){reset} (Alias: {bright_white}GRmenu.select_multi{reset}, {bright_white}GRmenu.multiselect{reset})
|
|
112
201
|
Lista interactiva con casillas de verificacion [X] / [ ].
|
|
113
|
-
- {
|
|
114
|
-
- {cyan}
|
|
115
|
-
- {cyan}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
- {cyan}preselected:{reset} [Array] Indices o nombres marcados por defecto.
|
|
119
|
-
- {cyan}Teclas:{reset} {yellow}Espacio{reset} (marcar), {yellow}a{reset} (todos), {yellow}n{reset} (ninguno), {yellow}i{reset} (invertir), {yellow}Enter{reset}.
|
|
120
|
-
- {cyan}Retorna:{reset} {bright_yellow}Array{reset} con los elementos seleccionados por el usuario.
|
|
121
|
-
|
|
122
|
-
{bright_green}* GRmenu.slider(prompt, min: 0, max: 100, step: 1, default: 50, unit: ""){reset}
|
|
123
|
-
(Alias: {bright_white}GRmenu.range{reset})
|
|
202
|
+
- Acepta {bright_white}GRmenu.checkbox(["Opcion A", "Opcion B"], title: "Permisos"){reset} o {bright_white}checkbox(items: [...], preselected: [0]){reset}.
|
|
203
|
+
- {cyan}Teclas:{reset} {yellow}Espacio{reset} (marcar/desmarcar), {yellow}a{reset} (todos), {yellow}n{reset} (ninguno), {yellow}i{reset} (invertir), {yellow}Enter{reset} (confirmar).
|
|
204
|
+
- {cyan}Retorna:{reset} {bright_yellow}Array{reset} con los elementos seleccionados.
|
|
205
|
+
|
|
206
|
+
{bright_green}* GRmenu.slider(prompt, ...){reset} (Alias: {bright_white}GRmenu.range{reset})
|
|
124
207
|
Control deslizante horizontal en tiempo real con barra de nivel.
|
|
125
|
-
- {
|
|
126
|
-
- {cyan}
|
|
127
|
-
- {cyan}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
- {
|
|
132
|
-
- {cyan}
|
|
133
|
-
|
|
134
|
-
{bright_green}* GRmenu.confirm(pregunta, default: true, color: "cyan", style: 3){reset}
|
|
135
|
-
Modal interactivo con botones [ Si ] y [ No ].
|
|
136
|
-
- {cyan}pregunta:{reset} [String] Mensaje o pregunta a confirmar.
|
|
137
|
-
- {cyan}default:{reset} [Boolean] Boton inicial (true = Si, false = No).
|
|
138
|
-
- {cyan}color:{reset} [String] Color del recuadro (default: "cyan", soporta "rgb").
|
|
139
|
-
- {cyan}style:{reset} [Integer 1..20] Estilo de borde (default: 3).
|
|
140
|
-
- {cyan}Teclas:{reset} {yellow}← / → / Tab{reset}, {yellow}s / y{reset} (Si), {yellow}n{reset} (No), {yellow}Enter{reset}.
|
|
141
|
-
- {cyan}Retorna:{reset} {bright_yellow}true{reset} si confirma Si, {bright_yellow}false{reset} si elige No o cancela.
|
|
142
|
-
|
|
143
|
-
{bright_green}* GRmenu.input(prompt, default: "", password: false, color: "cyan", style: 3){reset}
|
|
144
|
-
Cuadro de entrada de texto interactivo con cursor en vivo.
|
|
145
|
-
- {cyan}prompt:{reset} [String] Pregunta o instruccion.
|
|
146
|
-
- {cyan}default:{reset} [String] Texto inicial precargado.
|
|
147
|
-
- {cyan}password:{reset} [Boolean] Ocultar texto con asteriscos (****).
|
|
148
|
-
- {cyan}color:{reset} [String] Color del recuadro (soporta "rgb").
|
|
149
|
-
- {cyan}style:{reset} [Integer 1..20] Estilo de borde (default: 3).
|
|
150
|
-
- {cyan}Teclas:{reset} Escribir texto, {yellow}Backspace{reset}, {yellow}Ctrl+U{reset}, {yellow}Enter{reset}.
|
|
151
|
-
- {cyan}Retorna:{reset} {bright_yellow}String{reset} ingresado por el usuario.
|
|
208
|
+
- Acepta {bright_white}GRmenu.slider("Volumen:", min: 0, max: 100, default: 75){reset} o {bright_white}slider(prompt: "Brillo:", min: 0, max: 50){reset}.
|
|
209
|
+
- {cyan}Teclas:{reset} {yellow}← / →{reset} (paso normal), {yellow}↑ / ↓{reset} (paso x5), {yellow}Enter{reset} (guardar).
|
|
210
|
+
- {cyan}Retorna:{reset} {bright_yellow}Numeric{reset} con el valor seleccionado.
|
|
211
|
+
|
|
212
|
+
{bright_green}* GRmenu.confirm(pregunta, ...){reset}
|
|
213
|
+
Modal interactivo con botones [ Sí ] y [ No ].
|
|
214
|
+
- Acepta {bright_white}GRmenu.confirm("¿Deseas reiniciar?", default: true, style: 3){reset} o {bright_white}confirm(question: "...", default: false){reset}.
|
|
215
|
+
- {cyan}Teclas:{reset} {yellow}← / → / Tab{reset}, {yellow}s / y{reset} (Si), {yellow}n{reset} (No), {yellow}Enter{reset}.
|
|
216
|
+
- {cyan}Retorna:{reset} {bright_yellow}true{reset} o {bright_yellow}false{reset}.
|
|
152
217
|
|
|
153
218
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
154
|
-
{bright_yellow}[
|
|
219
|
+
{bright_yellow}[6] BARRA DE PROGRESO, SPINNER E IMAGENES ANSI TRUECOLOR{reset}
|
|
155
220
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
156
221
|
|
|
157
|
-
{bright_green}* GRmenu.progress(total = 100,
|
|
158
|
-
Barra de progreso fluida
|
|
159
|
-
- {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
- {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
* {bright_white}bar.total{reset} -> Total maximo.
|
|
171
|
-
|
|
172
|
-
{bright_green}* GRmenu.spinner(mensaje = "Cargando...", color: "cyan", delay: 0.08, &bloque){reset}
|
|
173
|
-
Indicador giratorio animado mientras se ejecuta el bloque (soporta color: "rgb").
|
|
174
|
-
- {cyan}mensaje:{reset} [String] Descripcion de la tarea en curso.
|
|
175
|
-
- {cyan}color:{reset} [String] Color del spinner (soporta "rgb").
|
|
176
|
-
- {cyan}level:{reset} [Integer 1 o 2] Brillo.
|
|
177
|
-
- {cyan}delay:{reset} [Float] Segundos por fotograma (default: 0.08).
|
|
178
|
-
- {cyan}Retorna:{reset} El valor retornado por el bloque { &bloque }.
|
|
179
|
-
- {cyan}Manejo de errores:{reset} Muestra [OK] en verde o [ERROR] en rojo.
|
|
180
|
-
|
|
181
|
-
{bright_green}* GRmenu.image(filepath, width: 40, height: nil, style: 3, color: "cyan"){reset}
|
|
182
|
-
Decodifica y renderiza imagenes (PNG, JPEG, WEBP, GIF, BMP) con micro-pixeles
|
|
183
|
-
ANSI TrueColor de 24 bits y escala proporcional exacta con cache instantanea.
|
|
184
|
-
- {cyan}filepath:{reset} [String] Ruta al archivo de imagen.
|
|
185
|
-
- {cyan}width:{reset} [Integer] Ancho en columnas de la terminal (default: 40).
|
|
186
|
-
- {cyan}height:{reset} [Integer, opcional] Alto en filas (nil = auto proporciones).
|
|
187
|
-
- {cyan}style:{reset} [Integer 1..20] Estilo de marco exterior (nil/0 = sin marco).
|
|
188
|
-
- {cyan}color:{reset} [String] Color del marco exterior (soporta "rgb").
|
|
189
|
-
- {cyan}center:{reset} [Boolean] Centrado horizontal (default: true).
|
|
222
|
+
{bright_green}* GRmenu.progress(total = 100, ... &bloque){reset}
|
|
223
|
+
Barra de progreso fluida con soporte de status dinamico protegido contra desbordes.
|
|
224
|
+
- Acepta {bright_white}GRmenu.progress(100, title: "Descargando") do |bar| ... end{reset} o con keyword {bright_white}progress(total: 50){reset}.
|
|
225
|
+
|
|
226
|
+
{bright_green}* GRmenu.spinner(mensaje = "Cargando...", ... &bloque){reset}
|
|
227
|
+
Indicador giratorio animado en hilo de ejecucion secundario mientras el bloque corre.
|
|
228
|
+
- Acepta {bright_white}GRmenu.spinner("Compilando assets...") { sleep 1.5 }{reset} o {bright_white}spinner(message: "..."){reset}.
|
|
229
|
+
|
|
230
|
+
{bright_green}* GRmenu.image(filepath, width: 40, height: nil, style: 3, color: "cyan", center: true){reset}
|
|
231
|
+
Decodifica y renderiza imagenes (PNG, JPG, WEBP, GIF, BMP) con micro-subpixeles
|
|
232
|
+
ANSI TrueColor de 24 bits usando medios bloques {bright_white}▀{reset} (2 pixeles reales verticales por caracter, proporcion 1:1).
|
|
233
|
+
- Remuestreo de alta fidelidad Lanczos con ImageMagick (Open3) o decodificador nativo de PNG puro (Zlib).
|
|
234
|
+
- Soporte completo para fondos transparentes (canal alfa PNG).
|
|
190
235
|
|
|
191
236
|
{bright_green}* GRmenu.banner(texto, delay = 0, color: "magenta", level: 2, style: 3, font: 1){reset}
|
|
192
|
-
|
|
193
|
-
- {cyan}texto:{reset} [String] Frase a convertir en arte ASCII 3D.
|
|
194
|
-
- {cyan}delay:{reset} [Float] Pausa entre lineas para animacion (0 = instantaneo).
|
|
195
|
-
- {cyan}color:{reset} [String] Color del banner (soporta "rgb").
|
|
196
|
-
- {cyan}level:{reset} [Integer 1 o 2] Brillo.
|
|
197
|
-
- {cyan}style:{reset} [Integer 1..20] Estilo de marco.
|
|
198
|
-
- {cyan}font:{reset} [Integer 1..10] Fuente tipografica.
|
|
199
|
-
|
|
200
|
-
{bright_green}* GRmenu.div(long = nil, color = "blue", level = 1, char = "─"){reset}
|
|
201
|
-
- {cyan}long:{reset} [Integer, opcional] Longitud de la linea (nil = terminal).
|
|
202
|
-
- {cyan}color:{reset} [String] Color de la linea divisoria (soporta "rgb").
|
|
203
|
-
- {cyan}level:{reset} [Integer 1 o 2] Brillo.
|
|
204
|
-
- {cyan}char:{reset} [String] Caracter repetido ("─", "═", "-", "*", "~", etc.).
|
|
205
|
-
|
|
206
|
-
{bright_green}* GRmenu.clear_screen{reset} (alias: {bright_green}GRmenu.clr{reset})
|
|
207
|
-
Limpia la pantalla y scrollback con secuencias ANSI de alta velocidad.
|
|
208
|
-
|
|
209
|
-
{bright_green}* GRmenu.continue(texto = "Presiona cualquier tecla para continuar..."){reset}
|
|
210
|
-
Pausa la ejecucion y espera una sola pulsacion en modo TTY crudo.
|
|
237
|
+
Convierte cadenas en arte ASCII 3D con bordes y fuentes personalizables.
|
|
211
238
|
|
|
212
239
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
213
|
-
{bright_yellow}[
|
|
240
|
+
{bright_yellow}[7] SISTEMA DE TEMAS .gr (CSS PARA TUI) Y EXPORTACION{reset}
|
|
214
241
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
+
|
|
243
|
+
{cyan}1. Temas Predefinidos Disponibles:{reset}
|
|
244
|
+
{bright_white}GRmenu.theme(:neon_red){reset} # Rojo neon vibrante con bordes dobles
|
|
245
|
+
{bright_white}GRmenu.theme(:cyberpunk){reset} # Neones cian, amarillo y Chroma RGB animado
|
|
246
|
+
{bright_white}GRmenu.theme(:matrix){reset} # Verdes fosforescentes estilo Hacker
|
|
247
|
+
{bright_white}GRmenu.theme(:dracula){reset} # Morados oscuros, rosas y cian
|
|
248
|
+
{bright_white}GRmenu.theme(:nord){reset} # Azules articos y tonos frios escandinavos
|
|
249
|
+
{bright_white}GRmenu.theme(:monokai){reset} # Paleta calida amarilla, magenta y naranja
|
|
250
|
+
{bright_white}GRmenu.theme(:sunset){reset} # Degradados rojo fuego, naranja y dorado
|
|
251
|
+
|
|
252
|
+
{cyan}2. Especificacion Completa de Bloques en un Archivo o Bloque CSS .gr:{reset}
|
|
253
|
+
{gray}GRmenu::config<-1->{reset}
|
|
254
|
+
{white}@theme:: "CyberNeon"{reset}
|
|
255
|
+
{white}@author:: "GRcode"{reset}
|
|
256
|
+
{white}@version:: "4.1"{reset}
|
|
257
|
+
|
|
258
|
+
{cyan}<<menu{reset}
|
|
259
|
+
{white}style:: 3{reset} # Estilo de marco 1..20
|
|
260
|
+
{white}banner_style:: 3{reset} # Estilo de marco del banner 1..20
|
|
261
|
+
{white}font:: 1{reset} # Fuente tipografica 3D 1..10
|
|
262
|
+
{white}animate:: diagonal{reset} # diagonal, linear, fade, rgb o false
|
|
263
|
+
{white}center:: true{reset} # Centrado en consola (true / false)
|
|
264
|
+
{white}mouse:: true{reset} # Activa soporte de raton (true / false)
|
|
265
|
+
{white}desc_prefix:: [i]{reset} # Prefijo de tooltip ("[i]", "*", "->")
|
|
266
|
+
{white}border:: neon_cyan:1{reset} # color:brillo (soporta "rgb:2")
|
|
267
|
+
{white}title:: neon_yellow:2{reset}
|
|
268
|
+
{white}focus:: neon_red:2{reset}
|
|
269
|
+
{white}options:: white:1{reset}
|
|
270
|
+
{white}banner:: neon_magenta:2{reset}
|
|
271
|
+
{white}subtitle:: cyan:1{reset}
|
|
272
|
+
{white}divider:: blue:1{reset}
|
|
273
|
+
{cyan}>>{reset}
|
|
274
|
+
|
|
275
|
+
{cyan}<<submenu{reset}
|
|
276
|
+
{white}style:: 3{reset} # Estilo de marco del submenu
|
|
277
|
+
{white}border:: neon_yellow:1{reset} # Borde de las cajas laterales
|
|
278
|
+
{white}focus:: neon_cyan:2{reset} # Opcion seleccionada en el submenu
|
|
279
|
+
{white}options:: white:1{reset} # Opciones inactivas
|
|
280
|
+
{white}title:: neon_yellow:2{reset} # Titulo de la caja del submenu
|
|
281
|
+
{white}arrow:: neon_cyan:2{reset} # Color de la flecha indicadora ▶
|
|
282
|
+
{cyan}>>{reset}
|
|
283
|
+
|
|
284
|
+
{cyan}<<tabs{reset}
|
|
285
|
+
{white}active_tab:: neon_yellow:2{reset}# Color de la pestana seleccionada [ Tab ]
|
|
286
|
+
{white}tab_color:: gray:1{reset} # Color de las pestanas inactivas
|
|
287
|
+
{white}indicator:: neon_cyan:2{reset} # Color de los corchetes o separadores
|
|
288
|
+
{cyan}>>{reset}
|
|
289
|
+
|
|
290
|
+
{cyan}<<input{reset}
|
|
291
|
+
{white}style:: 3{reset} # Estilo de marco del input
|
|
292
|
+
{white}border_color:: neon_cyan:1{reset}# Marco de la caja
|
|
293
|
+
{white}title_color:: neon_yellow:2{reset}# Titulo centrado en marco superior
|
|
294
|
+
{white}label_color:: white:2{reset} # Etiqueta interior del campo
|
|
295
|
+
{cyan}>>{reset}
|
|
296
|
+
|
|
297
|
+
{cyan}<<table{reset}
|
|
298
|
+
{white}style:: 3{reset}
|
|
299
|
+
{white}border_color:: red:2{reset}
|
|
300
|
+
{white}header_color:: yellow:2{reset}
|
|
301
|
+
{white}selected_row:: green:2{reset}
|
|
302
|
+
{white}row_color:: white:1{reset}
|
|
303
|
+
{white}zebra_striping:: true{reset}
|
|
304
|
+
{white}page_size:: 8{reset}
|
|
305
|
+
{cyan}>>{reset}
|
|
306
|
+
|
|
307
|
+
{cyan}<<card{reset}
|
|
308
|
+
{white}style:: 7{reset}
|
|
309
|
+
{white}border_color:: cyan:2{reset}
|
|
310
|
+
{white}title_color:: yellow:2{reset}
|
|
311
|
+
{white}content_color:: white:1{reset}
|
|
312
|
+
{cyan}>>{reset}
|
|
313
|
+
|
|
314
|
+
{cyan}<<slider{reset}
|
|
315
|
+
{white}style:: 3{reset}
|
|
316
|
+
{white}color:: rgb:2{reset}
|
|
317
|
+
{white}fill_char:: █{reset}
|
|
318
|
+
{white}empty_char:: ░{reset}
|
|
319
|
+
{cyan}>>{reset}
|
|
320
|
+
|
|
321
|
+
{cyan}<<checkbox{reset}
|
|
322
|
+
{white}style:: 3{reset}
|
|
323
|
+
{white}color:: rgb:2{reset}
|
|
324
|
+
{white}checked_mark:: [X]{reset}
|
|
325
|
+
{white}unchecked_mark:: [ ]{reset}
|
|
326
|
+
{cyan}>>{reset}
|
|
327
|
+
|
|
328
|
+
{cyan}3. Exportacion e Importacion:{reset}
|
|
329
|
+
- {bright_white}menu.style(<<-GR ... GR){reset} Inyeccion directa de CSS.
|
|
330
|
+
- {bright_white}menu.export_theme("tema.gr"){reset} Exporta el tema activo.
|
|
331
|
+
- {bright_white}$ ruby app.rb -theme -o mi_tema.gr{reset} Exportacion automatica por CLI.
|
|
242
332
|
|
|
243
333
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
244
|
-
{bright_yellow}[
|
|
334
|
+
{bright_yellow}[8] MODULO DE COLORES: Color / C Y PERSONALIZACION HEXADECIMAL{reset}
|
|
245
335
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
246
|
-
{
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
336
|
+
{cyan}1. Como Usar Colores Personalizados (Hexadecimal y Neon):{reset}
|
|
337
|
+
El motor soporta de forma 100% nativa TrueColor (24 bits) en tres vias:
|
|
338
|
+
|
|
339
|
+
{white}A) En Codigo Normal con menu.set_style:{reset}
|
|
340
|
+
{bright_white}menu.set_style.border("#FF0055").title("#00F5FF").focus("gold"){reset}
|
|
341
|
+
{bright_white}menu.set_style.banner("neon_emerald").subtitle("#A6E3A1"){reset}
|
|
342
|
+
|
|
343
|
+
{white}B) En CSS Inline tipo <style> (menu.style <<-GR ... GR):{reset}
|
|
344
|
+
{bright_white}menu.style(<<-GR){reset}
|
|
345
|
+
{white}border:: #FF0055:1{reset}
|
|
346
|
+
{white}title:: #00F5FF:2{reset}
|
|
347
|
+
{white}focus:: gold:2{reset}
|
|
348
|
+
{bright_white}GR{reset}
|
|
349
|
+
|
|
350
|
+
{white}C) Directamente con el modulo Color / C:{reset}
|
|
351
|
+
{bright_white}puts Color.hex("#FF0055", "Texto Carmesi Hex"){reset}
|
|
352
|
+
{bright_white}puts Color.neon_emerald("Texto Esmeralda Neon"){reset}
|
|
353
|
+
|
|
354
|
+
{cyan}2. Catalogo de 90+ Colores (Cada uno con version Normal y version Neon):{reset}
|
|
355
|
+
{bright_yellow}Metales y Joyas:{reset}
|
|
356
|
+
- gold / neon_gold | silver / neon_silver | platinum / neon_platinum
|
|
357
|
+
- bronze / neon_bronze | copper / neon_copper | ruby / neon_ruby
|
|
358
|
+
- emerald / neon_emerald | sapphire / neon_sapphire
|
|
359
|
+
|
|
360
|
+
{bright_yellow}Fuego, Atardecer y Calidos:{reset}
|
|
361
|
+
- crimson / neon_crimson | scarlet / neon_scarlet | coral / neon_coral
|
|
362
|
+
- amber / neon_amber | peach / neon_peach | orange / neon_orange
|
|
363
|
+
- red / neon_red | yellow / neon_yellow
|
|
364
|
+
|
|
365
|
+
{bright_yellow}Naturaleza, Menta y Verdes:{reset}
|
|
366
|
+
- lime / neon_lime | mint / neon_mint | jade / neon_jade
|
|
367
|
+
- forest / neon_forest | teal / neon_teal | green / neon_green
|
|
368
|
+
|
|
369
|
+
{bright_yellow}Agua, Cielo y Tonos Frios:{reset}
|
|
370
|
+
- turquoise / neon_turquoise | sky / neon_sky | azure / neon_azure
|
|
371
|
+
- cobalt / neon_cobalt | ice / neon_ice | cyan / neon_cyan
|
|
372
|
+
- aqua / neon_aqua | blue / neon_blue
|
|
373
|
+
|
|
374
|
+
{bright_yellow}Pasteles, Morados y Rosas:{reset}
|
|
375
|
+
- lavender / neon_lavender | mauve / neon_mauve | violet / neon_violet
|
|
376
|
+
- indigo / neon_indigo | fuchsia / neon_fuchsia | rose / neon_rose
|
|
377
|
+
- hot_pink / neon_hot_pink | pink / neon_pink | purple / neon_purple
|
|
378
|
+
- magenta / neon_magenta
|
|
379
|
+
|
|
380
|
+
{bright_yellow}Terminal, Hacker y Monitores:{reset}
|
|
381
|
+
- matrix / neon_matrix | charcoal / neon_charcoal | white / neon_white
|
|
382
|
+
- gray | black
|
|
383
|
+
|
|
384
|
+
{cyan}3. Modo Dinamico Arcoiris (Chroma Loop):{reset}
|
|
385
|
+
- {bright_yellow}rgb{reset} / {bright_yellow}rainbow{reset} / {bright_yellow}chroma{reset} -> Espectro animado continuo a 30 FPS en vivo.
|
|
256
386
|
|
|
257
387
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
258
|
-
{bright_yellow}[
|
|
388
|
+
{bright_yellow}[9] FUENTES ASCII 3D PARA BANNERS (font: 1 al 10){reset}
|
|
259
389
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
260
|
-
{yellow} 1{reset} ->
|
|
261
|
-
{yellow} 2{reset} ->
|
|
262
|
-
{yellow} 3{reset} ->
|
|
263
|
-
{yellow} 4{reset} ->
|
|
264
|
-
{yellow} 5{reset} ->
|
|
265
|
-
{yellow} 6{reset} -> {cyan}╓───╖{reset} (Simple horiz. doble vert.) {yellow}16{reset} -> {cyan}~~~~~{reset} (Ondulado)
|
|
266
|
-
{yellow} 7{reset} -> {cyan}╭───╮{reset} (Curvas redondeadas) {yellow}17{reset} -> {cyan}-----{reset} (Guiones)
|
|
267
|
-
{yellow} 8{reset} -> {cyan}▛▀▀▀▜{reset} (Bloques outline) {yellow}18{reset} -> {cyan}◆◆◆◆◆{reset} (Rombos / Diamantes)
|
|
268
|
-
{yellow} 9{reset} -> {cyan}▓▓▓▓▓{reset} (Sombreado oscuro) {yellow}19{reset} -> {cyan}●○○○●{reset} (Circulos - Default Op.)
|
|
269
|
-
{yellow}10{reset} -> {cyan}▒▒▒▒▒{reset} (Sombreado medio) {yellow}20{reset} -> {cyan}★☆☆☆★{reset} (Estrellas decoradas)
|
|
390
|
+
{yellow} 1{reset} -> ANSI Shadow 3D (Default) {yellow} 6{reset} -> Modular Pipe 3D
|
|
391
|
+
{yellow} 2{reset} -> Slant 3D (FIGlet) {yellow} 7{reset} -> Bubble / Round Gothic
|
|
392
|
+
{yellow} 3{reset} -> Doom / Standard 3D {yellow} 8{reset} -> Double-Line Wire 3D
|
|
393
|
+
{yellow} 4{reset} -> Graffiti Shadow 3D {yellow} 9{reset} -> Solid Fat 3D Block
|
|
394
|
+
{yellow} 5{reset} -> Small Slant / Mini 3D {yellow}10{reset} -> Arcade Stars Matrix
|
|
270
395
|
|
|
271
396
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
272
|
-
{bright_yellow}[
|
|
397
|
+
{bright_yellow}[10] ESTILOS DE MARCO Y BORDES (style: 1 al 20){reset}
|
|
273
398
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
399
|
+
{yellow} 1{reset} -> ##### (Hash) {yellow}11{reset} -> ░░░░░ (Sombreado suave)
|
|
400
|
+
{yellow} 2{reset} -> ┌───┐ (Linea simple) {yellow}12{reset} -> █████ (Bloque solido)
|
|
401
|
+
{yellow} 3{reset} -> ╔═══╗ (Doble linea) {yellow}13{reset} -> ***** (Asteriscos)
|
|
402
|
+
{yellow} 4{reset} -> ┏━━━┓ (Linea gruesa) {yellow}14{reset} -> +++++ (Cruces)
|
|
403
|
+
{yellow} 5{reset} -> ╒═══╕ (Doble horiz.) {yellow}15{reset} -> ===== (Iguales)
|
|
404
|
+
{yellow} 6{reset} -> ╓───╖ (Simple horiz.) {yellow}16{reset} -> ~~~~~ (Ondulado)
|
|
405
|
+
{yellow} 7{reset} -> ╭───╮ (Curvas) {yellow}17{reset} -> ----- (Guiones)
|
|
406
|
+
{yellow} 8{reset} -> ▛▀▀▀▜ (Bloques) {yellow}18{reset} -> ◆◆◆◆◆ (Diamantes)
|
|
407
|
+
{yellow} 9{reset} -> ▓▓▓▓▓ (Sombreado oscuro) {yellow}19{reset} -> ●○○○● (Circulos)
|
|
408
|
+
{yellow}10{reset} -> ▒▒▒▒▒ (Sombreado medio) {yellow}20{reset} -> ★☆☆☆★ (Estrellas)
|
|
282
409
|
|
|
283
410
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
284
|
-
{bright_yellow}[
|
|
411
|
+
{bright_yellow}[11] NAVEGACION POR TECLADO Y CONTROLES CON RATON{reset}
|
|
285
412
|
{bright_magenta}═════════════════════════════════════════════════════════════════════════════════════{reset}
|
|
413
|
+
* {bright_yellow}↑ (Arriba):{reset} Mover foco arriba. En el tope salta al fondo (Snake loop).
|
|
414
|
+
* {bright_yellow}↓ (Abajo):{reset} Mover foco abajo. En el fondo salta al tope (Snake loop).
|
|
415
|
+
* {bright_yellow}Tab / Shift+Tab:{reset} En menus con pestanas (tabs), cambia a la siguiente o anterior pestana.
|
|
416
|
+
* {bright_yellow}→ (Derecha):{reset} En opciones con submenus (▶), despliega el submenu lateral (hasta 3 niveles).
|
|
417
|
+
* {bright_yellow}← / Esc:{reset} En submenus laterales, cierra el nivel actual y regresa al nivel anterior.
|
|
418
|
+
* {bright_yellow}Enter:{reset} Ejecuta la opcion seleccionada o confirma modal/tabla.
|
|
419
|
+
* {bright_yellow}Raton (mouse: true):{reset}
|
|
420
|
+
- {cyan}Clic izquierdo:{reset} Enfoca la opcion pulsada; si ya esta enfocada, ejecuta inmediatamente.
|
|
421
|
+
- {cyan}Clic en submenus:{reset}Abre o enfoca la caja del submenu correspondiente.
|
|
422
|
+
- {cyan}Clic en pestanas:{reset}Cambia inmediatamente a la pestana sobre la que se hizo clic.
|
|
423
|
+
- {cyan}Rueda de scroll:{reset} Desplaza el foco arriba o abajo (↑ / ↓) fluidamente en el panel activo.
|
|
424
|
+
- {cyan}Clic en ▲ / ▼:{reset} Avanza o retrocede de pagina cuando hay paginacion.
|
|
425
|
+
* {bright_yellow}s:{reset} En tablas interactivas, ordena por la columna activa.
|
|
426
|
+
* {bright_yellow}Espacio:{reset} En casillas de verificacion (checkbox), marca/desmarca.
|
|
427
|
+
* {bright_yellow}a / n / i:{reset} En checkbox: (a) marcar todos, (n) ninguno, (i) invertir.
|
|
428
|
+
* {bright_yellow}q / Esc:{reset} Sale del menu, cancela modal o limpia buscador.
|
|
429
|
+
* {bright_yellow}Backspace:{reset} En buscadores e inputs, borra la ultima letra.
|
|
430
|
+
* {bright_yellow}Ctrl+U:{reset} En buscadores e inputs, limpia toda la linea escrita.
|
|
286
431
|
|
|
287
|
-
{cyan}1. Menu con Buscador en Vivo y Modo RGB:{reset}
|
|
288
|
-
{bright_white}menu = GRmenu.new([:opcion1, :opcion2], banner: "APP", search: true){reset}
|
|
289
|
-
{bright_white}menu.set_style.banner("rgb"){reset}
|
|
290
|
-
{bright_white}menu.set_style.border("rgb"){reset}
|
|
291
|
-
{bright_white}menu.draw{reset}
|
|
292
|
-
|
|
293
|
-
{cyan}2. Seleccion Multiple de Paquetes:{reset}
|
|
294
|
-
{bright_white}items = ["PostgreSQL 16", "Redis 7.2", "Nginx"]{reset}
|
|
295
|
-
{bright_white}elegidos = GRmenu.checkbox(items, title: "Instalador", color: "rgb"){reset}
|
|
296
|
-
|
|
297
|
-
{cyan}3. Control Deslizante de Memoria:{reset}
|
|
298
|
-
{bright_white}ram = GRmenu.slider("Memoria RAM", min: 1, max: 64, default: 16, unit: "GB"){reset}
|
|
299
|
-
|
|
300
|
-
{cyan}4. Barra de Progreso con Status en Vivo:{reset}
|
|
301
|
-
{bright_white}GRmenu.progress(100, title: "Descargando", color: "rgb") do |bar|{reset}
|
|
302
|
-
{bright_white} 10.times { bar.advance(10, status: "Descargando bloques...") }{reset}
|
|
303
|
-
{bright_white}end{reset}
|
|
304
432
|
{bright_blue}─────────────────────────────────────────────────────────────────────────────────────{reset}
|