gohud

Плаваючі вікна

← Віджети

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() переносить смугу прокрутки в наявні поля картки, а вміст зберігає свій відступ.