- added qdarktheme package into the code
This commit is contained in:
82
libs/qdarktheme/qtpy/qt_compat.py
Normal file
82
libs/qdarktheme/qtpy/qt_compat.py
Normal file
@@ -0,0 +1,82 @@
|
||||
"""Module for Qt compat."""
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
|
||||
class QtImportError(ImportError):
|
||||
"""Error raise if no bindings could be selected."""
|
||||
|
||||
pass
|
||||
|
||||
|
||||
qt_import_error = QtImportError(
|
||||
"Failed to import qt-binding. Check packages(pip list)."
|
||||
"\n\tAvailable Qt-binding packages: PySide6, PyQt6, PyQt5, PySide2."
|
||||
)
|
||||
|
||||
|
||||
# Qt6
|
||||
_QT_API_PYSIDE6 = "PySide6"
|
||||
_QT_API_PYQT6 = "PyQt6"
|
||||
# Qt5
|
||||
_QT_API_PYQT5 = "PyQt5"
|
||||
_QT_API_PYSIDE2 = "PySide2"
|
||||
|
||||
|
||||
_API_LIST = [_QT_API_PYSIDE6, _QT_API_PYQT6, _QT_API_PYQT5, _QT_API_PYSIDE2]
|
||||
|
||||
|
||||
def _get_loaded_api() -> str | None:
|
||||
"""Return which API is loaded.
|
||||
|
||||
If this returns anything besides None,
|
||||
importing any other Qt-binding is unsafe.
|
||||
"""
|
||||
for api in _API_LIST:
|
||||
if sys.modules.get(f"{api}.QtCore"):
|
||||
return api
|
||||
return None
|
||||
|
||||
|
||||
def _get_environ_api() -> str | None:
|
||||
"""Return which API is specified in environ."""
|
||||
_qt_api_env = os.environ.get("QT_API")
|
||||
if _qt_api_env is not None:
|
||||
_qt_api_env = _qt_api_env.lower()
|
||||
|
||||
_env_to_module = {
|
||||
"pyside6": _QT_API_PYSIDE6,
|
||||
"pyqt6": _QT_API_PYQT6,
|
||||
"pyqt5": _QT_API_PYQT5,
|
||||
"pyside2": _QT_API_PYSIDE2,
|
||||
None: None,
|
||||
}
|
||||
try:
|
||||
return _env_to_module[_qt_api_env]
|
||||
except KeyError:
|
||||
raise KeyError(
|
||||
"The environment variable QT_API has the unrecognized value "
|
||||
f"{_qt_api_env!r}. "
|
||||
f"Valid values are {[k for k in _env_to_module if k is not None]}"
|
||||
) from None
|
||||
|
||||
|
||||
def _get_installed_api() -> str | None:
|
||||
"""Return which API is installed."""
|
||||
# Fix [AttributeError: module 'importlib' has no attribute 'util']
|
||||
# See https://stackoverflow.com/a/39661116/13452582
|
||||
from importlib import util
|
||||
|
||||
for api in _API_LIST:
|
||||
if util.find_spec(api) is not None:
|
||||
return api
|
||||
return None
|
||||
|
||||
|
||||
QT_API = _get_loaded_api()
|
||||
if QT_API is None:
|
||||
QT_API = _get_environ_api()
|
||||
if QT_API is None:
|
||||
QT_API = _get_installed_api()
|
||||
Reference in New Issue
Block a user