From c42e118339f9afa8d9e064d67a35c54c0d7a82a2 Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Fri, 31 Jan 2020 13:14:16 +1000 Subject: [PATCH] use night mode when dark mode active, using standard macOS theme --- qt/aqt/theme.py | 19 ++++++++++++++++--- qt/setup.py | 1 + qt/ts/scss/_buttons.scss | 16 ++++++++++++++++ 3 files changed, 33 insertions(+), 3 deletions(-) diff --git a/qt/aqt/theme.py b/qt/aqt/theme.py index 8f69986f4..279ae8529 100644 --- a/qt/aqt/theme.py +++ b/qt/aqt/theme.py @@ -5,6 +5,8 @@ import platform from typing import Dict +import darkdetect + from anki.utils import isMac from aqt import QApplication, gui_hooks, isWin from aqt.colors import colors @@ -12,11 +14,21 @@ from aqt.qt import QColor, QIcon, QPalette, QPixmap, QStyleFactory, Qt class ThemeManager: - night_mode = True - + _night_mode_preference = False _icon_cache: Dict[str, QIcon] = {} _icon_size = 128 + def macos_dark_mode(self) -> bool: + return darkdetect.isDark() is True + + def get_night_mode(self) -> bool: + return self.macos_dark_mode() or self._night_mode_preference + + def set_night_mode(self, val: bool) -> None: + self._night_mode_preference = val + + night_mode = property(get_night_mode, set_night_mode) + def icon_from_resources(self, path: str) -> QIcon: "Fetch icon from Qt resources, and invert if in night mode." icon = self._icon_cache.get(path) @@ -109,7 +121,8 @@ QGroupBox { if not self.night_mode: return - app.setStyle(QStyleFactory.create("fusion")) # type: ignore + if not self.macos_dark_mode(): + app.setStyle(QStyleFactory.create("fusion")) # type: ignore palette = QPalette() diff --git a/qt/setup.py b/qt/setup.py index 9a2fad152..6d4989942 100644 --- a/qt/setup.py +++ b/qt/setup.py @@ -44,5 +44,6 @@ setuptools.setup( "jsonschema", 'psutil; sys.platform == "win32"', 'pywin32; sys.platform == "win32"', + 'darkdetect; sys.platform == "darwin"', ], ) diff --git a/qt/ts/scss/_buttons.scss b/qt/ts/scss/_buttons.scss index 8d3db2fab..0923c660e 100644 --- a/qt/ts/scss/_buttons.scss +++ b/qt/ts/scss/_buttons.scss @@ -43,3 +43,19 @@ background: vars.$fusion-button-hover-bg; } } + +/* imitate standard macOS dark mode buttons */ +.isMac.nightMode button:not(.linkb) { + background: #656565; + box-shadow: 0 1px 2px #222222; + border-top-color: #848484; + border-top-width: 0.5px; + border-bottom: 0; + border-left: 0; + border-right: 0; + padding-top: 2px; + padding-bottom: 2px; + padding-left: 15px; + padding-right: 15px; + color: #e5e5e5; +} \ No newline at end of file