gohud

Fenêtres flottantes

← Widgets

GoSurface — la coque

Les fenêtres surgissantes, les feuilles et les listes déroulantes passent toutes par elle. Elle gère la zone sûre, le clavier virtuel, l'en-tête et le pied fixes, un corps défilant, la fenêtre qui est au premier plan, la restauration du focus, la propriété du bouton Retour et le redimensionnement par glissement.

PlacementAspectSert à
CENTERUne carte au milieuConfirmations, réglages
BOTTOMUne feuille qui monte depuis le basListes, pages de gestion
ANCHORUne carte épinglée à côté d'une commandeListes déroulantes, menus contextuels
Elle ne se supprime pas elle-même. Réagir à close_requested — masquer ou libérer — revient à l'écran propriétaire, parce que la coque ne peut pas savoir pourquoi elle se ferme (enregistrer et fermer, ou abandonner).

GoSheet — une page venue du bas

var sheet := GoSheet.new()
add_child(sheet)
sheet.open("Inventaire")
sheet.toolbar().add_child(GoStyle.line_edit("Rechercher…"))
sheet.toolbar().visible = true
sheet.footer().add_child(GoStyle.button("Fermer", sheet.close, GoStyle.Tone.PRIMARY))
sheet.footer().visible = true

Elle possède un CanvasLayer : elle se place donc de façon fiable au-dessus du HUD. open() vide le corps et désactive le bouton Retour et les rangées fixes — un bouton mort sur un écran d'où l'on ne peut revenir nulle part se lit comme une panne.

GoDialogs — des confirmations que vous await

if await dialogs.confirm("Supprimer la sauvegarde", "Cette action est irréversible."):
    delete_save()

confirm(title, body, ok_text, cancel_text, extra, args, destructive) — tout ce qui suit le corps est facultatif, et alert() fonctionne de la même manière avec un seul bouton. Renseignez destructive pour ce qui ne peut pas être annulé : le bouton de confirmation devient le bouton plein GoStyle.Tone.DANGER_SOLID. Sur un thème clair, un libellé de danger teinté doit s'assombrir jusqu'à se lire comme du texte noir ; le bouton plein, lui, garde du texte blanc sur du rouge. La tonalité est réappliquée à chaque appel parce qu'une même fenêtre est réutilisée, et un second confirm() alors qu'une fenêtre est ouverte renvoie false immédiatement. confirm_key() accepte des clés de traduction.

Disposition des boutons. action_layout vaut VERTICAL par défaut (sûr pour les traductions longues), HORIZONTAL pour une seule rangée où chacun prend la moitié de la largeur, ou AUTO, qui ne passe sur une rangée que si les deux libellés tiennent sur une seule ligne dans la moitié de la carte, et les empile sinon. action_gap est l'espace entre les boutons et body_gap l'espace au-dessus d'eux — faites-le plus large que l'écart entre boutons pour que la question et le choix se lisent comme deux parties. Pour une seule boîte de dialogue, appelez set_next_action_layout() avant de l'ouvrir. La rangée est construite à la première ouverture : un GoDialogs chargé en autoload n'ajoute donc rien au démarrage.

GoForm — un formulaire à largeur plafonnée

Il garantit le retour à la ligne des libellés qu'il contient. Sans cela, une longue phrase s'étire sur une seule ligne dont la largeur minimale dépasse l'écran, et les côtés sont rognés — on ne peut même plus dire sur quel écran on se trouve. Activer le retour à la ligne à la main, scène par scène, s'oublie à tous les coups.

GoScroll — le défilement tactile

Mettez-y une seule chose. Les en-têtes et les rangées de boutons se placent à l'extérieur — une longue liste ne doit pas les pousser hors de l'écran. use_panel_edge() déplace la barre de défilement dans la marge intérieure existante de la carte tandis que le contenu garde son retrait.