Comparativa de Widgets: zcatgui vs DVUI vs Gio vs zcatui
Investigacion realizada: 2025-12-09
Proposito: Identificar widgets faltantes en zcatgui comparando con otras librerias
Resumen Ejecutivo
| Libreria |
Lenguaje |
Widgets |
Notas |
| zcatgui |
Zig |
11 |
Nuestro proyecto - EN DESARROLLO |
| DVUI |
Zig |
~20 |
Unica referencia GUI Zig nativa |
| Gio |
Go |
~25 |
Immediate mode moderno, Material Design |
| zcatui |
Zig |
35 |
Nuestro proyecto hermano TUI |
1. zcatgui - Estado Actual (v0.4.0)
Widgets Implementados (11)
| Widget |
Archivo |
Estado |
Descripcion |
| Label |
label.zig |
OK |
Texto estatico con alineacion |
| Button |
button.zig |
OK |
Con importancia (primary/normal/danger) |
| TextInput |
text_input.zig |
OK |
Entry de texto con cursor |
| Checkbox |
checkbox.zig |
OK |
Toggle booleano |
| Select |
select.zig |
OK |
Dropdown selection |
| List |
list.zig |
OK |
Lista seleccionable |
| Table |
table.zig |
OK |
Edicion in-situ, dirty tracking |
| Panel |
panel.zig |
OK |
Container con titulo y bordes |
| Split |
split.zig |
OK |
HSplit/VSplit draggable |
| Modal |
modal.zig |
OK |
Dialogos modales (alert, confirm, input) |
| Focus |
focus.zig |
OK |
Focus manager, tab navigation |
2. DVUI - Widgets Disponibles
Fuente: DVUI GitHub
Widgets en DVUI
| Widget |
En zcatgui |
Prioridad |
Notas |
| Button |
OK |
- |
Ya implementado |
| Checkbox |
OK |
- |
Ya implementado |
| Radio Buttons |
NO |
MEDIA |
Falta implementar |
| Text Entry (single) |
OK |
- |
Ya implementado |
| Text Entry (multi) |
NO |
ALTA |
TextArea falta |
| Number Entry |
NO |
ALTA |
Input numerico validado |
| Text Layout |
NO |
MEDIA |
Texto con partes clickables |
| Floating Window |
NO |
MEDIA |
Ventanas draggables |
| Menu |
NO |
ALTA |
Menus dropdown |
| Popup/Context |
OK |
- |
Modal implementado |
| Scroll Area |
NO |
ALTA |
Contenido scrollable |
| Slider |
NO |
ALTA |
Rango numerico |
| SliderEntry |
NO |
MEDIA |
Slider + text entry combo |
| Toast |
NO |
BAJA |
Notificaciones temporales |
| Panes (draggable) |
OK |
- |
Split implementado |
| Dropdown |
OK |
- |
Select implementado |
| Combo Box |
NO |
ALTA |
Dropdown + text entry |
| Reorderable Lists |
NO |
MEDIA |
Drag to reorder |
| Data Grid |
OK |
- |
Table implementado |
| Tooltips |
NO |
MEDIA |
Hover info |
Widgets DVUI Faltantes en zcatgui (Prioritarios)
- Menu - Critico para apps
- Scroll Area - Necesario para contenido largo
- Slider - Control numerico comun
- TextArea - Input multilinea
- Number Entry - Input con validacion numerica
- Combo Box - AutoComplete (requerido por Simifactu)
- Radio Buttons - Seleccion exclusiva
3. Gio (Go) - Widgets Disponibles
Fuente: docs/research/GIO_UI_ANALYSIS.md
Widget State (gioui.org/widget)
| Widget |
En zcatgui |
Prioridad |
Notas |
| Clickable |
OK |
- |
Button usa esto |
| Editor |
OK |
- |
TextInput implementado |
| Selectable |
NO |
BAJA |
Texto seleccionable |
| Float |
NO |
ALTA |
Para sliders |
| Bool |
OK |
- |
Checkbox |
| Enum |
NO |
MEDIA |
Radio buttons |
| List |
OK |
- |
List implementado |
| Scrollbar |
NO |
ALTA |
Falta |
| Draggable |
NO |
MEDIA |
Drag & drop |
| Decorations |
NO |
BAJA |
Decoraciones ventana |
| Icon |
NO |
BAJA |
Iconos vectoriales |
Material Widgets (gioui.org/widget/material)
| Widget |
En zcatgui |
Prioridad |
Notas |
| Label, H1-H6 |
PARCIAL |
MEDIA |
Solo Label basico |
| Button, IconButton |
OK |
- |
Button implementado |
| Editor |
OK |
- |
TextInput |
| CheckBox |
OK |
- |
Checkbox |
| RadioButton |
NO |
MEDIA |
Falta |
| Switch |
NO |
BAJA |
Toggle estilo movil |
| Slider |
NO |
ALTA |
Falta |
| List, Scrollbar |
PARCIAL |
ALTA |
List OK, Scrollbar falta |
| ProgressBar |
NO |
MEDIA |
Indicador progreso |
| ProgressCircle |
NO |
BAJA |
Spinner circular |
| Loader |
NO |
BAJA |
Spinner |
Extended Components (gioui.org/x/component)
| Widget |
En zcatgui |
Prioridad |
Notas |
| AppBar |
NO |
MEDIA |
Barra aplicacion |
| NavDrawer |
NO |
MEDIA |
Panel navegacion |
| Menu, MenuItem |
NO |
ALTA |
Menus |
| ContextArea |
NO |
MEDIA |
Menu contextual |
| Grid, Table |
OK |
- |
Table implementado |
| Sheet, Surface |
NO |
BAJA |
Contenedores |
| TextField |
OK |
- |
TextInput con label |
| Tooltip |
NO |
MEDIA |
Hover info |
| Discloser |
NO |
MEDIA |
Expandible/collapsible |
| Divider |
NO |
BAJA |
Separador visual |
| ModalLayer, Scrim |
OK |
- |
Modal implementado |
Widgets Gio Faltantes en zcatgui (Prioritarios)
- Menu, MenuItem - Navegacion aplicacion
- Scrollbar - Contenido largo
- Slider - Control numerico
- RadioButton - Seleccion exclusiva
- ProgressBar - Indicadores
- Tooltip - Informacion contextual
- NavDrawer - Navegacion lateral
4. zcatui (TUI) - Widgets Disponibles
Proyecto hermano: /mnt/cello2/arno/re/recode/zig/zcatui/
Todos los Widgets en zcatui (35)
| Widget |
En zcatgui |
Prioridad |
Descripcion |
paragraph.zig |
NO |
BAJA |
Texto con wrapping |
list.zig |
OK |
- |
Lista seleccionable |
gauge.zig |
NO |
MEDIA |
Indicador tipo gauge |
tabs.zig |
NO |
ALTA |
Tab navigation |
sparkline.zig |
NO |
BAJA |
Mini grafico linea |
scrollbar.zig |
NO |
ALTA |
Scrollbar |
barchart.zig |
NO |
BAJA |
Grafico barras |
canvas.zig |
NO |
BAJA |
Dibujo libre |
chart.zig |
NO |
BAJA |
Graficos genericos |
clear.zig |
NO |
- |
Utilidad limpieza |
calendar.zig |
NO |
MEDIA |
Selector fecha |
table.zig |
OK |
- |
Tabla |
input.zig |
OK |
- |
TextInput |
popup.zig |
OK |
- |
Modal |
menu.zig |
NO |
ALTA |
Menu |
tooltip.zig |
NO |
MEDIA |
Tooltip |
tree.zig |
NO |
ALTA |
TreeView |
filepicker.zig |
NO |
MEDIA |
Selector archivos |
scroll.zig |
NO |
ALTA |
ScrollArea |
textarea.zig |
NO |
ALTA |
Input multilinea |
select.zig |
OK |
- |
Dropdown |
slider.zig |
NO |
ALTA |
Slider |
panel.zig |
OK |
- |
Container |
checkbox.zig |
OK |
- |
Checkbox |
statusbar.zig |
NO |
MEDIA |
Barra estado |
block.zig |
NO |
BAJA |
Container basico |
spinner.zig |
NO |
MEDIA |
Indicador carga |
help.zig |
NO |
BAJA |
Panel ayuda |
progress.zig |
NO |
MEDIA |
Barra progreso |
markdown.zig |
NO |
BAJA |
Render markdown |
syntax.zig |
NO |
BAJA |
Syntax highlighting |
viewport.zig |
NO |
MEDIA |
Area scrollable |
logo.zig |
NO |
BAJA |
Logo ASCII art |
dirtree.zig |
NO |
MEDIA |
Arbol directorios |
Widgets zcatui Faltantes en zcatgui (Prioritarios)
- Tabs - Navegacion por pestanas
- Menu - Menus dropdown
- Tree - Vista arbol
- ScrollArea - Contenido scrollable
- TextArea - Input multilinea
- Slider - Control numerico
- Scrollbar - Indicador scroll
- Calendar - Selector fecha
- ProgressBar - Indicador progreso
- Spinner - Indicador carga
5. Analisis Consolidado: Widgets Faltantes
Prioridad CRITICA (Necesarios para MVP Simifactu)
| Widget |
DVUI |
Gio |
zcatui |
Descripcion |
| Menu |
SI |
SI |
SI |
Menus aplicacion |
| ScrollArea |
SI |
SI |
SI |
Contenido scrollable |
| ComboBox/AutoComplete |
SI |
NO |
NO |
Dropdown + typing |
| Tabs |
NO |
SI |
SI |
Tab navigation |
Prioridad ALTA
| Widget |
DVUI |
Gio |
zcatui |
Descripcion |
| Slider |
SI |
SI |
SI |
Control numerico |
| TextArea |
SI |
SI |
SI |
Input multilinea |
| Tree |
NO |
NO |
SI |
Vista jerarquica |
| RadioButton |
SI |
SI |
NO |
Seleccion exclusiva |
| Scrollbar |
SI |
SI |
SI |
Indicador scroll |
| NumberEntry |
SI |
NO |
NO |
Input numerico validado |
Prioridad MEDIA
| Widget |
DVUI |
Gio |
zcatui |
Descripcion |
| Tooltip |
SI |
SI |
SI |
Hover info |
| ProgressBar |
NO |
SI |
SI |
Indicador progreso |
| Spinner |
NO |
SI |
SI |
Indicador carga |
| Calendar |
NO |
NO |
SI |
Selector fecha |
| StatusBar |
NO |
NO |
SI |
Barra estado |
| NavDrawer |
NO |
SI |
NO |
Panel navegacion |
Prioridad BAJA
| Widget |
Razon |
| Gauge |
Especifico TUI |
| Sparkline |
Grafico especializado |
| BarChart |
Grafico especializado |
| Canvas |
Dibujo libre |
| Markdown |
Render especializado |
| Syntax |
Highlighting especializado |
| Logo |
ASCII art |
6. Roadmap de Implementacion
Fase Inmediata (v0.5.0)
- AutoComplete/ComboBox - Requerido por Simifactu
- Slider - Control basico muy usado
- Scrollbar + ScrollArea - Contenido largo
Fase Siguiente (v0.6.0)
- Menu - Navegacion aplicacion
- Tabs - Navegacion por pestanas
- RadioButton - Seleccion exclusiva
Fase Posterior (v0.7.0)
- TextArea - Input multilinea
- Tree - Vista jerarquica
- NumberEntry - Input numerico validado
- ProgressBar + Spinner - Indicadores
Fase Final (v0.8.0)
- Tooltip - Hover info
- Calendar - Selector fecha
- StatusBar - Barra estado
- FilePicker - Selector archivos
7. Conclusiones
Widgets Unicos que Tenemos
- Macro System - Ninguna otra libreria tiene grabacion/reproduccion de macros integrada
Gaps Criticos
- AutoComplete/ComboBox - DVUI lo tiene, Simifactu lo necesita
- Menu - Todas las librerias maduras lo tienen
- ScrollArea - Fundamental para cualquier app seria
- Tabs - Navegacion standard
Fortalezas Actuales
- Table con edicion y dirty tracking (mejor que DVUI)
- Modal completo (alert, confirm, input)
- Split panels funcionales
- Sistema de macros (unico)
Estimacion Esfuerzo
| Fase |
Widgets |
Estimacion |
| v0.5.0 |
AutoComplete, Slider, ScrollArea |
1 semana |
| v0.6.0 |
Menu, Tabs, RadioButton |
1 semana |
| v0.7.0 |
TextArea, Tree, NumberEntry, Progress |
1.5 semanas |
| v0.8.0 |
Tooltip, Calendar, StatusBar, FilePicker |
1 semana |
| Total |
16 widgets |
~4.5 semanas |
Referencias