From b20c4b4b34996adeefbe498078b30e673757f5b3 Mon Sep 17 00:00:00 2001 From: rr- Date: Fri, 4 Jan 2019 16:25:58 +0100 Subject: [PATCH] ui/curses: fix arrows not working in game view --- pqcli/ui/curses/util.py | 6 ++++++ pqcli/ui/curses/views/game_view/__init__.py | 9 +++++---- pqcli/ui/curses/widgets/menu.py | 6 ++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/pqcli/ui/curses/util.py b/pqcli/ui/curses/util.py index 2e71bbe..75400b7 100644 --- a/pqcli/ui/curses/util.py +++ b/pqcli/ui/curses/util.py @@ -1,6 +1,12 @@ +import curses import typing as T from dataclasses import dataclass +KEYS_DOWN = set(map(ord, "jJ")) | {curses.KEY_DOWN} +KEYS_LEFT = set(map(ord, "hH")) | {curses.KEY_LEFT} +KEYS_RIGHT = set(map(ord, "lL")) | {curses.KEY_RIGHT} +KEYS_UP = set(map(ord, "kK")) | {curses.KEY_UP} + @dataclass class Choice: diff --git a/pqcli/ui/curses/views/game_view/__init__.py b/pqcli/ui/curses/views/game_view/__init__.py index 58e589e..3ee744c 100644 --- a/pqcli/ui/curses/views/game_view/__init__.py +++ b/pqcli/ui/curses/views/game_view/__init__.py @@ -6,6 +6,7 @@ import typing as T from pqcli.mechanic import Player, Simulation from pqcli.roster import Roster from pqcli.ui.curses.event_handler import EventHandler +from pqcli.ui.curses.util import KEYS_DOWN, KEYS_LEFT, KEYS_RIGHT, KEYS_UP from pqcli.ui.curses.widgets import Widget from ..base_view import BaseView @@ -42,7 +43,7 @@ class GameView(BaseView): if key in map(ord, "qQ"): self.on_exit() - elif key in map(ord, "jJ"): + elif key in KEYS_DOWN: if focused == self._char_sheet_win: self.focus(self._spell_book_win) elif focused == self._equipment_win: @@ -50,7 +51,7 @@ class GameView(BaseView): elif focused == self._plot_win: self.focus(self._quest_book_win) - elif key in map(ord, "kK"): + elif key in KEYS_UP: if focused == self._spell_book_win: self.focus(self._char_sheet_win) elif focused == self._inventory_win: @@ -58,7 +59,7 @@ class GameView(BaseView): elif focused == self._quest_book_win: self.focus(self._plot_win) - elif key in map(ord, "hH"): + elif key in KEYS_LEFT: if focused == self._equipment_win: self.focus(self._char_sheet_win) elif focused == self._inventory_win: @@ -68,7 +69,7 @@ class GameView(BaseView): elif focused == self._quest_book_win: self.focus(self._inventory_win) - elif key in map(ord, "lL"): + elif key in KEYS_RIGHT: if focused == self._char_sheet_win: self.focus(self._equipment_win) elif focused == self._spell_book_win: diff --git a/pqcli/ui/curses/widgets/menu.py b/pqcli/ui/curses/widgets/menu.py index a14bad5..e4bb1be 100644 --- a/pqcli/ui/curses/widgets/menu.py +++ b/pqcli/ui/curses/widgets/menu.py @@ -1,6 +1,8 @@ import curses import typing as T +from pqcli.ui.curses.util import KEYS_DOWN, KEYS_UP + from ..util import Choice from .base import Widget @@ -49,11 +51,11 @@ class Menu(Widget): choice.callback() return - if key in set(map(ord, "jJ")) | {curses.KEY_DOWN}: + if key in KEYS_DOWN: self.next() return - if key in set(map(ord, "kK")) | {curses.KEY_UP}: + if key in KEYS_UP: self.prev() return