GoField — 틀릴 수 있는 줄
입력 칸이 다섯인 폼 맨 위에 "입력을 확인하세요" 한 줄이 떠도, 그것은 어느 칸인지 말해 주지 않는다. 가입을 도중에 그만두게 만드는 것은 딱 그 하나다.
var name_field := GoField.make("캐릭터 이름", GoStyle.line_edit("2~12자"), "나중에 바꿀 수 없습니다")
name_field.set_error("이미 쓰고 있는 이름입니다") # 서버가 거절했다
name_field.clear_error()
오류가 떠 있는 동안 도움말은 숨는다 — 줄이 한 줄만큼 자라 아래를 전부 밀어내지 않게. 그리고 오류 문구는 컨트롤의 접근성 이름에 함께 붙는다. 빨간 테두리만으로는 빨강을 못 보는 사람에게 아무 말도 되지 않는다.
GoStyle.field() 는 정적 버전이다 — 라벨·컨트롤·도움말, 오류 상태는 없다. 틀릴 일이
없으면 팩토리를, 서버가 거절할 수 있는 것에는 노드를 쓴다.
GoInputGroup — 버튼과 한 덩어리로 붙은 입력칸
GoInputGroup.make(GoStyle.line_edit("메시지"), {"suffix": GoStyle.icon_button(&"send", send)})
GoInputGroup.make(GoStyle.line_edit("이름"), {"prefix_icon": &"search"})
이것이 푸는 문제는 모서리다. 둥근 두 모양이 가운데서 만나면 잘록해 보이고, 기본 간격까지 있으면 따로 노는 두 물건으로 읽힌다. 바깥 모서리는 둥근 채로 두고 맞닿는 쪽만 각지게 한다 — 버튼의 모든 상태에서. 아니면 누르는 순간 덩어리가 갈라진다. 모서리를 깎아 낸 스킨에는 모서리 항목 자체가 없으므로 거기서는 손대지 않고, 각진 면끼리 깔끔하게 만난다.
GoCombobox — 검색되는 선택기
항목이 열 개 아래면 GoStyle.select() 가 낫다 — 누르는 횟수가 하나 줄고 목록이 한눈에
다 보인다. 서른을 넘으면 눈으로 훑는 것이 일이 된다.
var picker := GoCombobox.make(server_names, 0, "서버를 고르세요")
picker.picked.connect(func(i: int) -> void: connect_to(servers[i]))
GoCodeInput — 쿠폰·선물 코드
코드는 손으로 치기보다 메시지에서 붙여넣는 경우가 훨씬 많다. 진짜 입력칸을 열두 개 두면 붙여넣기가
첫 칸에서 끊기고 IME 에 글자를 잃는다. 그래서 글자는 숨은 입력칸 하나가 받고 칸은 그려서 보여 준다.
ABCD-EFGH-IJKL 은 들어오는 길에 붙임표를 떼어 낸다.
var coupon := GoCodeInput.make(12, 4)
coupon.completed.connect(func(code: String) -> void: server.redeem(code))
coupon.set_error("이미 사용한 코드입니다")
GoTable — 정렬되는 머리줄, 눌리는 줄
var board := GoTable.make(
[{"text": "순위", "width": 56}, {"text": "이름"}, {"text": "점수", "numeric": true}], rows)
board.row_selected.connect(func(i: int) -> void: open_profile(rows[i]))
numeric: true 를 빠뜨리면 순위가 뒤집힌다. 글자로 견주면 "9124" 가
"91240" 를 이긴다 — 점수도 골드도 피해량도 자릿수가 제각각이다.
row_selected 는 정렬된 자리가 아니라 원래 배열의 인덱스를 준다. 정렬 방향은 색만이 아니라
글리프로 보여 주고, 줄 전체가 눌리므로 칸 하나를 겨눌 필요가 없다. 읽기 전용 격자는 여전히
GoStyle.table() 이다.
GoPagination — 페이지, 아니면 더 보기 줄
var pager := GoPagination.make(1, 12, func(page: int) -> void: load_mail(page))
var more := GoPagination.more(load_next) # 모바일에 어울리는 변형
번호는 마우스의 UI 다. 휴대폰에서는 더 보기 줄이 더 잘 읽힌다. 지금 페이지는 늘 창 가운데에 머무르므로 다음을 눌러도 번호가 통째로 뒤섞이지 않는다. 총 개수 0 은 "모른다" 는 뜻이고 화살표만 그린다 — 받지 않은 페이지 수를 지어내지 않는다.