gohud

Finestre flottanti

← Widget

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.

CollocazioneChe aspetto haUsata per
CENTERUna scheda al centroConferme, impostazioni
BOTTOMUn foglio che sale dal bassoListe, pagine di gestione
ANCHORUna scheda fissata accanto a un controlloMenu a tendina, menu contestuali
Non si rimuove da sé. Reagire a 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

Garantisce che le etichette discendenti vadano a capo. Senza, una frase lunga si allunga in una riga sola la cui larghezza minima supera lo schermo, e i lati vengono tagliati — non si capisce nemmeno su quale schermata ci si trova. Attivare l'andata a capo a mano in ogni scena ci si dimentica ogni volta.

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.