GoSurface — il guscio
Popup, fogli e menu a tendina usano tutti questo. Si occupa dell'area sicura, della tastiera virtuale, dell'intestazione e del piè di pagina fissi, di un corpo scorrevole, di quale finestra sia in cima, del ripristino del focus, di chi possiede il tasto Indietro e del ridimensionamento con il trascinamento.
| Collocazione | Che aspetto ha | Usata per |
|---|---|---|
CENTER | Una scheda al centro | Conferme, impostazioni |
BOTTOM | Un foglio che sale dal basso | Liste, pagine di gestione |
ANCHOR | Una scheda fissata accanto a un controllo | Menu a tendina, menu contestuali |
close_requested — nascondendo o liberando — spetta alla
schermata proprietaria, perché il guscio non può sapere perché si sta chiudendo (salva e chiudi, oppure scarta).
GoSheet — una pagina dal basso
var sheet := GoSheet.new()
add_child(sheet)
sheet.open("Inventario")
sheet.toolbar().add_child(GoStyle.line_edit("Cerca…"))
sheet.toolbar().visible = true
sheet.footer().add_child(GoStyle.button("Chiudi", sheet.close, GoStyle.Tone.PRIMARY))
sheet.footer().visible = true
Possiede un CanvasLayer, quindi sta sopra l'HUD in modo affidabile. open() svuota il
corpo e disattiva il tasto Indietro e le righe fisse — un pulsante morto su una schermata da cui non si torna
da nessuna parte si legge come un difetto.
GoDialogs — conferme da mettere in await
if await dialogs.confirm("Elimina salvataggio", "L'operazione non è reversibile."):
delete_save()
confirm(title, body, ok_text, cancel_text, extra, args, destructive) — tutto ciò che segue il corpo è
facoltativo, e alert() funziona allo stesso modo con un solo pulsante. Imposta destructive per
qualcosa di irreversibile: il pulsante di conferma diventa il pulsante pieno GoStyle.Tone.DANGER_SOLID.
Su un tema chiaro un'etichetta di pericolo velata deve scurirsi finché non si legge come testo nero; il pulsante pieno
mantiene testo bianco su rosso. Il tono viene riapplicato a ogni chiamata perché la finestra viene riutilizzata, e una seconda
confirm() mentre una è già aperta restituisce subito false. confirm_key() accetta
chiavi di traduzione.
Disposizione dei pulsanti. action_layout è VERTICAL per impostazione predefinita (sicura con traduzioni lunghe),
HORIZONTAL per una riga sola con metà larghezza ciascuno, oppure AUTO, che usa una riga sola quando entrambe
le etichette stanno in metà scheda su una riga e altrimenti le impila. action_gap è lo spazio tra
i pulsanti e body_gap lo spazio sopra di essi — rendilo più ampio dello spazio tra i pulsanti, così la domanda e
la scelta si leggono come due parti distinte. Per una sola finestra di dialogo, chiama set_next_action_layout() prima di aprirla.
La riga viene costruita alla prima apertura di una finestra di dialogo, quindi un GoDialogs in autoload non aggiunge nulla all'avvio.
GoForm — un modulo con larghezza limitata
GoScroll — scorrimento touch
Mettici dentro una cosa sola. Intestazioni e righe di pulsanti stanno fuori — una lista lunga non deve
spingerle fuori dallo schermo. use_panel_edge() sposta la barra di scorrimento dentro il margine interno già presente
nella scheda, mentre il contenuto mantiene il suo rientro.