forked from mne-tools/mne-python
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
36 additions
and
78 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
The minimum supported version of Qt bindings is 5.15, by `Eric Larson`_. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -274,84 +274,42 @@ def _qt_detect_theme(): | |
def _qt_get_stylesheet(theme): | ||
_validate_type(theme, ("path-like",), "theme") | ||
theme = str(theme) | ||
orig_theme = theme | ||
system_theme = None | ||
stylesheet = "" | ||
extra_msg = "" | ||
if theme == "auto": | ||
theme = system_theme = _qt_detect_theme() | ||
if theme in ("dark", "light"): | ||
if system_theme is None: | ||
system_theme = _qt_detect_theme() | ||
qt_version, api = _check_qt_version(return_api=True) | ||
# On macOS, we shouldn't need to set anything when the requested theme | ||
# matches that of the current OS state | ||
if sys.platform == "darwin": | ||
extra_msg = f"when in {system_theme} mode on macOS" | ||
# But before 5.13, we need to patch some mistakes | ||
if sys.platform == "darwin" and theme == system_theme: | ||
if theme == "dark" and _compare_version(qt_version, "<", "5.13"): | ||
# Taken using "Digital Color Meter" on macOS 12.2.1 looking at | ||
# Meld, and also adapting (MIT-licensed) | ||
# https://github.com/ColinDuquesnoy/QDarkStyleSheet/blob/master/qdarkstyle/dark/style.qss # noqa: E501 | ||
# Something around rgb(51, 51, 51) worked as the bgcolor here, | ||
# but it's easy enough just to set it transparent and inherit | ||
# the bgcolor of the window (which is the same). We also take | ||
# the separator images from QDarkStyle (MIT). | ||
icons_path = _qt_init_icons() | ||
stylesheet = """\ | ||
QStatusBar { | ||
border: 1px solid rgb(76, 76, 75); | ||
background: transparent; | ||
} | ||
QStatusBar QLabel { | ||
background: transparent; | ||
} | ||
QToolBar { | ||
background-color: transparent; | ||
border-bottom: 1px solid rgb(99, 99, 99); | ||
} | ||
QToolBar::separator:horizontal { | ||
width: 16px; | ||
image: url("%(icons_path)s/[email protected]"); | ||
} | ||
QToolBar::separator:vertical { | ||
height: 16px; | ||
image: url("%(icons_path)s/[email protected]"); | ||
} | ||
QToolBar::handle:horizontal { | ||
width: 16px; | ||
image: url("%(icons_path)s/[email protected]"); | ||
} | ||
QToolBar::handle:vertical { | ||
height: 16px; | ||
image: url("%(icons_path)s/[email protected]"); | ||
} | ||
""" % dict(icons_path=icons_path) | ||
stylesheet = "" # no stylesheet | ||
if theme in ("auto", "dark", "light"): | ||
if theme == "auto": | ||
return stylesheet | ||
assert theme in ("dark", "light") | ||
system_theme = _qt_detect_theme() | ||
if theme == system_theme: | ||
return stylesheet | ||
_, api = _check_qt_version(return_api=True) | ||
# On macOS or Qt 6, we shouldn't need to set anything when the requested | ||
# theme matches that of the current OS state | ||
try: | ||
import qdarkstyle | ||
except ModuleNotFoundError: | ||
logger.info( | ||
f'To use {theme} mode when in {system_theme} mode, "qdarkstyle" has' | ||
"to be installed! You can install it with:\n" | ||
"pip install qdarkstyle\n" | ||
) | ||
else: | ||
# Here we are on non-macOS (or on macOS but our sys theme does not | ||
# match the requested theme) | ||
if api in ("PySide6", "PyQt6"): | ||
if orig_theme != "auto" and not (theme == system_theme == "light"): | ||
warn( | ||
f"Setting theme={repr(theme)} is not yet supported " | ||
f"for {api} in qdarkstyle, it will be ignored" | ||
) | ||
if api in ("PySide6", "PyQt6") and _compare_version( | ||
qdarkstyle.__version__, "<", "3.2.3" | ||
): | ||
warn( | ||
f"Setting theme={repr(theme)} is not supported for {api} in " | ||
f"qdarkstyle {qdarkstyle.__version__}, it will be ignored. " | ||
"Consider upgrading qdarkstyle to >=3.2.3." | ||
) | ||
else: | ||
try: | ||
import qdarkstyle | ||
except ModuleNotFoundError: | ||
logger.info( | ||
f'To use {theme} mode{extra_msg}, "qdarkstyle" has to ' | ||
"be installed! You can install it with:\n" | ||
"pip install qdarkstyle\n" | ||
) | ||
else: | ||
klass = getattr( | ||
stylesheet = qdarkstyle.load_stylesheet( | ||
getattr( | ||
getattr(qdarkstyle, theme).palette, | ||
f"{theme.capitalize()}Palette", | ||
) | ||
stylesheet = qdarkstyle.load_stylesheet(klass) | ||
) | ||
return stylesheet | ||
else: | ||
try: | ||
file = open(theme) | ||
|
@@ -363,8 +321,7 @@ def _qt_get_stylesheet(theme): | |
else: | ||
with file as fid: | ||
stylesheet = fid.read() | ||
|
||
return stylesheet | ||
return stylesheet | ||
|
||
|
||
def _should_raise_window(): | ||
|