diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index a1dbfe5398..47262bbaa7 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -10,8 +10,8 @@ import sys import threading from contextlib import contextmanager from qt.core import ( - QT_VERSION, QApplication, QBuffer, QByteArray, QColor, QCoreApplication, - QDateTime, QDesktopServices, QDialog, QDialogButtonBox, QEvent, QFileDialog, + QT_VERSION, QApplication, QBuffer, QByteArray, QColor, QDateTime, + QDesktopServices, QDialog, QDialogButtonBox, QEvent, QFileDialog, QFileIconProvider, QFileInfo, QFont, QFontDatabase, QFontInfo, QFontMetrics, QGuiApplication, QIcon, QIODevice, QLocale, QNetworkProxyFactory, QObject, QPalette, QSettings, QSocketNotifier, QStringListModel, QStyle, Qt, QThread, @@ -381,8 +381,8 @@ def min_available_height(): def get_screen_dpi(): - d = QApplication.desktop() - return (d.logicalDpiX(), d.logicalDpiY()) + s = QApplication.instance().primaryScreen() + return s.logicalDotsPerInchX(), s.logicalDotsPerInchY() _is_widescreen = None @@ -820,8 +820,7 @@ class ResizableDialog(QDialog): def __init__(self, *args, **kwargs): QDialog.__init__(self, *args) self.setupUi(self) - desktop = QCoreApplication.instance().desktop() - geom = desktop.availableGeometry(self) + geom = self.screen().availableSize() nh, nw = max(550, geom.height()-25), max(700, geom.width()-10) nh = min(self.height(), nh) nw = min(self.width(), nw) @@ -1049,7 +1048,7 @@ class Application(QApplication): return restored def ensure_window_on_screen(self, widget): - screen_rect = self.desktop().availableGeometry(widget) + screen_rect = widget.screen().availableGeometry() g = widget.geometry() w = min(screen_rect.width(), g.width()) h = min(screen_rect.height(), g.height()) diff --git a/src/calibre/gui2/library/delegates.py b/src/calibre/gui2/library/delegates.py index f6230b978f..c2a0cfe039 100644 --- a/src/calibre/gui2/library/delegates.py +++ b/src/calibre/gui2/library/delegates.py @@ -775,7 +775,7 @@ class CcTemplateDelegate(QStyledItemDelegate): # {{{ editor = TemplateDialog(parent, text, mi) editor.setWindowTitle(_("Edit template")) editor.textbox.setTabChangesFocus(False) - editor.textbox.setTabStopWidth(20) + editor.textbox.setTabStopDistance(20) d = editor.exec() if d: m.setData(index, (editor.rule[1]), Qt.ItemDataRole.EditRole) diff --git a/src/calibre/gui2/preferences/template_functions.py b/src/calibre/gui2/preferences/template_functions.py index cded4db9da..b0708947e0 100644 --- a/src/calibre/gui2/preferences/template_functions.py +++ b/src/calibre/gui2/preferences/template_functions.py @@ -181,7 +181,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form): self.replace_button.setEnabled(False) self.clear_button.clicked.connect(self.clear_button_clicked) self.replace_button.clicked.connect(self.replace_button_clicked) - self.program.setTabStopWidth(20) + self.program.setTabStopDistance(20) self.highlighter = PythonHighlighter(self.program.document()) self.te_textbox = self.template_editor.textbox diff --git a/src/calibre/gui2/preferences/template_functions.ui b/src/calibre/gui2/preferences/template_functions.ui index 72a45d988c..f68144a369 100644 --- a/src/calibre/gui2/preferences/template_functions.ui +++ b/src/calibre/gui2/preferences/template_functions.ui @@ -237,7 +237,7 @@ - + 30 diff --git a/src/calibre/gui2/tweak_book/diff/view.py b/src/calibre/gui2/tweak_book/diff/view.py index 0e099ab16f..0580f30a9e 100644 --- a/src/calibre/gui2/tweak_book/diff/view.py +++ b/src/calibre/gui2/tweak_book/diff/view.py @@ -117,7 +117,7 @@ class TextBrowser(PlainTextEdit): # {{{ font.setPointSizeF(tprefs['editor_font_size']) self.setFont(font) self.calculate_metrics() - self.setTabStopWidth(tprefs['editor_tab_stop_width'] * self.space_width) + self.setTabStopDistance(tprefs['editor_tab_stop_width'] * self.space_width) font = self.heading_font = QFont(self.font()) font.setPointSizeF(tprefs['editor_font_size'] * 1.5) font.setBold(True) diff --git a/src/calibre/gui2/tweak_book/editor/insert_resource.py b/src/calibre/gui2/tweak_book/editor/insert_resource.py index 4c517791ee..3a82b7e451 100644 --- a/src/calibre/gui2/tweak_book/editor/insert_resource.py +++ b/src/calibre/gui2/tweak_book/editor/insert_resource.py @@ -226,7 +226,7 @@ class InsertImage(Dialog): self.fm = fm = QSortFilterProxyModel(self.view) self.fm.setDynamicSortFilter(self.for_browsing) fm.setSourceModel(self.model) - fm.setFilterCaseSensitivity(False) + fm.setFilterCaseSensitivity(Qt.CaseSensitivity.CaseInsensitive) v.setModel(fm) l.addWidget(v, 1, 0, 1, 2) v.pressed.connect(self.pressed) diff --git a/src/calibre/gui2/tweak_book/editor/text.py b/src/calibre/gui2/tweak_book/editor/text.py index ad51f01d71..b95ba71c82 100644 --- a/src/calibre/gui2/tweak_book/editor/text.py +++ b/src/calibre/gui2/tweak_book/editor/text.py @@ -224,10 +224,10 @@ class TextEdit(PlainTextEdit): self.setLineWrapMode(QPlainTextEdit.LineWrapMode.WidgetWidth if prefs['editor_line_wrap'] else QPlainTextEdit.LineWrapMode.NoWrap) theme = get_theme(prefs['editor_theme']) self.apply_theme(theme) - w = self.fontMetrics() - self.space_width = w.width(' ') + fm = self.fontMetrics() + self.space_width = fm.horizontalAdvance(' ') self.tw = self.smarts.override_tab_stop_width if self.smarts.override_tab_stop_width is not None else prefs['editor_tab_stop_width'] - self.setTabStopWidth(self.tw * self.space_width) + self.setTabStopDistance(self.tw * self.space_width) if dictionaries_changed: self.highlighter.rehighlight() @@ -258,9 +258,9 @@ class TextEdit(PlainTextEdit): self.tooltip_font.setPointSizeF(font.pointSizeF() - 1.) self.setFont(font) self.highlighter.apply_theme(theme) - w = self.fontMetrics() - self.number_width = max(map(lambda x:w.width(str(x)), range(10))) - self.size_hint = QSize(self.expected_geometry[0] * w.averageCharWidth(), self.expected_geometry[1] * w.height()) + fm = self.fontMetrics() + self.number_width = max(map(lambda x:fm.horizontalAdvance(str(x)), range(10))) + self.size_hint = QSize(self.expected_geometry[0] * fm.averageCharWidth(), self.expected_geometry[1] * fm.height()) self.highlight_color = theme_color(theme, 'HighlightRegion', 'bg') self.highlight_cursor_line() self.completion_popup.clear_caches(), self.completion_popup.update() @@ -276,7 +276,7 @@ class TextEdit(PlainTextEdit): self.smarts = sclass(self) if self.smarts.override_tab_stop_width is not None: self.tw = self.smarts.override_tab_stop_width - self.setTabStopWidth(self.tw * self.space_width) + self.setTabStopDistance(self.tw * self.space_width) if isinstance(text, bytes): text = text.decode('utf-8', 'replace') self.setPlainText(unicodedata.normalize('NFC', str(text))) diff --git a/src/calibre/gui2/tweak_book/preview.py b/src/calibre/gui2/tweak_book/preview.py index cfdf0113cc..49f6897b25 100644 --- a/src/calibre/gui2/tweak_book/preview.py +++ b/src/calibre/gui2/tweak_book/preview.py @@ -12,9 +12,9 @@ from qt.core import ( pyqtSignal ) from qt.webengine import ( - QWebEngineContextMenuData, QWebEnginePage, QWebEngineProfile, QWebEngineScript, - QWebEngineSettings, QWebEngineUrlRequestJob, QWebEngineUrlSchemeHandler, - QWebEngineView + QWebEngineContextMenuRequest, QWebEnginePage, QWebEngineProfile, + QWebEngineScript, QWebEngineSettings, QWebEngineUrlRequestJob, + QWebEngineUrlSchemeHandler, QWebEngineView ) from threading import Thread @@ -33,13 +33,12 @@ from calibre.gui2.palette import dark_color, dark_link_color, dark_text_color from calibre.gui2.tweak_book import TOP, actions, current_container, editors, tprefs from calibre.gui2.tweak_book.file_list import OpenWithHandler from calibre.gui2.viewer.web_view import handle_mathjax_request, send_reply -from calibre.utils.webengine import ( - Bridge, create_script, from_js, insert_scripts, - secure_webengine, to_js -) from calibre.gui2.webengine import RestartingWebEngineView from calibre.gui2.widgets2 import HistoryLineEdit2 from calibre.utils.ipc.simple_worker import offload_worker +from calibre.utils.webengine import ( + Bridge, create_script, from_js, insert_scripts, secure_webengine, to_js +) from polyglot.builtins import iteritems from polyglot.queue import Empty, Queue from polyglot.urllib import urlparse @@ -462,7 +461,7 @@ class WebView(RestartingWebEngineView, OpenWithHandler): def contextMenuEvent(self, ev): menu = QMenu(self) - data = self._page.contextMenuData() + data = self.lastContextMenuRequest() url = data.linkUrl() url = str(url.toString(NO_URL_FORMATTING)).strip() text = data.selectedText() @@ -474,7 +473,7 @@ class WebView(RestartingWebEngineView, OpenWithHandler): menu.addAction(QIcon(I('debug.png')), _('Inspect element'), self.inspect) if url.partition(':')[0].lower() in {'http', 'https'}: menu.addAction(_('Open link'), partial(safe_open_url, data.linkUrl())) - if QWebEngineContextMenuData.MediaType.MediaTypeImage <= data.mediaType() <= QWebEngineContextMenuData.MediaType.MediaTypeFile: + if QWebEngineContextMenuRequest.MediaType.MediaTypeImage.value <= data.mediaType().value <= QWebEngineContextMenuRequest.MediaType.MediaTypeFile.value: url = data.mediaUrl() if url.scheme() == FAKE_PROTOCOL: href = url.path().lstrip('/') @@ -483,7 +482,7 @@ class WebView(RestartingWebEngineView, OpenWithHandler): resource_name = c.href_to_name(href) if resource_name and c.exists(resource_name) and resource_name not in c.names_that_must_not_be_changed: self.add_open_with_actions(menu, resource_name) - if data.mediaType() == QWebEngineContextMenuData.MediaType.MediaTypeImage: + if data.mediaType() == QWebEngineContextMenuRequest.MediaType.MediaTypeImage: mime = c.mime_map[resource_name] if mime.startswith('image/'): menu.addAction(_('Edit %s') % resource_name, partial(self.edit_image, resource_name)) diff --git a/src/calibre/gui2/tweak_book/ui.py b/src/calibre/gui2/tweak_book/ui.py index 3377b6d006..6742049a45 100644 --- a/src/calibre/gui2/tweak_book/ui.py +++ b/src/calibre/gui2/tweak_book/ui.py @@ -385,8 +385,8 @@ class Main(MainWindow): for v, h in product(('top', 'bottom'), ('left', 'right')): p = f'dock_{v}_{h}' pref = tprefs[p] or tprefs.defaults[p] - area = getattr(Qt, '%sDockWidgetArea' % capitalize({'vertical':h, 'horizontal':v}[pref])) - self.setCorner(getattr(Qt, '%s%sCorner' % tuple(map(capitalize, (v, h)))), area) + area = getattr(Qt.DockWidgetArea, '%sDockWidgetArea' % capitalize({'vertical':h, 'horizontal':v}[pref])) + self.setCorner(getattr(Qt.Corner, '%s%sCorner' % tuple(map(capitalize, (v, h)))), area) self.preview.apply_settings() self.live_css.apply_theme() for bar in (self.global_bar, self.tools_bar, self.plugins_bar): diff --git a/src/calibre/gui2/viewer/web_view.py b/src/calibre/gui2/viewer/web_view.py index 104bf7b055..ad504d8cff 100644 --- a/src/calibre/gui2/viewer/web_view.py +++ b/src/calibre/gui2/viewer/web_view.py @@ -314,7 +314,7 @@ def apply_font_settings(page_or_view): else: s.resetFontFamily(QWebEngineSettings.FontFamily.SansSerifFont) sf = fs.get('standard_font') or 'serif' - sf = getattr(s, {'serif': 'SerifFont', 'sans': 'SansSerifFont', 'mono': 'FixedFont'}[sf]) + sf = getattr(QWebEngineSettings.FontFamily, {'serif': 'SerifFont', 'sans': 'SansSerifFont', 'mono': 'FixedFont'}[sf]) s.setFontFamily(QWebEngineSettings.FontFamily.StandardFont, s.fontFamily(sf)) old_minimum = s.fontSize(QWebEngineSettings.FontSize.MinimumFontSize) old_base = s.fontSize(QWebEngineSettings.FontSize.DefaultFontSize) diff --git a/src/calibre/gui2/widgets2.py b/src/calibre/gui2/widgets2.py index 89f35e79d2..ae2e980239 100644 --- a/src/calibre/gui2/widgets2.py +++ b/src/calibre/gui2/widgets2.py @@ -394,7 +394,7 @@ class FlowLayout(QLayout): # {{{ self.do_layout(rect, apply_geometry=True) def expandingDirections(self): - return Qt.Orientations(0) + return Qt.Orientation(0) def minimumSize(self): size = QSize()