Skip to content

Commit ae76898

Browse files
fix python styling on mac
1 parent 21c95de commit ae76898

File tree

1 file changed

+75
-7
lines changed

1 file changed

+75
-7
lines changed

src/addon/colors.py

Lines changed: 75 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
from typing import Any, Optional, Tuple, List
1+
from typing import Any, Optional, Tuple, List, Dict
22

33
from anki.hooks import wrap
44
import aqt
55
import aqt.colors
66
from aqt import gui_hooks, mw
77
from aqt.webview import AnkiWebView
88
from aqt.theme import theme_manager
9-
from aqt.qt import QColor
9+
from aqt.qt import QColor, QPalette, Qt
1010

1111
from .ankiaddonconfig import ConfigManager
1212

@@ -18,12 +18,25 @@ def recolor_python() -> None:
1818
conf.load()
1919
color_entries = conf.get("colors")
2020
for color_name in color_entries:
21-
if (anki_color := getattr(aqt.colors, color_name, None)) is not None:
22-
color_entry = color_entries[color_name]
23-
anki_color["light"] = color_entry[1]
24-
anki_color["dark"] = color_entry[2]
25-
setattr(aqt.colors, color_name, anki_color)
21+
replace_color(color_entries, color_name)
22+
replace_color(color_entries, "BUTTON_GRADIENT_START", "BUTTON_HOVER")
23+
replace_color(color_entries, "BUTTON_GRADIENT_END", "BUTTON_HOVER")
2624
theme_manager.apply_style()
25+
_apply_style()
26+
27+
28+
def replace_color(
29+
color_entries: Dict[str, List[str]],
30+
anki_name: str,
31+
addon_name: Optional[str] = None,
32+
) -> None:
33+
if addon_name is None:
34+
addon_name = anki_name
35+
if (anki_color := getattr(aqt.colors, anki_name, None)) is not None:
36+
color_entry = color_entries[addon_name]
37+
anki_color["light"] = color_entry[1]
38+
anki_color["dark"] = color_entry[2]
39+
setattr(aqt.colors, anki_name, anki_color)
2740

2841

2942
def get_window_bg_color(*args: Any) -> QColor:
@@ -36,6 +49,61 @@ def replace_webview_bg() -> None:
3649
AnkiWebView.get_window_bg_color = get_window_bg_color # type: ignore
3750

3851

52+
def _apply_style() -> None:
53+
"""
54+
Used because Anki doesn't style palette in MacOS.
55+
56+
Mostly identical to aqt.theme_manager._apply_style
57+
changed Button color to BUTTON_BG from BUTTON_GRADIENT_START
58+
"""
59+
manager = theme_manager
60+
palette = QPalette()
61+
text = manager.qcolor(aqt.colors.FG)
62+
palette.setColor(QPalette.ColorRole.WindowText, text)
63+
palette.setColor(QPalette.ColorRole.ToolTipText, text)
64+
palette.setColor(QPalette.ColorRole.Text, text)
65+
palette.setColor(QPalette.ColorRole.ButtonText, text)
66+
67+
hlbg = manager.qcolor(aqt.colors.HIGHLIGHT_BG)
68+
palette.setColor(
69+
QPalette.ColorRole.HighlightedText, manager.qcolor(aqt.colors.HIGHLIGHT_FG)
70+
)
71+
palette.setColor(QPalette.ColorRole.Highlight, hlbg)
72+
73+
canvas = manager.qcolor(aqt.colors.CANVAS)
74+
palette.setColor(QPalette.ColorRole.Window, canvas)
75+
palette.setColor(QPalette.ColorRole.AlternateBase, canvas)
76+
77+
palette.setColor(QPalette.ColorRole.Button, manager.qcolor(aqt.colors.BUTTON_BG))
78+
79+
input_base = manager.qcolor(aqt.colors.CANVAS_CODE)
80+
palette.setColor(QPalette.ColorRole.Base, input_base)
81+
palette.setColor(QPalette.ColorRole.ToolTipBase, input_base)
82+
83+
palette.setColor(
84+
QPalette.ColorRole.PlaceholderText, manager.qcolor(aqt.colors.FG_SUBTLE)
85+
)
86+
87+
disabled_color = manager.qcolor(aqt.colors.FG_DISABLED)
88+
palette.setColor(
89+
QPalette.ColorGroup.Disabled, QPalette.ColorRole.Text, disabled_color
90+
)
91+
palette.setColor(
92+
QPalette.ColorGroup.Disabled, QPalette.ColorRole.ButtonText, disabled_color
93+
)
94+
palette.setColor(
95+
QPalette.ColorGroup.Disabled,
96+
QPalette.ColorRole.HighlightedText,
97+
disabled_color,
98+
)
99+
100+
palette.setColor(QPalette.ColorRole.Link, manager.qcolor(aqt.colors.FG_LINK))
101+
102+
palette.setColor(QPalette.ColorRole.BrightText, Qt.GlobalColor.red)
103+
104+
mw.app.setPalette(palette)
105+
106+
39107
# ReColor CSS Colors
40108

41109

0 commit comments

Comments
 (0)