Fix for incompatibility with PyQt 5.6

For some odd reason PyQt 5.6 renames QUrl.None to QUrl.None_
None is not a keyword in python 2, so I assume this has to do with
python 3 compatibility
This commit is contained in:
Kovid Goyal 2016-05-26 20:24:12 +05:30
parent 94806c60db
commit 57450e54e6
9 changed files with 27 additions and 21 deletions

View File

@ -24,6 +24,11 @@ from calibre.utils.localization import get_lang
from calibre.utils.filenames import expanduser from calibre.utils.filenames import expanduser
from calibre.utils.file_type_icons import EXT_MAP from calibre.utils.file_type_icons import EXT_MAP
try:
NO_URL_FORMATTING = QUrl.None_
except AttributeError:
NO_URL_FORMATTING = QUrl.None
# Setup gprefs {{{ # Setup gprefs {{{
gprefs = JSONConfig('gui') gprefs = JSONConfig('gui')
defs = gprefs.defaults defs = gprefs.defaults

View File

@ -21,7 +21,7 @@ from calibre.gui2.dnd import (dnd_has_image, dnd_get_image, dnd_get_files,
from calibre.ebooks import BOOK_EXTENSIONS from calibre.ebooks import BOOK_EXTENSIONS
from calibre.ebooks.metadata.book.base import (field_metadata, Metadata) from calibre.ebooks.metadata.book.base import (field_metadata, Metadata)
from calibre.ebooks.metadata.book.render import mi_to_html from calibre.ebooks.metadata.book.render import mi_to_html
from calibre.gui2 import (config, open_url, pixmap_to_data, gprefs, rating_font) from calibre.gui2 import (config, open_url, pixmap_to_data, gprefs, rating_font, NO_URL_FORMATTING)
from calibre.utils.config import tweaks from calibre.utils.config import tweaks
from calibre.utils.localization import is_rtl from calibre.utils.localization import is_rtl
@ -110,7 +110,7 @@ def details_context_menu_event(view, ev, book_info): # {{{
p = view.page() p = view.page()
mf = p.mainFrame() mf = p.mainFrame()
r = mf.hitTestContent(ev.pos()) r = mf.hitTestContent(ev.pos())
url = unicode(r.linkUrl().toString(QUrl.None)).strip() url = unicode(r.linkUrl().toString(NO_URL_FORMATTING)).strip()
menu = p.createStandardContextMenu() menu = p.createStandardContextMenu()
ca = view.pageAction(p.Copy) ca = view.pageAction(p.Copy)
for action in list(menu.actions()): for action in list(menu.actions()):
@ -478,7 +478,7 @@ class BookInfo(QWebView):
self._link_clicked = True self._link_clicked = True
if unicode(link.scheme()) in ('http', 'https'): if unicode(link.scheme()) in ('http', 'https'):
return open_url(link) return open_url(link)
link = unicode(link.toString(QUrl.None)) link = unicode(link.toString(NO_URL_FORMATTING))
self.link_clicked.emit(link) self.link_clicked.emit(link)
def turnoff_scrollbar(self, *args): def turnoff_scrollbar(self, *args):

View File

@ -19,7 +19,7 @@ from PyQt5.QtWebKitWidgets import QWebView, QWebPage
from calibre.ebooks.chardet import xml_to_unicode from calibre.ebooks.chardet import xml_to_unicode
from calibre import xml_replace_entities, prepare_string_for_xml from calibre import xml_replace_entities, prepare_string_for_xml
from calibre.gui2 import open_url, error_dialog, choose_files, gprefs from calibre.gui2 import open_url, error_dialog, choose_files, gprefs, NO_URL_FORMATTING
from calibre.utils.soupparser import fromstring from calibre.utils.soupparser import fromstring
from calibre.utils.config import tweaks from calibre.utils.config import tweaks
from calibre.utils.imghdr import what from calibre.utils.imghdr import what
@ -211,7 +211,7 @@ class EditorWidget(QWebView): # {{{
return return
url = self.parse_link(link) url = self.parse_link(link)
if url.isValid(): if url.isValid():
url = unicode(url.toString(QUrl.None)) url = unicode(url.toString(NO_URL_FORMATTING))
self.setFocus(Qt.OtherFocusReason) self.setFocus(Qt.OtherFocusReason)
if is_image: if is_image:
self.exec_command('insertHTML', self.exec_command('insertHTML',

View File

@ -9,10 +9,10 @@ __docformat__ = 'restructuredtext en'
from PyQt5.Qt import ( from PyQt5.Qt import (
QCoreApplication, QModelIndex, QTimer, Qt, pyqtSignal, QWidget, QCoreApplication, QModelIndex, QTimer, Qt, pyqtSignal, QWidget,
QGridLayout, QDialog, QPixmap, QSize, QPalette, QShortcut, QKeySequence, QGridLayout, QDialog, QPixmap, QSize, QPalette, QShortcut, QKeySequence,
QSplitter, QVBoxLayout, QCheckBox, QPushButton, QIcon, QBrush, QUrl) QSplitter, QVBoxLayout, QCheckBox, QPushButton, QIcon, QBrush)
from PyQt5.QtWebKitWidgets import QWebView from PyQt5.QtWebKitWidgets import QWebView
from calibre.gui2 import gprefs from calibre.gui2 import gprefs, NO_URL_FORMATTING
from calibre import fit_image from calibre import fit_image
from calibre.gui2.book_details import render_html, details_context_menu_event from calibre.gui2.book_details import render_html, details_context_menu_event
from calibre.gui2.widgets import CoverView from calibre.gui2.widgets import CoverView
@ -114,7 +114,7 @@ class BookInfo(QDialog):
pass pass
def link_clicked(self, qurl): def link_clicked(self, qurl):
link = unicode(qurl.toString(QUrl.None)) link = unicode(qurl.toString(NO_URL_FORMATTING))
self.link_delegate(link) self.link_delegate(link)
def done(self, r): def done(self, r):

View File

@ -20,7 +20,7 @@ from PyQt5.Qt import (
QStyledItemDelegate, QTextDocument, QRectF, QIcon, Qt, QApplication, QStyledItemDelegate, QTextDocument, QRectF, QIcon, Qt, QApplication,
QDialog, QVBoxLayout, QLabel, QDialogButtonBox, QStyle, QStackedWidget, QDialog, QVBoxLayout, QLabel, QDialogButtonBox, QStyle, QStackedWidget,
QWidget, QTableView, QGridLayout, QFontInfo, QPalette, QTimer, pyqtSignal, QWidget, QTableView, QGridLayout, QFontInfo, QPalette, QTimer, pyqtSignal,
QAbstractTableModel, QSize, QListView, QPixmap, QModelIndex, QUrl, QAbstractTableModel, QSize, QListView, QPixmap, QModelIndex,
QAbstractListModel, QRect, QTextBrowser, QStringListModel, QMenu, QAbstractListModel, QRect, QTextBrowser, QStringListModel, QMenu,
QCursor, QHBoxLayout, QPushButton, QSizePolicy) QCursor, QHBoxLayout, QPushButton, QSizePolicy)
from PyQt5.QtWebKitWidgets import QWebView from PyQt5.QtWebKitWidgets import QWebView
@ -31,7 +31,7 @@ from calibre.utils.logging import GUILog as Log
from calibre.ebooks.metadata.sources.identify import urls_from_identifiers from calibre.ebooks.metadata.sources.identify import urls_from_identifiers
from calibre.ebooks.metadata.book.base import Metadata from calibre.ebooks.metadata.book.base import Metadata
from calibre.ebooks.metadata.opf2 import OPF from calibre.ebooks.metadata.opf2 import OPF
from calibre.gui2 import error_dialog, rating_font, gprefs from calibre.gui2 import error_dialog, rating_font, gprefs, NO_URL_FORMATTING
from calibre.gui2.progress_indicator import draw_snake_spinner from calibre.gui2.progress_indicator import draw_snake_spinner
from calibre.utils.date import (utcnow, fromordinal, format_date, from calibre.utils.date import (utcnow, fromordinal, format_date,
UNDEFINED_DATE, as_utc) UNDEFINED_DATE, as_utc)
@ -324,7 +324,7 @@ class Comments(QWebView): # {{{
def link_clicked(self, url): def link_clicked(self, url):
from calibre.gui2 import open_url from calibre.gui2 import open_url
if unicode(url.toString(QUrl.None)).startswith('http://'): if unicode(url.toString(NO_URL_FORMATTING)).startswith('http://'):
open_url(url) open_url(url)
def turnoff_scrollbar(self, *args): def turnoff_scrollbar(self, *args):

View File

@ -9,12 +9,12 @@ __docformat__ = 'restructuredtext en'
import os import os
from urlparse import urlparse from urlparse import urlparse
from PyQt5.Qt import QNetworkCookieJar, QNetworkProxy, QUrl from PyQt5.Qt import QNetworkCookieJar, QNetworkProxy
from PyQt5.QtWebKitWidgets import QWebView, QWebPage from PyQt5.QtWebKitWidgets import QWebView, QWebPage
from calibre import USER_AGENT, get_proxies from calibre import USER_AGENT, get_proxies
from calibre.ebooks import BOOK_EXTENSIONS from calibre.ebooks import BOOK_EXTENSIONS
from calibre.gui2 import choose_save_file from calibre.gui2 import choose_save_file, NO_URL_FORMATTING
from calibre.gui2.ebook_download import show_download_info from calibre.gui2.ebook_download import show_download_info
from calibre.ptempfile import PersistentTemporaryFile from calibre.ptempfile import PersistentTemporaryFile
from calibre.utils.filenames import ascii_filename from calibre.utils.filenames import ascii_filename
@ -69,7 +69,7 @@ class NPWebView(QWebView):
if not self.gui: if not self.gui:
return return
url = unicode(request.url().toString(QUrl.None)) url = unicode(request.url().toString(NO_URL_FORMATTING))
cf = self.get_cookies() cf = self.get_cookies()
filename = get_download_filename(url, cf) filename = get_download_filename(url, cf)

View File

@ -9,11 +9,12 @@ __copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
import sys import sys
from PyQt5.Qt import ( from PyQt5.Qt import (
QIcon, Qt, QSplitter, QListWidget, QTextBrowser, QPalette, QUrl, QMenu, QIcon, Qt, QSplitter, QListWidget, QTextBrowser, QPalette, QMenu,
QListWidgetItem, pyqtSignal, QApplication, QStyledItemDelegate) QListWidgetItem, pyqtSignal, QApplication, QStyledItemDelegate)
from calibre.ebooks.oeb.polish.check.base import WARN, INFO, DEBUG, ERROR, CRITICAL from calibre.ebooks.oeb.polish.check.base import WARN, INFO, DEBUG, ERROR, CRITICAL
from calibre.ebooks.oeb.polish.check.main import run_checks, fix_errors from calibre.ebooks.oeb.polish.check.main import run_checks, fix_errors
from calibre.gui2 import NO_URL_FORMATTING
from calibre.gui2.tweak_book import tprefs from calibre.gui2.tweak_book import tprefs
from calibre.gui2.tweak_book.widgets import BusyCursor from calibre.gui2.tweak_book.widgets import BusyCursor
@ -111,7 +112,7 @@ class Check(QSplitter):
msg, _('Click to run a check on the book'), _('Run check'))) msg, _('Click to run a check on the book'), _('Run check')))
def link_clicked(self, url): def link_clicked(self, url):
url = unicode(url.toString(QUrl.None)) url = unicode(url.toString(NO_URL_FORMATTING))
if url == 'activate:item': if url == 'activate:item':
self.current_item_activated() self.current_item_activated()
elif url == 'run:check': elif url == 'run:check':

View File

@ -26,7 +26,7 @@ from calibre.constants import iswindows
from calibre.ebooks.oeb.polish.parsing import parse from calibre.ebooks.oeb.polish.parsing import parse
from calibre.ebooks.oeb.base import serialize, OEB_DOCS from calibre.ebooks.oeb.base import serialize, OEB_DOCS
from calibre.ptempfile import PersistentTemporaryDirectory from calibre.ptempfile import PersistentTemporaryDirectory
from calibre.gui2 import error_dialog, open_url from calibre.gui2 import error_dialog, open_url, NO_URL_FORMATTING
from calibre.gui2.tweak_book import current_container, editors, tprefs, actions, TOP from calibre.gui2.tweak_book import current_container, editors, tprefs, actions, TOP
from calibre.gui2.viewer.documentview import apply_settings from calibre.gui2.viewer.documentview import apply_settings
from calibre.gui2.viewer.config import config from calibre.gui2.viewer.config import config
@ -221,7 +221,7 @@ class NetworkAccessManager(QNetworkAccessManager):
self.cache.setMaximumCacheSize(0) self.cache.setMaximumCacheSize(0)
def createRequest(self, operation, request, data): def createRequest(self, operation, request, data):
url = unicode(request.url().toString(QUrl.None)) url = unicode(request.url().toString(NO_URL_FORMATTING))
if operation == self.GetOperation and url.startswith('file://'): if operation == self.GetOperation and url.startswith('file://'):
path = url[7:] path = url[7:]
if iswindows and path.startswith('/'): if iswindows and path.startswith('/'):
@ -418,7 +418,7 @@ class WebView(QWebView):
p = self.page() p = self.page()
mf = p.mainFrame() mf = p.mainFrame()
r = mf.hitTestContent(ev.pos()) r = mf.hitTestContent(ev.pos())
url = unicode(r.linkUrl().toString(QUrl.None)).strip() url = unicode(r.linkUrl().toString(NO_URL_FORMATTING)).strip()
ca = self.pageAction(QWebPage.Copy) ca = self.pageAction(QWebPage.Copy)
if ca.isEnabled(): if ca.isEnabled():
menu.addAction(ca) menu.addAction(ca)

View File

@ -11,7 +11,7 @@ from PyQt5.Qt import (QDialog, QPixmap, QUrl, QScrollArea, QLabel, QSizePolicy,
QDialogButtonBox, QVBoxLayout, QPalette, QApplication, QSize, QIcon, QDialogButtonBox, QVBoxLayout, QPalette, QApplication, QSize, QIcon,
Qt, QTransform) Qt, QTransform)
from calibre.gui2 import choose_save_file, gprefs from calibre.gui2 import choose_save_file, gprefs, NO_URL_FORMATTING
class ImageView(QDialog): class ImageView(QDialog):
@ -102,7 +102,7 @@ class ImageView(QDialog):
if geom is not None: if geom is not None:
self.restoreGeometry(geom) self.restoreGeometry(geom)
try: try:
self.current_image_name = unicode(self.current_url.toString(QUrl.None)).rpartition('/')[-1] self.current_image_name = unicode(self.current_url.toString(NO_URL_FORMATTING)).rpartition('/')[-1]
except AttributeError: except AttributeError:
self.current_image_name = self.current_url self.current_image_name = self.current_url
title = _('View Image: %s')%self.current_image_name title = _('View Image: %s')%self.current_image_name