import curses from dataclasses import dataclass, field from enum import Enum from typing import List, Optional, Tuple from epy_reader.models import Key class DoubleSpreadPadding(Enum): LEFT = 10 MIDDLE = 7 RIGHT = 10 # add image viewers here # sorted by most widely used VIEWER_PRESET_LIST = ( "feh", "imv", "gio", "gnome-open", "gvfs-open", "xdg-open", "kde-open", "firefox", ) DICT_PRESET_LIST = ( "wkdict", "sdcv", "dict", ) @dataclass(frozen=True) class Settings: DefaultViewer: str = "auto" DictionaryClient: str = "auto" ShowProgressIndicator: bool = True PageScrollAnimation: bool = True MouseSupport: bool = False StartWithDoubleSpread: bool = False # -1 is default terminal fg/bg colors DefaultColorFG: int = -1 DefaultColorBG: int = -1 DarkColorFG: int = 252 DarkColorBG: int = 235 LightColorFG: int = 238 LightColorBG: int = 253 SeamlessBetweenChapters: bool = False PreferredTTSEngine: Optional[str] = None TTSEngineArgs: List[str] = field(default_factory=list) @dataclass(frozen=True) class CfgDefaultKeymaps: ScrollUp: str = "k" ScrollDown: str = "j" PageUp: str = "h" PageDown: str = "l" # HalfScreenUp: str = "h" # HalfScreenDown: str NextChapter: str = "L" PrevChapter: str = "H" BeginningOfCh: str = "g" EndOfCh: str = "G" Shrink: str = "-" Enlarge: str = "+" SetWidth: str = "=" Metadata: str = "M" DefineWord: str = "d" TableOfContents: str = "t" Follow: str = "f" OpenImage: str = "o" RegexSearch: str = "/" ShowHideProgress: str = "s" MarkPosition: str = "m" JumpToPosition: str = "`" AddBookmark: str = "b" ShowBookmarks: str = "B" Quit: str = "q" Help: str = "?" SwitchColor: str = "c" TTSToggle: str = "!" DoubleSpreadToggle: str = "D" Library: str = "R" @dataclass(frozen=True) class CfgBuiltinKeymaps: ScrollUp: Tuple[int, ...] = (curses.KEY_UP,) ScrollDown: Tuple[int, ...] = (curses.KEY_DOWN,) PageUp: Tuple[int, ...] = (curses.KEY_PPAGE, curses.KEY_LEFT) PageDown: Tuple[int, ...] = (curses.KEY_NPAGE, ord(" "), curses.KEY_RIGHT) BeginningOfCh: Tuple[int, ...] = (curses.KEY_HOME,) EndOfCh: Tuple[int, ...] = (curses.KEY_END,) TableOfContents: Tuple[int, ...] = (9, ord("\t")) Follow: Tuple[int, ...] = (10,) Quit: Tuple[int, ...] = (3, 27, 304) @dataclass(frozen=True) class Keymap: # HalfScreenDown: Tuple[Key, ...] # HalfScreenUp: Tuple[Key, ...] AddBookmark: Tuple[Key, ...] BeginningOfCh: Tuple[Key, ...] DefineWord: Tuple[Key, ...] DoubleSpreadToggle: Tuple[Key, ...] EndOfCh: Tuple[Key, ...] Enlarge: Tuple[Key, ...] Follow: Tuple[Key, ...] Help: Tuple[Key, ...] JumpToPosition: Tuple[Key, ...] Library: Tuple[Key, ...] MarkPosition: Tuple[Key, ...] Metadata: Tuple[Key, ...] NextChapter: Tuple[Key, ...] OpenImage: Tuple[Key, ...] PageDown: Tuple[Key, ...] PageUp: Tuple[Key, ...] PrevChapter: Tuple[Key, ...] Quit: Tuple[Key, ...] RegexSearch: Tuple[Key, ...] ScrollDown: Tuple[Key, ...] ScrollUp: Tuple[Key, ...] SetWidth: Tuple[Key, ...] ShowBookmarks: Tuple[Key, ...] ShowHideProgress: Tuple[Key, ...] Shrink: Tuple[Key, ...] SwitchColor: Tuple[Key, ...] TTSToggle: Tuple[Key, ...] TableOfContents: Tuple[Key, ...]