mirror of
https://github.com/rr-/pq-cli.git
synced 2026-09-29 06:44:00 -06:00
ui: fix arrow navigation
This commit is contained in:
+42
-37
@@ -351,43 +351,32 @@ class GameView(urwid.Pile):
|
||||
self.quest_book_view = QuestBookView(player)
|
||||
self.task_view = TaskView(player)
|
||||
|
||||
super().__init__(
|
||||
self.columns = urwid.Columns(
|
||||
[
|
||||
urwid.Columns(
|
||||
[
|
||||
(
|
||||
urwid.WEIGHT,
|
||||
1,
|
||||
urwid.Pile(
|
||||
[
|
||||
(19, self.character_sheet_view),
|
||||
self.spell_book_view,
|
||||
]
|
||||
),
|
||||
),
|
||||
(
|
||||
urwid.WEIGHT,
|
||||
2,
|
||||
urwid.Pile(
|
||||
[
|
||||
(15, self.equipment_view),
|
||||
self.inventory_view,
|
||||
]
|
||||
),
|
||||
),
|
||||
(
|
||||
urwid.WEIGHT,
|
||||
2,
|
||||
urwid.Pile(
|
||||
[(15, self.plot_view), self.quest_book_view]
|
||||
),
|
||||
),
|
||||
]
|
||||
(
|
||||
urwid.WEIGHT,
|
||||
1,
|
||||
urwid.Pile(
|
||||
[(19, self.character_sheet_view), self.spell_book_view]
|
||||
),
|
||||
),
|
||||
(
|
||||
urwid.WEIGHT,
|
||||
2,
|
||||
urwid.Pile(
|
||||
[(15, self.equipment_view), self.inventory_view]
|
||||
),
|
||||
),
|
||||
(
|
||||
urwid.WEIGHT,
|
||||
2,
|
||||
urwid.Pile([(15, self.plot_view), self.quest_book_view]),
|
||||
),
|
||||
(urwid.PACK, self.task_view),
|
||||
]
|
||||
)
|
||||
|
||||
super().__init__([self.columns, (urwid.PACK, self.task_view)])
|
||||
|
||||
def cancel(self) -> None:
|
||||
self._emit("cancel")
|
||||
|
||||
@@ -397,15 +386,31 @@ class GameView(urwid.Pile):
|
||||
self.simulation.tick(elapsed * 1000)
|
||||
self.last_tick = datetime.datetime.now()
|
||||
|
||||
def unhandled_input(self, key: str) -> bool:
|
||||
def keypress(self, size: T.Tuple[int, int], key: str) -> bool:
|
||||
if key == "esc":
|
||||
self.cancel()
|
||||
return True
|
||||
return None
|
||||
|
||||
if self._command_map[key] == urwid.CURSOR_RIGHT:
|
||||
old_focus_position = self.columns.focus.focus_position
|
||||
self.columns.focus_position = (
|
||||
self.columns.focus_position + 1
|
||||
) % len(self.columns.contents)
|
||||
self.columns.focus.focus_position = old_focus_position
|
||||
return None
|
||||
|
||||
if self._command_map[key] == urwid.CURSOR_LEFT:
|
||||
old_focus_position = self.columns.focus.focus_position
|
||||
self.columns.focus_position = (
|
||||
self.columns.focus_position - 1
|
||||
) % len(self.columns.contents)
|
||||
self.columns.focus.focus_position = old_focus_position
|
||||
return None
|
||||
|
||||
if self.args.cheats:
|
||||
if key == "e":
|
||||
self.simulation.player.exp_bar.increment(1)
|
||||
return True
|
||||
return None
|
||||
|
||||
fast_forward = {"t": 1, "T": 100, "ctrl t": 10000}
|
||||
if key in fast_forward:
|
||||
@@ -420,9 +425,9 @@ class GameView(urwid.Pile):
|
||||
for _ in range(iterations):
|
||||
self.simulation.tick()
|
||||
|
||||
return True
|
||||
return None
|
||||
|
||||
return False
|
||||
return super().keypress(size, key)
|
||||
|
||||
@contextlib.contextmanager
|
||||
def suppress_updates(self) -> T.Generator:
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
# - reformatted the code
|
||||
# - added AttrMap wrapping
|
||||
# - added padding support
|
||||
# - removed up/down arrow navigation (for widget navigation)
|
||||
|
||||
import typing as T
|
||||
|
||||
@@ -187,12 +188,7 @@ class _Scrollable(urwid.WidgetDecoration):
|
||||
|
||||
# Handle up/down, page up/down, etc
|
||||
command_map = self._command_map
|
||||
if command_map[key] == urwid.CURSOR_UP:
|
||||
self._scroll_action = SCROLL_LINE_UP
|
||||
elif command_map[key] == urwid.CURSOR_DOWN:
|
||||
self._scroll_action = SCROLL_LINE_DOWN
|
||||
|
||||
elif command_map[key] == urwid.CURSOR_PAGE_UP:
|
||||
if command_map[key] == urwid.CURSOR_PAGE_UP:
|
||||
self._scroll_action = SCROLL_PAGE_UP
|
||||
elif command_map[key] == urwid.CURSOR_PAGE_DOWN:
|
||||
self._scroll_action = SCROLL_PAGE_DOWN
|
||||
|
||||
Reference in New Issue
Block a user