From 5724a004b91a1af358e555a2d021414159d41bf4 Mon Sep 17 00:00:00 2001 From: Matthias Metelka <62722460+kleinerpirat@users.noreply.github.com> Date: Fri, 21 Oct 2022 19:27:36 +0200 Subject: [PATCH] Create dataclass for variables --- qt/aqt/browser/table/__init__.py | 11 ++++++----- qt/aqt/switch.py | 6 +++--- qt/aqt/theme.py | 13 +++++++++---- 3 files changed, 18 insertions(+), 12 deletions(-) diff --git a/qt/aqt/browser/table/__init__.py b/qt/aqt/browser/table/__init__.py index 131c351cf..3ba9e7e3d 100644 --- a/qt/aqt/browser/table/__init__.py +++ b/qt/aqt/browser/table/__init__.py @@ -14,6 +14,7 @@ from anki.collection import BrowserRow from anki.notes import NoteId from aqt import colors from aqt.qt import QColor +from aqt.theme import AnkiVariable from aqt.utils import tr Column = Columns.Column @@ -49,7 +50,7 @@ class CellRow: ) -> None: self.refreshed_at: float = time.time() self.cells: tuple[Cell, ...] = tuple(Cell(*cell) for cell in cells) - self.color: dict[str, str] | None = backend_color_to_aqt_color(color) + self.color: AnkiVariable | None = backend_color_to_aqt_color(color) self.font_name: str = font_name or "arial" self.font_size: int = font_size if font_size > 0 else 12 @@ -76,8 +77,8 @@ class CellRow: return row -def backend_color_to_aqt_color(color: BrowserRow.Color.V) -> dict[str, str] | None: - temp_color = {} +def backend_color_to_aqt_color(color: BrowserRow.Color.V) -> AnkiVariable | None: + temp_color = None if color == BrowserRow.COLOR_MARKED: temp_color = colors.STATE_MARKED @@ -101,8 +102,8 @@ def backend_color_to_aqt_color(color: BrowserRow.Color.V) -> dict[str, str] | No return adjusted_bg_color(temp_color) -def adjusted_bg_color(color: dict[str, str]) -> dict[str, str]: - if "light" in color and "dark" in color: +def adjusted_bg_color(color: AnkiVariable) -> AnkiVariable: + if color: color.light = color.light.lighter(150).name() color.dark = color.dark.darker(150).name() return color diff --git a/qt/aqt/switch.py b/qt/aqt/switch.py index 3cbf6abc3..4471966b7 100644 --- a/qt/aqt/switch.py +++ b/qt/aqt/switch.py @@ -4,7 +4,7 @@ from typing import cast from aqt import colors from aqt.qt import * -from aqt.theme import theme_manager +from aqt.theme import AnkiVariable, theme_manager class Switch(QAbstractButton): @@ -19,8 +19,8 @@ class Switch(QAbstractButton): radius: int = 10, left_label: str = "", right_label: str = "", - left_color: dict[str, str] = colors.ACCENT_CARD, - right_color: dict[str, str] = colors.ACCENT_NOTE, + left_color: AnkiVariable = colors.ACCENT_CARD, + right_color: AnkiVariable = colors.ACCENT_NOTE, parent: QWidget = None, ) -> None: super().__init__(parent=parent) diff --git a/qt/aqt/theme.py b/qt/aqt/theme.py index 52f6b9459..b9378947c 100644 --- a/qt/aqt/theme.py +++ b/qt/aqt/theme.py @@ -26,11 +26,16 @@ from aqt.qt import ( Qt, ) +@dataclass +class AnkiVariable: + light: str + dark: str + comment: str @dataclass class ColoredIcon: path: str - color: dict[str, str] + color: AnkiVariable def current_color(self, night_mode: bool) -> str: if night_mode: @@ -38,7 +43,7 @@ class ColoredIcon: else: return self.color.get("light", "") - def with_color(self, color: dict[str, str]) -> ColoredIcon: + def with_color(self, color: AnkiVariable) -> ColoredIcon: return ColoredIcon(path=self.path, color=color) @@ -176,11 +181,11 @@ class ThemeManager: "Returns body classes used when showing a card." return f"card card{card_ord+1} {self.body_class(night_mode)}" - def var(self, vars: dict[str, str]) -> str: + def var(self, vars: AnkiVariable) -> str: """Given day/night colors/props, return the correct one for the current theme.""" return vars["dark" if self.night_mode else "light"] - def qcolor(self, colors: dict[str, str]) -> QColor: + def qcolor(self, colors: AnkiVariable) -> QColor: return QColor(self.var(colors)) def _determine_night_mode(self) -> bool: