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 ForjaWidget XilemDescripció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 ForjaDescripció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