gohud

GoStyle — 만드는 자리를 하나로

← 위젯

Button.new() 를 직접 쓰면 화면마다 여백·높이·줄바꿈이 조금씩 달라진다. 그 차이는 코드 리뷰로 잡히지 않고 스크린샷으로만 보인다.

분류함수
뼈대column row wrap_row padding spacer divider responsive_grid aspect foldable
글자label label_key line section typography
버튼button button_key icon_button list_button list_row apply_icon style_choice_card style_chip_button style_chip_label
입력line_edit textarea toggle checkbox slider picker select radio_group segmented choice_grid
표시card chip hud_panel chip_panel avatar skeleton alert table tabs breadcrumb dropdown progress empty_state
표면 조각surface box floating disc face_padding
도우미form fit_words natural_width tooltip_node card_body let_input_through
box() 는 언제나 StyleBoxFlat 을 돌려준다. 돌려받아 bg_colorcorner_radius 를 고치는 호출부와의 약속이기 때문이다. 커스텀 모양(각진 패널)을 지켜야 하면 surface() 를 쓴다.

요약이 있는 목록 줄

GoStyle.list_button(GoIconSet.SWORD, "Oathkeeper", _inspect, Color.TRANSPARENT,
    "Longsword  /  Attack 42", false)

두 줄 항목은 위아래 여백이 같고 한 줄 항목보다 넉넉하며, 제목·요약 묶음이 아이콘 옆 세로 가운데에 선다 — 컨테이너가 줄을 더 높게 늘려도, 요약이 여러 줄로 접혀도 그렇다. 줄 전체가 그대로 한 번에 눌린다.

medieval_light 예제 — 두 줄 목록, 퀵슬롯, 막대
중세 예제의 두 줄 목록·슬롯·막대 — medieval_light 에서 같은 팩토리 호출.

흐르는 줄의 함정

wrap_row 에 넣는 것은 자연 폭이어야 한다. 줄바꿈을 켠 채 두면 최소 폭이 거의 0 이 되고, 흐르는 줄은 그 최소 폭으로 칸을 잡는다 — 버튼 하나가 한 글자 폭으로 쪼그라들어 글자가 세로로 한 자씩 내려간다. 팩토리가 이것을 자동으로 막는다.

빈 목록을 빈 채로 두지 않는다

page.add_child(GoStyle.empty_state(GoIconSet.BOX, "아직 아무것도 없습니다"))

사용자는 빈 화면을 고장으로 읽는다.

자식 클래스 훅

하위 위젯을 만드는 자리는 전부 덮어쓸 수 있는 메서드를 거친다. gohud 타입을 상속한 프로젝트가 코드를 복사하지 않고도 위젯 안에 자기 서브클래스를 끼울 수 있다.

위젯기본
_make_scroll()GoCoachMark, GoSurfaceGoScroll.new()
_make_close_button()GoPromptCard, GoSurfaceGoIconButton.new()
_make_surface()GoSheet, GoDialogsGoSurface.new()
_should_pause()GoCoachMark모달이 열려 있는 동안 카드를 숨긴다