gohud

Pływające okna

← Widżety

GoSurface — powłoka

Wyskakujące okna, arkusze i listy rozwijane — wszystkie używają tego jednego. Zajmuje się bezpiecznym obszarem, klawiaturą ekranową, przyklejonym nagłówkiem i stopką, przewijanym ciałem, tym, które okno jest wierzchnie, przywracaniem fokusu, własnością przycisku Wstecz i zmianą rozmiaru przeciągnięciem.

UmiejscowienieWygląda jakDo czego służy
CENTERKarta na środkuPotwierdzenia, ustawienia
BOTTOMArkusz wznoszący się od dołuListy, strony zarządzania
ANCHORKarta przypięta obok kontrolkiListy rozwijane, menu kontekstowe
Nie usuwa się sam. Reakcja na close_requested — ukrycie albo zwolnienie — należy do ekranu, który go posiada, bo powłoka nie może wiedzieć, dlaczego się zamyka (zapisz i zamknij czy odrzuć).

GoSheet — strona od dołu

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

Posiada własny CanvasLayer, więc niezawodnie siedzi ponad HUD. open() czyści ciało i wyłącza przycisk Wstecz oraz przyklejone wiersze — martwy przycisk na ekranie, z którego nie ma dokąd wracać, czyta się jako zepsuty.

GoDialogs — potwierdzenia, na które czekasz przez await

if await dialogs.confirm("Usuń zapis", "Tego nie da się cofnąć."):
    delete_save()

confirm(title, body, ok_text, cancel_text, extra, args, destructive) — wszystko po treści jest opcjonalne, a alert() działa tak samo, tylko z jednym przyciskiem. Ustaw destructive dla czegoś, czego nie da się cofnąć: przycisk potwierdzenia staje się wypełnionym przyciskiem GoStyle.Tone.DANGER_SOLID. W jasnym motywie zabarwiona etykieta niebezpieczeństwa musi ciemnieć aż do czerni; wypełniony przycisk zachowuje biały tekst na czerwieni. Ton nakładany jest ponownie przy każdym wywołaniu, bo jedno okno jest używane wielokrotnie, a drugie confirm() w trakcie otwartego pierwszego zwraca od razu false. confirm_key() przyjmuje klucze tłumaczeń.

Układ przycisków. action_layout to domyślnie VERTICAL (bezpieczne przy długich tłumaczeniach), HORIZONTAL dla jednego rzędu z połową szerokości na każdy, albo AUTO, które wybiera jeden rząd tylko wtedy, gdy obie etykiety mieszczą się w połowie karty w jednej linii, a poza tym układa je jedna pod drugą. action_gap to odstęp między przyciskami, a body_gap odstęp nad nimi — zrób go szerszym niż odstęp między przyciskami, żeby pytanie i wybór czytały się jako dwie części. Dla jednego okna z osobna wywołaj set_next_action_layout() przed jego otwarciem. Rząd budowany jest przy pierwszym otwarciu okna, więc GoDialogs w autoloadzie nic nie dokłada przy starcie.

GoForm — formularz z ograniczoną szerokością

Gwarantuje, że etykiety u jego potomków się zawijają. Bez tego jedno długie zdanie rozciąga się w pojedynczą linię, której minimalna szerokość przekracza ekran, i boki zostają obcięte — nie da się nawet poznać, na jakim ekranie się jest. Włączanie zawijania ręcznie w każdej scenie zapomina się za każdym razem.

GoScroll — przewijanie dotykiem

Włóż do środka jedną rzecz. Nagłówki i rzędy przycisków należą na zewnątrz — długa lista nie może wypychać ich poza ekran. use_panel_edge() przenosi pasek przewijania w istniejący margines wewnętrzny karty, a treść zachowuje swoje wcięcie.