Force Qt to use the calibre cache dir

Works with patched Qt
This commit is contained in:
Kovid Goyal 2022-07-14 13:24:15 +05:30
parent fe865f5c99
commit 1a0706d9d3
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -11,20 +11,21 @@ import threading
from contextlib import contextmanager, suppress from contextlib import contextmanager, suppress
from functools import lru_cache from functools import lru_cache
from qt.core import ( from qt.core import (
QApplication, QBuffer, QByteArray, QColor, QDateTime, QApplication, QBuffer, QByteArray, QColor, QDateTime, QDesktopServices, QDialog,
QDesktopServices, QDialog, QDialogButtonBox, QEvent, QFile, QFileDialog, QDialogButtonBox, QEvent, QFile, QFileDialog, QFileIconProvider, QFileInfo,
QFileIconProvider, QFileInfo, QFont, QFontDatabase, QFontInfo, QFontMetrics, QFont, QFontDatabase, QFontInfo, QFontMetrics, QGuiApplication, QIcon, QIODevice,
QGuiApplication, QIcon, QIODevice, QLocale, QNetworkProxyFactory, QObject, QLocale, QNetworkProxyFactory, QObject, QPalette, QResource, QSettings,
QPalette, QResource, QSettings, QSocketNotifier, QStringListModel, QStyle, Qt, QSocketNotifier, QStringListModel, QStyle, Qt, QThread, QTimer, QTranslator,
QThread, QTimer, QTranslator, QUrl, pyqtSignal, pyqtSlot QUrl, pyqtSignal, pyqtSlot
) )
from threading import Lock, RLock from threading import Lock, RLock
import calibre.gui2.pyqt6_compat as pqc import calibre.gui2.pyqt6_compat as pqc
from calibre import as_unicode, prints from calibre import as_unicode, prints
from calibre.constants import ( from calibre.constants import (
DEBUG, __appname__ as APP_UID, __version__, config_dir, is_running_from_develop, DEBUG, __appname__ as APP_UID, __version__, cache_dir, config_dir,
isbsd, isfrozen, islinux, ismacos, iswindows, isxp, plugins_loc is_running_from_develop, isbsd, isfrozen, islinux, ismacos, iswindows, isxp,
plugins_loc
) )
from calibre.ebooks.metadata import MetaInformation from calibre.ebooks.metadata import MetaInformation
from calibre.gui2.linux_file_dialogs import ( from calibre.gui2.linux_file_dialogs import (
@ -33,8 +34,8 @@ from calibre.gui2.linux_file_dialogs import (
from calibre.gui2.palette import dark_palette, fix_palette_colors from calibre.gui2.palette import dark_palette, fix_palette_colors
from calibre.gui2.qt_file_dialogs import FileDialog from calibre.gui2.qt_file_dialogs import FileDialog
from calibre.ptempfile import base_dir from calibre.ptempfile import base_dir
from calibre.utils.config_base import tweaks
from calibre.utils.config import Config, ConfigProxy, JSONConfig, dynamic from calibre.utils.config import Config, ConfigProxy, JSONConfig, dynamic
from calibre.utils.config_base import tweaks
from calibre.utils.date import UNDEFINED_DATE from calibre.utils.date import UNDEFINED_DATE
from calibre.utils.file_type_icons import EXT_MAP from calibre.utils.file_type_icons import EXT_MAP
from calibre.utils.localization import get_lang from calibre.utils.localization import get_lang
@ -1048,6 +1049,8 @@ class Application(QApplication):
if gprefs['color_palette'] != 'system': if gprefs['color_palette'] != 'system':
set_appearance(gprefs['color_palette']) set_appearance(gprefs['color_palette'])
self.ignore_palette_changes = False self.ignore_palette_changes = False
if iswindows:
os.environ['CALIBRE_QT_CACHE_LOCATION'] = cache_dir()
QNetworkProxyFactory.setUseSystemConfiguration(True) QNetworkProxyFactory.setUseSystemConfiguration(True)
# Allow import of webengine after construction of QApplication on new # Allow import of webengine after construction of QApplication on new
# enough PyQt # enough PyQt