gohud

Cửa sổ nổi

← Widget

GoSurface — lớp vỏ

Popup, bảng trượt và danh sách thả xuống đều dùng chung cái này. Nó lo vùng an toàn, bàn phím ảo, đầu và chân trang cố định, thân cuộn được, cửa sổ nào đang ở trên cùng, việc trả focus về chỗ cũ, quyền sở hữu nút Back và thao tác kéo để đổi kích thước.

Vị trí đặtTrông nhưDùng cho
CENTERMột tấm thẻ ở giữaXác nhận, cài đặt
BOTTOMMột bảng trồi lên từ dướiDanh sách, trang quản lý
ANCHORMột tấm thẻ ghim bên cạnh một controlDanh sách thả xuống, menu ngữ cảnh
Nó không tự gỡ mình đi. Phản ứng với close_requested — ẩn đi hay giải phóng — là việc của màn hình sở hữu nó, vì lớp vỏ không thể biết vì sao nó đang đóng (lưu rồi đóng, hay bỏ luôn).

GoSheet — một trang trồi lên từ đáy

var sheet := GoSheet.new()
add_child(sheet)
sheet.open("Túi đồ")
sheet.toolbar().add_child(GoStyle.line_edit("Tìm kiếm…"))
sheet.toolbar().visible = true
sheet.footer().add_child(GoStyle.button("Đóng", sheet.close, GoStyle.Tone.PRIMARY))
sheet.footer().visible = true

Nó sở hữu một CanvasLayer nên chắc chắn nằm trên HUD. open() dọn sạch phần thân và tắt nút Back cùng các hàng cố định — một cái nút chết trên màn hình không có chỗ nào để quay về thì người ta đọc ra là hỏng.

GoDialogs — hộp thoại xác nhận mà bạn await

if await dialogs.confirm("Xóa bản lưu", "Thao tác này không thể hoàn tác."):
    delete_save()

confirm(title, body, ok_text, cancel_text, extra, args, destructive) — mọi thứ sau phần thân đều tùy chọn, và alert() cũng vậy nhưng chỉ có một nút. Hãy đặt destructive cho thao tác không thể hoàn tác: nút xác nhận trở thành nút tô đặc GoStyle.Tone.DANGER_SOLID. Trên theme sáng, một nhãn nguy hiểm chỉ pha màu buộc phải tối đi đến mức đọc ra thành chữ đen; nút tô đặc thì giữ chữ trắng trên nền đỏ. Sắc thái được áp lại ở mỗi lần gọi vì chỉ một cửa sổ được tái sử dụng, và một lần confirm() thứ hai trong lúc cái trước còn mở sẽ trả về false ngay. confirm_key() nhận khóa dịch.

Bố cục nút. action_layout mặc định là VERTICAL (an toàn cho những bản dịch dài), HORIZONTAL cho một hàng chia đôi bề ngang, hoặc AUTO — chỉ dùng một hàng khi cả hai nhãn vừa đúng nửa tấm thẻ trên một dòng, còn không thì xếp chồng. action_gap là khoảng cách giữa các nút và body_gap là khoảng trống phía trên chúng — hãy để nó rộng hơn khoảng cách giữa các nút để câu hỏi và lựa chọn đọc ra thành hai phần. Nếu chỉ muốn áp cho một hộp thoại, hãy gọi set_next_action_layout() trước khi mở nó. Hàng nút được dựng khi hộp thoại mở lần đầu, nên một GoDialogs nạp bằng autoload không thêm gì vào lúc khởi động.

GoForm — biểu mẫu giới hạn bề ngang

Nó bảo đảm mọi nhãn con cháu đều xuống dòng. Không có điều đó, một câu dài sẽ kéo thành một dòng duy nhất có bề rộng tối thiểu vượt quá màn hình, rồi hai bên bị cắt cụt — đến mức bạn không còn nhận ra mình đang ở màn hình nào. Bật xuống dòng bằng tay cho từng scene thì lần nào cũng quên.

GoScroll — cuộn bằng ngón tay

Chỉ đặt một thứ vào bên trong. Phần đầu trang và hàng nút thì để bên ngoài — một danh sách dài không được phép đẩy chúng ra khỏi màn hình. use_panel_edge() dời thanh cuộn vào phần đệm sẵn có của tấm thẻ mà nội dung vẫn giữ nguyên lề thụt.