gohud

GoStyle — 作る場所を1つにする

← ウィジェット

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 dropdown radio_group segmented choice_grid
表示card chip hud_panel chip_panel avatar skeleton alert table tabs breadcrumb 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, "誓いの剣", _inspect, Color.TRANSPARENT,
    "ロングソード  /  攻撃力 42", false)

2行目のある行は上下の余白が等しくなり、1行の行より広めにとられる。タイトルと説明の組は アイコンの脇で上下中央に保たれる — コンテナが行を縦に引き伸ばしたときも、説明が複数行に折り返した あとも同じだ。行全体は1つのタップ対象のままである。

medieval_light の例 — 2行のリスト行、クイックスロット、バー
中世サンプルの2行リスト、スロット、バー — medieval_light の下での、同じファクトリ呼び出し。

折り返して流れる行

コントロールは自然な幅のまま wrap_row に入れる。折り返しを有効にしたままだと、 ボタンの最小幅はほとんど 0 まで落ち、行はその値でセルの大きさを決めてしまう — ラベルが1文字ずつ改行される。 ファクトリがこれを防いでくれる。

空のリストを空のまま見せない

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モーダルが開いている間はカードを隠す