diff --git a/pqcli/ui/__init__.py b/pqcli/ui/__init__.py index adad180..08f3628 100644 --- a/pqcli/ui/__init__.py +++ b/pqcli/ui/__init__.py @@ -20,6 +20,10 @@ urwid.command_map["L"] = "cursor right" PALETTE: T.List[T.Tuple[str]] = [ ("button", "", ""), ("button-focus", "black", "light red"), + ("linebox", "", ""), + ("linebox-focus", "black", "light red"), + ("linebox-content", "", ""), + ("linebox-content-focus", "", ""), ] diff --git a/pqcli/ui/line_box.py b/pqcli/ui/line_box.py new file mode 100644 index 0000000..d6a9e7d --- /dev/null +++ b/pqcli/ui/line_box.py @@ -0,0 +1,18 @@ +import typing as T + +import urwid + + +class LineBox(urwid.AttrWrap): + def __init__( + self, widget: urwid.Widget, *args: T.Any, **kwargs: T.Any + ) -> None: + super().__init__( + urwid.LineBox( + urwid.AttrWrap(widget, "linebox-content", "linebox-content"), + *args, + **kwargs, + ), + "linebox", + "linebox-focus", + ), diff --git a/pqcli/ui/new_game_view.py b/pqcli/ui/new_game_view.py index 8c2eda4..0087367 100644 --- a/pqcli/ui/new_game_view.py +++ b/pqcli/ui/new_game_view.py @@ -7,6 +7,7 @@ import urwid_readline from pqcli.game_state import Player, StatsBuilder, generate_name, create_player from pqcli.config import RACES, CLASSES, PRIME_STATS from pqcli.ui.button import MenuButton +from pqcli.ui.line_box import LineBox class StatsGroupBox(urwid.Pile): @@ -29,8 +30,8 @@ class StatsGroupBox(urwid.Pile): [ urwid.Columns( [ - (8, urwid.ListBox(label_texts)), - urwid.ListBox(value_texts), + urwid.Filler(urwid.Pile(label_texts)), + urwid.Filler(urwid.Pile(value_texts)), ] ), urwid.Filler(roll_button), @@ -109,13 +110,11 @@ class NewGameView(urwid.Pile): ), urwid.Columns( [ - urwid.LineBox( - urwid.ListBox(race_checkboxes), title="Race" - ), - urwid.LineBox( + LineBox(urwid.ListBox(race_checkboxes), title="Race"), + LineBox( urwid.ListBox(class_checkboxes), title="Class" ), - urwid.LineBox( + LineBox( StatsGroupBox(self.player, stats_builder), title="Stats", ),