wip: theme system

- Add theme id
- WIP theme cache key
- Force scheme (light/dark) for dynamic theme
- でびるんちゃんかわいい
This commit is contained in:
2025-11-09 00:32:28 +08:00
parent 7a3c186743
commit 3679831201
12 changed files with 221 additions and 968 deletions

View File

@ -9,30 +9,43 @@ class _TCustomPalette(TypedDict):
success: QColor
error: QColor
toolTipBase: QColor
toolTipText: QColor
_TScheme = Literal["light", "dark"]
TThemeInfoCacheKey = tuple[str, str, _TScheme]
@dataclass
class ThemeInfo:
series: str
id: str
name: str
scheme: _TScheme
def __hash__(self) -> int:
return hash((self.series, self.name, self.scheme))
def cacheKey(self) -> TThemeInfoCacheKey:
return (self.series, self.id, self.scheme)
class ThemeImpl:
DEFAULT_CUSTOM_PALETTE = {
DEFAULT_CUSTOM_PALETTE: _TCustomPalette = {
"primary": QColor.fromString("#616161"),
"success": QColor.fromString("#616161"),
"error": QColor.fromString("#616161"),
"toolTipBase": QColor.fromString("#616161"),
"toolTipText": QColor.fromString("#616161"),
}
@property
def info(self) -> ThemeInfo:
return ThemeInfo(series="placeholder", name="placeholder", scheme="dark")
return ThemeInfo(
series="placeholder",
id="placeholder",
name="placeholder",
scheme="dark",
)
@property
def qPalette(self) -> QPalette: