ui/curses: make escape work in game view

This commit is contained in:
rr-
2019-01-13 20:48:33 +01:00
parent e85a8d5826
commit d4f9326759
5 changed files with 18 additions and 10 deletions
+2
View File
@@ -1,4 +1,5 @@
import curses
import curses.ascii
import typing as T
from dataclasses import dataclass
@@ -6,6 +7,7 @@ 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}
KEYS_CANCEL = set(map(ord, "qQ")) | {curses.ascii.ESC}
@dataclass
@@ -4,7 +4,7 @@ import typing as T
from pqcli.lingo import act_name, to_roman
from pqcli.roster import Roster
from pqcli.ui.curses.event_handler import EventHandler
from pqcli.ui.curses.util import Choice
from pqcli.ui.curses.util import KEYS_CANCEL, Choice
from pqcli.ui.curses.views.menu_view import MenuView
from pqcli.ui.curses.widgets import Menu
@@ -48,7 +48,7 @@ class ChooseCharacterView(MenuView):
self._choices.append(
Choice(
keys=list(map(ord, "qQ\N{ESC}")),
keys=list(KEYS_CANCEL),
desc="[Q] Cancel",
callback=self.on_cancel,
)
@@ -6,7 +6,7 @@ import typing as T
from pqcli.config import CLASSES, PRIME_STATS, RACES, Class, Race
from pqcli.mechanic import StatsBuilder, generate_name
from pqcli.ui.curses.event_handler import EventHandler
from pqcli.ui.curses.util import Choice
from pqcli.ui.curses.util import KEYS_CANCEL, Choice
from pqcli.ui.curses.views.base_view import BaseView
from pqcli.ui.curses.views.menu_view import MenuView
@@ -101,7 +101,7 @@ class ChooseCharacterRaceView(MenuView):
self._choices.append(
Choice(
keys=list(map(ord, "qQ\N{ESC}")),
keys=list(KEYS_CANCEL),
desc="[Q] Cancel",
callback=self.on_cancel,
)
@@ -130,7 +130,7 @@ class ChooseCharacterClassView(MenuView):
self._choices.append(
Choice(
keys=list(map(ord, "qQ\N{ESC}")),
keys=list(KEYS_CANCEL),
desc="[Q] Cancel",
callback=self.on_cancel,
)
@@ -173,7 +173,7 @@ class ChooseCharacterStatsView(BaseView):
self._stats_win = None
def keypress(self, key: int) -> None:
if key == curses.ascii.ESC or key in map(ord, "qQ"):
if key in KEYS_CANCEL:
self.on_cancel()
elif key == curses.ascii.NL:
+8 -2
View File
@@ -6,7 +6,13 @@ import typing as T
from pqcli.mechanic import Player, SignalMixin, 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.util import (
KEYS_CANCEL,
KEYS_DOWN,
KEYS_LEFT,
KEYS_RIGHT,
KEYS_UP,
)
from pqcli.ui.curses.views.base_view import BaseView
from pqcli.ui.curses.widgets import Focusable, Scrollable, Widget
@@ -40,7 +46,7 @@ class GameView(BaseView):
def keypress(self, key: int) -> None:
focused = self.focused
if key in map(ord, "qQ"):
if key in KEYS_CANCEL:
self.on_exit()
elif key in {curses.KEY_PPAGE}:
+2 -2
View File
@@ -3,7 +3,7 @@ import typing as T
from pqcli.ui.curses.colors import COLOR_LOGO, has_colors
from pqcli.ui.curses.event_handler import EventHandler
from pqcli.ui.curses.util import Choice
from pqcli.ui.curses.util import KEYS_CANCEL, Choice
from pqcli.ui.curses.widgets import Menu
from .base_view import BaseView
@@ -58,7 +58,7 @@ class RosterView(BaseView):
callback=self.on_delete,
),
Choice(
keys=list(map(ord, "qQ\N{ESC}")),
keys=list(KEYS_CANCEL),
desc="[Q] Quit",
callback=self.on_quit,
),