GoSurface — el contenedor
Los emergentes, las hojas y los desplegables usan todos este. Se encarga del área segura, el teclado virtual, el encabezado y el pie fijos, el cuerpo desplazable, qué ventana está encima, la restauración del foco, la propiedad del botón Atrás y el redimensionado por arrastre.
| Colocación | Se ve como | Se usa para |
|---|---|---|
CENTER | Una tarjeta en el medio | Confirmaciones, ajustes |
BOTTOM | Una hoja que sube desde abajo | Listas, páginas de gestión |
ANCHOR | Una tarjeta fijada junto a un control | Desplegables, menús contextuales |
close_requested — ocultarlo o liberarlo — es tarea de la
pantalla que lo posee, porque el contenedor no puede saber por qué se está cerrando (guardar y cerrar, o descartar).
GoSheet — una página desde abajo
var sheet := GoSheet.new()
add_child(sheet)
sheet.open("Inventario")
sheet.toolbar().add_child(GoStyle.line_edit("Buscar…"))
sheet.toolbar().visible = true
sheet.footer().add_child(GoStyle.button("Cerrar", sheet.close, GoStyle.Tone.PRIMARY))
sheet.footer().visible = true
Posee un CanvasLayer, así que queda de forma fiable por encima del HUD. open() vacía el
cuerpo y desactiva el botón Atrás y las filas fijas — un botón muerto en una pantalla a la que no hay adónde
volver se lee como algo roto.
GoDialogs — confirmaciones con await
if await dialogs.confirm("Borrar partida", "Esto no se puede deshacer."):
delete_save()
confirm(title, body, ok_text, cancel_text, extra, args, destructive) — todo lo que va después del cuerpo es
opcional, y alert() funciona igual pero con un solo botón. Activa destructive para
algo que no se puede deshacer: el botón de confirmar pasa a ser el botón relleno GoStyle.Tone.DANGER_SOLID.
En un tema claro, una etiqueta de peligro teñida tiene que oscurecerse hasta leerse como texto negro; el botón relleno
mantiene texto blanco sobre rojo. El tono se vuelve a aplicar en cada llamada porque se reutiliza una sola ventana, y un segundo
confirm() mientras hay uno abierto devuelve false de inmediato. confirm_key() acepta
claves de traducción.
Disposición de los botones. action_layout es VERTICAL por omisión (seguro para traducciones largas),
HORIZONTAL para una sola fila con la mitad del ancho cada uno, o AUTO, que usa una fila solo cuando ambas
etiquetas caben en la mitad de la tarjeta en una sola línea y las apila en caso contrario. action_gap es el espacio entre
los botones y body_gap el espacio por encima de ellos — hazlo más ancho que el hueco entre botones para que la pregunta y
la elección se lean como dos partes. Para un único diálogo, llama a set_next_action_layout() antes de abrirlo.
La fila se construye cuando un diálogo se abre por primera vez, así que un GoDialogs en autoload no añade nada al arranque.
GoForm — un formulario de ancho limitado
GoScroll — desplazamiento táctil
Mete una sola cosa dentro. Los encabezados y las filas de botones van fuera — una lista larga no debe
empujarlos fuera de la pantalla. use_panel_edge() mueve la barra de desplazamiento al relleno que la tarjeta ya tiene
mientras el contenido mantiene su sangría.