mirror of
https://github.com/rr-/pq-cli.git
synced 2026-09-28 22:33:59 -06:00
ui/curses: make escape work in game view
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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}:
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user