GoSurface — оболочка
Всплывающие окна, листы и выпадающие списки используют её же. Она берёт на себя безопасную область, виртуальную клавиатуру, закреплённые шапку и подвал, прокручиваемое тело, определение самого верхнего окна, восстановление фокуса, владение кнопкой «Назад» и изменение размера перетаскиванием.
| Размещение | Как выглядит | Для чего |
|---|---|---|
CENTER | Карточка посередине | Подтверждения, настройки |
BOTTOM | Лист, поднимающийся снизу | Списки, страницы управления |
ANCHOR | Карточка, закреплённая рядом с элементом управления | Выпадающие списки, контекстные меню |
close_requested — скрывать или освобождать — обязанность
владеющего экрана, потому что оболочка не может знать, почему её закрывают (сохранить и закрыть или отбросить).
GoSheet — страница снизу
var sheet := GoSheet.new()
add_child(sheet)
sheet.open("Инвентарь")
sheet.toolbar().add_child(GoStyle.line_edit("Поиск…"))
sheet.toolbar().visible = true
sheet.footer().add_child(GoStyle.button("Закрыть", sheet.close, GoStyle.Tone.PRIMARY))
sheet.footer().visible = true
Он владеет собственным CanvasLayer, поэтому надёжно лежит поверх HUD. open() очищает
тело и выключает кнопку «Назад» и закреплённые ряды — мёртвая кнопка на экране, откуда некуда возвращаться,
читается как поломка.
GoDialogs — подтверждения, которые можно await
if await dialogs.confirm("Удалить сохранение", "Это действие необратимо."):
delete_save()
confirm(title, body, ok_text, cancel_text, extra, args, destructive) — всё после текста необязательно,
а alert() работает так же, но с одной кнопкой. Ставьте destructive для того, что нельзя
отменить: кнопка подтверждения становится залитой кнопкой GoStyle.Tone.DANGER_SOLID.
В светлой теме подкрашенная подпись опасного действия вынуждена темнеть, пока не станет читаться как чёрный текст;
залитая кнопка оставляет белый текст на красном. Тон применяется заново при каждом вызове, потому что окно переиспользуется,
а второй confirm() при открытом первом сразу возвращает false. confirm_key()
принимает ключи перевода.
Раскладка кнопок. action_layout по умолчанию равен VERTICAL (безопасно для длинных переводов),
HORIZONTAL даёт один ряд с половиной ширины на каждую, а AUTO ставит их в один ряд только тогда,
когда обе подписи умещаются в половину карточки одной строкой, и складывает их столбиком в остальных случаях. action_gap —
это расстояние между кнопками, а body_gap — расстояние над ними; сделайте его больше, чем зазор между кнопками,
чтобы вопрос и выбор читались как две части. Для одного-единственного диалога вызовите set_next_action_layout()
перед его открытием. Ряд собирается при первом открытии диалога, поэтому GoDialogs в автозагрузке ничего не добавляет к старту.
GoForm — форма с ограниченной шириной
GoScroll — сенсорная прокрутка
Кладите внутрь одну вещь. Шапки и ряды кнопок место снаружи — длинный список не должен выталкивать
их за экран. use_panel_edge() переносит полосу прокрутки во внутренние отступы карточки,
а содержимое сохраняет свой отступ.