GUI nativa con Xilem
Forja puede abrir una ventana gráfica nativa usando importar "gui". Internamente transpila tu código a Rust y usa el framework Xilem con GPU (Vello/wgpu) para renderizar widgets reactivos.
💡 Para ejecutar código GUI necesitás compilar Forja con
--features gui. Si no lo hiciste, visitá Instalación.Ejemplo mínimo
📄 gui.fa
importar "gui"
funcion al_saludar() {
escribir("¡Hola!")
}
funcion main() {
variable nombre = ""
variable volumen = 50
columna(
etiqueta("🎯 Forja GUI"),
entrada_texto("nombre"),
deslizante("volumen", 0, 100),
casilla("Activo", "nombre"),
boton("Saludar", &al_saludar)
)
} Layouts
| Función Forja | Widget Xilem | Descripción |
|---|---|---|
columna(hijos...) | flex(Axis::Vertical, ...) | Contenedor vertical |
fila(hijos...) | flex(Axis::Horizontal, ...) | Contenedor horizontal |
pila(hijos...) | zstack(...) | Superposición en Z |
desplazable(hijo) | portal(...) | Contenedor con scroll |
panel_dividido(a, b, dir) | split(...) | Panel redimensionable |
caja_fija(hijo, ancho, alto) | sized_box(...) | Caja con tamaño fijo |
Widgets
| Función Forja | Descripción |
|---|---|
etiqueta(texto) | Texto estático |
etiqueta_dinamica(variable) | Texto que se actualiza automáticamente |
texto_enriquecido(texto) | Texto Markdown con formato |
entrada_texto(variable) | Campo de texto simple |
area_texto(variable) | Área de texto multilínea |
boton(texto, &callback) | Botón con callback |
casilla(etiqueta, variable) | Casilla de verificación |
deslizante(variable, min, max) | Control deslizante |
barra_progreso(variable) | Barra de progreso |
cargando() | Indicador de carga |
separador() | Línea separadora |
espacio(tamaño) | Espaciador |
Ejecutar
🖼️ Comandos
# Native runner (AST directo a Xilem, sin compilar Rust)
cargo run --features gui --bin forja -- run --native examples/204_login_final.fa
# Transpilado a Rust (genera .exe autónomo)
cargo run --features gui --bin forja -- transpile examples/204_login_final.fa
cd .forja_gui_cache && cargo run --release
# GUI Launcher directo
cargo build --features gui
.\target\debug\forja-gui.exe examples/204_login_final.fa