py3: more work toward universal __future__s

This commit is contained in:
Eli Schwartz 2019-08-05 16:14:38 -04:00
parent 1cd54361c0
commit 80beb72b65
No known key found for this signature in database
GPG Key ID: CEB167EFB5722BD6
47 changed files with 257 additions and 223 deletions

View File

@ -1,6 +1,10 @@
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
""" The GUI """ """ The GUI """
import glob import glob
import os import os
import signal import signal
@ -354,7 +358,7 @@ def is_widescreen():
global _is_widescreen global _is_widescreen
if _is_widescreen is None: if _is_widescreen is None:
try: try:
_is_widescreen = float(available_width())/available_height() > 1.4 _is_widescreen = available_width()/available_height() > 1.4
except: except:
_is_widescreen = False _is_widescreen = False
return _is_widescreen return _is_widescreen
@ -736,7 +740,7 @@ class Translator(QTranslator):
try: try:
src = unicode_type(args[1]) src = unicode_type(args[1])
except: except:
return u'' return ''
t = _ t = _
return t(src) return t(src)
@ -766,8 +770,8 @@ def load_builtin_fonts():
if fid > -1: if fid > -1:
fam = QFontDatabase.applicationFontFamilies(fid) fam = QFontDatabase.applicationFontFamilies(fid)
fam = set(map(unicode_type, fam)) fam = set(map(unicode_type, fam))
if u'calibre Symbols' in fam: if 'calibre Symbols' in fam:
_rating_font = u'calibre Symbols' _rating_font = 'calibre Symbols'
def setup_gui_option_parser(parser): def setup_gui_option_parser(parser):
@ -881,7 +885,7 @@ class Application(QApplication):
self.line_height = max(12, QFontMetrics(self.font()).lineSpacing()) self.line_height = max(12, QFontMetrics(self.font()).lineSpacing())
dl = QLocale(get_lang()) dl = QLocale(get_lang())
if unicode_type(dl.bcp47Name()) != u'C': if unicode_type(dl.bcp47Name()) != 'C':
QLocale.setDefault(dl) QLocale.setDefault(dl)
global gui_thread, qt_app global gui_thread, qt_app
gui_thread = QThread.currentThread() gui_thread = QThread.currentThread()
@ -978,22 +982,22 @@ class Application(QApplication):
icon_map = self.__icon_map_memory_ = {} icon_map = self.__icon_map_memory_ = {}
pcache = {} pcache = {}
for k, v in iteritems({ for k, v in iteritems({
'DialogYesButton': u'ok.png', 'DialogYesButton': 'ok.png',
'DialogNoButton': u'window-close.png', 'DialogNoButton': 'window-close.png',
'DialogCloseButton': u'window-close.png', 'DialogCloseButton': 'window-close.png',
'DialogOkButton': u'ok.png', 'DialogOkButton': 'ok.png',
'DialogCancelButton': u'window-close.png', 'DialogCancelButton': 'window-close.png',
'DialogHelpButton': u'help.png', 'DialogHelpButton': 'help.png',
'DialogOpenButton': u'document_open.png', 'DialogOpenButton': 'document_open.png',
'DialogSaveButton': u'save.png', 'DialogSaveButton': 'save.png',
'DialogApplyButton': u'ok.png', 'DialogApplyButton': 'ok.png',
'DialogDiscardButton': u'trash.png', 'DialogDiscardButton': 'trash.png',
'MessageBoxInformation': u'dialog_information.png', 'MessageBoxInformation': 'dialog_information.png',
'MessageBoxWarning': u'dialog_warning.png', 'MessageBoxWarning': 'dialog_warning.png',
'MessageBoxCritical': u'dialog_error.png', 'MessageBoxCritical': 'dialog_error.png',
'MessageBoxQuestion': u'dialog_question.png', 'MessageBoxQuestion': 'dialog_question.png',
'BrowserReload': u'view-refresh.png', 'BrowserReload': 'view-refresh.png',
'LineEditClearButton': u'clear_left.png', 'LineEditClearButton': 'clear_left.png',
}): }):
if v not in pcache: if v not in pcache:
p = I(v) p = I(v)
@ -1242,7 +1246,7 @@ def elided_text(text, font=None, width=300, pos='middle'):
from PyQt5.Qt import QFontMetrics, QApplication from PyQt5.Qt import QFontMetrics, QApplication
fm = QApplication.fontMetrics() if font is None else (font if isinstance(font, QFontMetrics) else QFontMetrics(font)) fm = QApplication.fontMetrics() if font is None else (font if isinstance(font, QFontMetrics) else QFontMetrics(font))
delta = 4 delta = 4
ellipsis = u'\u2026' ellipsis = '\u2026'
def remove_middle(x): def remove_middle(x):
mid = len(x) // 2 mid = len(x) // 2
@ -1361,7 +1365,7 @@ def set_app_uid(val):
try: try:
AppUserModelID(unicode_type(val)) AppUserModelID(unicode_type(val))
except Exception as err: except Exception as err:
prints(u'Failed to set app uid with error:', as_unicode(err)) prints('Failed to set app uid with error:', as_unicode(err))
return False return False
return True return True

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
@ -19,7 +20,7 @@ from polyglot.builtins import unicode_type, string_or_bytes
def menu_action_unique_name(plugin, unique_name): def menu_action_unique_name(plugin, unique_name):
return u'%s : menu action : %s'%(plugin.unique_name, unique_name) return '%s : menu action : %s'%(plugin.unique_name, unique_name)
class InterfaceAction(QObject): class InterfaceAction(QObject):
@ -151,7 +152,7 @@ class InterfaceAction(QObject):
bn = self.__class__.__name__ bn = self.__class__.__name__
if getattr(self.interface_action_base_plugin, 'name'): if getattr(self.interface_action_base_plugin, 'name'):
bn = self.interface_action_base_plugin.name bn = self.interface_action_base_plugin.name
return u'Interface Action: %s (%s)'%(bn, self.name) return 'Interface Action: %s (%s)'%(bn, self.name)
def create_action(self, spec=None, attr='qaction', shortcut_name=None): def create_action(self, spec=None, attr='qaction', shortcut_name=None):
if spec is None: if spec is None:

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
from __future__ import print_function
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
@ -252,7 +252,7 @@ class ChooseLibraryAction(InterfaceAction):
for i in range(5): for i in range(5):
ac = self.create_action(spec=('', None, None, None), ac = self.create_action(spec=('', None, None, None),
attr='switch_action%d'%i) attr='switch_action%d'%i)
ac.setObjectName(str(i)) ac.setObjectName(unicode_type(i))
self.switch_actions.append(ac) self.switch_actions.append(ac)
ac.setVisible(False) ac.setVisible(False)
connect_lambda(ac.triggered, self, lambda self: connect_lambda(ac.triggered, self, lambda self:
@ -329,7 +329,7 @@ class ChooseLibraryAction(InterfaceAction):
self.prev_lname = self.last_lname self.prev_lname = self.last_lname
self.last_lname = lname self.last_lname = lname
if len(lname) > 16: if len(lname) > 16:
lname = lname[:16] + u'' lname = lname[:16] + ''
a = self.qaction a = self.qaction
a.setText(lname.replace('&', '&&&')) # I have no idea why this requires a triple ampersand a.setText(lname.replace('&', '&&&')) # I have no idea why this requires a triple ampersand
self.update_tooltip(db.count()) self.update_tooltip(db.count())

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
@ -648,7 +649,7 @@ class EditMetadataAction(InterfaceAction):
if not dest_mi.comments: if not dest_mi.comments:
dest_mi.comments = src_mi.comments dest_mi.comments = src_mi.comments
else: else:
dest_mi.comments = unicode_type(dest_mi.comments) + u'\n\n' + unicode_type(src_mi.comments) dest_mi.comments = unicode_type(dest_mi.comments) + '\n\n' + unicode_type(src_mi.comments)
if src_mi.title and (not dest_mi.title or dest_mi.title == _('Unknown')): if src_mi.title and (not dest_mi.title or dest_mi.title == _('Unknown')):
dest_mi.title = src_mi.title dest_mi.title = src_mi.title
if (src_mi.authors and src_mi.authors[0] != _('Unknown')) and (not dest_mi.authors or dest_mi.authors[0] == _('Unknown')): if (src_mi.authors and src_mi.authors[0] != _('Unknown')) and (not dest_mi.authors or dest_mi.authors[0] == _('Unknown')):
@ -701,7 +702,7 @@ class EditMetadataAction(InterfaceAction):
if not dest_value: if not dest_value:
db.set_custom(dest_id, src_value, num=colnum) db.set_custom(dest_id, src_value, num=colnum)
else: else:
dest_value = unicode_type(dest_value) + u'\n\n' + unicode_type(src_value) dest_value = unicode_type(dest_value) + '\n\n' + unicode_type(src_value)
db.set_custom(dest_id, dest_value, num=colnum) db.set_custom(dest_id, dest_value, num=colnum)
if (dt in {'bool', 'int', 'float', 'rating', 'datetime'} and dest_value is None): if (dt in {'bool', 'int', 'float', 'rating', 'datetime'} and dest_value is None):
db.set_custom(dest_id, src_value, num=colnum) db.set_custom(dest_id, src_value, num=colnum)

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
@ -22,6 +23,3 @@ class HelpAction(InterfaceAction):
def show_help(self, *args): def show_help(self, *args):
open_url(QUrl(localize_user_manual_link('https://manual.calibre-ebook.com'))) open_url(QUrl(localize_user_manual_link('https://manual.calibre-ebook.com')))

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
@ -24,5 +25,3 @@ class OpenFolderAction(InterfaceAction):
enabled = loc == 'library' enabled = loc == 'library'
self.qaction.setEnabled(enabled) self.qaction.setEnabled(enabled)
self.menuless_qaction.setEnabled(enabled) self.menuless_qaction.setEnabled(enabled)

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
@ -19,5 +20,3 @@ class RestartAction(InterfaceAction):
def restart(self, *args): def restart(self, *args):
self.gui.quit(restart=True) self.gui.quit(restart=True)

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
@ -7,12 +8,11 @@ __docformat__ = 'restructuredtext en'
import os, numbers import os, numbers
from functools import partial from functools import partial
from polyglot.builtins import itervalues, map
from calibre.utils.config import prefs from calibre.utils.config import prefs
from calibre.gui2 import error_dialog, Dispatcher, choose_dir from calibre.gui2 import error_dialog, Dispatcher, choose_dir
from calibre.gui2.actions import InterfaceAction from calibre.gui2.actions import InterfaceAction
from polyglot.builtins import itervalues, map
class SaveToDiskAction(InterfaceAction): class SaveToDiskAction(InterfaceAction):

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,16 +1,17 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
from PyQt5.Qt import QWidget, QListWidgetItem
from calibre.gui2 import gprefs from calibre.gui2 import gprefs
from calibre.gui2.catalog.catalog_bibtex_ui import Ui_Form from calibre.gui2.catalog.catalog_bibtex_ui import Ui_Form
from polyglot.builtins import unicode_type, range from polyglot.builtins import unicode_type, range
from PyQt5.Qt import QWidget, QListWidgetItem
class PluginWidget(QWidget, Ui_Form): class PluginWidget(QWidget, Ui_Form):

View File

@ -1,15 +1,16 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
from PyQt5.Qt import QWidget, QListWidgetItem, Qt, QVBoxLayout, QLabel, QListWidget
from calibre.gui2 import gprefs from calibre.gui2 import gprefs
from calibre.gui2.ui import get_gui from calibre.gui2.ui import get_gui
from polyglot.builtins import unicode_type, range from polyglot.builtins import unicode_type, range
from PyQt5.Qt import QWidget, QListWidgetItem, Qt, QVBoxLayout, QLabel, QListWidget
def get_saved_field_data(name, all_fields): def get_saved_field_data(name, all_fields):

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import print_function from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
@ -15,7 +15,7 @@ from calibre.gui2 import gprefs, open_url, question_dialog, error_dialog
from calibre.utils.config import JSONConfig from calibre.utils.config import JSONConfig
from calibre.utils.icu import sort_key from calibre.utils.icu import sort_key
from calibre.utils.localization import localize_user_manual_link from calibre.utils.localization import localize_user_manual_link
from polyglot.builtins import unicode_type, zip, range from polyglot.builtins import native_string_type, unicode_type, zip, range
from .catalog_epub_mobi_ui import Ui_Form from .catalog_epub_mobi_ui import Ui_Form
from PyQt5.Qt import (Qt, QAbstractItemView, QCheckBox, QComboBox, from PyQt5.Qt import (Qt, QAbstractItemView, QCheckBox, QComboBox,
@ -115,7 +115,7 @@ class PluginWidget(QWidget,Ui_Form):
'name':_('Wishlist item'), 'name':_('Wishlist item'),
'field':_('Tags'), 'field':_('Tags'),
'pattern':'Wishlist', 'pattern':'Wishlist',
'prefix':u'\u00d7'},], 'prefix':'\u00d7'},],
['table_widget','table_widget'])) ['table_widget','table_widget']))
self.OPTION_FIELDS = option_fields self.OPTION_FIELDS = option_fields
@ -423,7 +423,7 @@ class PluginWidget(QWidget,Ui_Form):
# Hook Preset signals # Hook Preset signals
self.preset_delete_pb.clicked.connect(self.preset_remove) self.preset_delete_pb.clicked.connect(self.preset_remove)
self.preset_save_pb.clicked.connect(self.preset_save) self.preset_save_pb.clicked.connect(self.preset_save)
self.preset_field.currentIndexChanged[str].connect(self.preset_change) self.preset_field.currentIndexChanged[native_string_type].connect(self.preset_change)
self.blocking_all_signals = False self.blocking_all_signals = False
@ -1338,127 +1338,127 @@ class PrefixRules(GenericRulesTable):
# Create a list of prefixes for user selection # Create a list of prefixes for user selection
raw_prefix_list = [ raw_prefix_list = [
('Ampersand',u'&'), ('Ampersand', '&'),
('Angle left double',u'\u00ab'), ('Angle left double', '\u00ab'),
('Angle left',u'\u2039'), ('Angle left', '\u2039'),
('Angle right double',u'\u00bb'), ('Angle right double', '\u00bb'),
('Angle right',u'\u203a'), ('Angle right', '\u203a'),
('Arrow carriage return',u'\u21b5'), ('Arrow carriage return', '\u21b5'),
('Arrow double',u'\u2194'), ('Arrow double', '\u2194'),
('Arrow down',u'\u2193'), ('Arrow down', '\u2193'),
('Arrow left',u'\u2190'), ('Arrow left', '\u2190'),
('Arrow right',u'\u2192'), ('Arrow right', '\u2192'),
('Arrow up',u'\u2191'), ('Arrow up', '\u2191'),
('Asterisk',u'*'), ('Asterisk', '*'),
('At sign',u'@'), ('At sign', '@'),
('Bullet smallest',u'\u22c5'), ('Bullet smallest', '\u22c5'),
('Bullet small',u'\u00b7'), ('Bullet small', '\u00b7'),
('Bullet',u'\u2022'), ('Bullet', '\u2022'),
('Cards clubs',u'\u2663'), ('Cards clubs', '\u2663'),
('Cards diamonds',u'\u2666'), ('Cards diamonds', '\u2666'),
('Cards hearts',u'\u2665'), ('Cards hearts', '\u2665'),
('Cards spades',u'\u2660'), ('Cards spades', '\u2660'),
('Caret',u'^'), ('Caret', '^'),
('Checkmark',u'\u2713'), ('Checkmark', '\u2713'),
('Copyright circle c',u'\u00a9'), ('Copyright circle c', '\u00a9'),
('Copyright circle r',u'\u00ae'), ('Copyright circle r', '\u00ae'),
('Copyright trademark',u'\u2122'), ('Copyright trademark', '\u2122'),
('Currency cent',u'\u00a2'), ('Currency cent', '\u00a2'),
('Currency dollar',u'$'), ('Currency dollar', '$'),
('Currency euro',u'\u20ac'), ('Currency euro', '\u20ac'),
('Currency pound',u'\u00a3'), ('Currency pound', '\u00a3'),
('Currency yen',u'\u00a5'), ('Currency yen', '\u00a5'),
('Dagger double',u'\u2021'), ('Dagger double', '\u2021'),
('Dagger',u'\u2020'), ('Dagger', '\u2020'),
('Degree',u'\u00b0'), ('Degree', '\u00b0'),
('Dots3',u'\u2234'), ('Dots3', '\u2234'),
('Hash',u'#'), ('Hash', '#'),
('Infinity',u'\u221e'), ('Infinity', '\u221e'),
('Lozenge',u'\u25ca'), ('Lozenge', '\u25ca'),
('Math divide',u'\u00f7'), ('Math divide', '\u00f7'),
('Math empty',u'\u2205'), ('Math empty', '\u2205'),
('Math equals',u'='), ('Math equals', '='),
('Math minus',u'\u2212'), ('Math minus', '\u2212'),
('Math plus circled',u'\u2295'), ('Math plus circled', '\u2295'),
('Math times circled',u'\u2297'), ('Math times circled', '\u2297'),
('Math times',u'\u00d7'), ('Math times', '\u00d7'),
('Paragraph',u'\u00b6'), ('Paragraph', '\u00b6'),
('Percent',u'%'), ('Percent', '%'),
('Plus-or-minus',u'\u00b1'), ('Plus-or-minus', '\u00b1'),
('Plus',u'+'), ('Plus', '+'),
('Punctuation colon',u':'), ('Punctuation colon', ':'),
('Punctuation colon-semi',u';'), ('Punctuation colon-semi', ';'),
('Punctuation exclamation',u'!'), ('Punctuation exclamation', '!'),
('Punctuation question',u'?'), ('Punctuation question', '?'),
('Punctuation period',u'.'), ('Punctuation period', '.'),
('Punctuation slash back',u'\\'), ('Punctuation slash back', '\\'),
('Punctuation slash forward',u'/'), ('Punctuation slash forward', '/'),
('Section',u'\u00a7'), ('Section', '\u00a7'),
('Tilde',u'~'), ('Tilde', '~'),
('Vertical bar',u'|'), ('Vertical bar', '|'),
('Vertical bar broken',u'\u00a6'), ('Vertical bar broken', '\u00a6'),
('_0',u'0'), ('_0', '0'),
('_1',u'1'), ('_1', '1'),
('_2',u'2'), ('_2', '2'),
('_3',u'3'), ('_3', '3'),
('_4',u'4'), ('_4', '4'),
('_5',u'5'), ('_5', '5'),
('_6',u'6'), ('_6', '6'),
('_7',u'7'), ('_7', '7'),
('_8',u'8'), ('_8', '8'),
('_9',u'9'), ('_9', '9'),
('_A',u'A'), ('_A', 'A'),
('_B',u'B'), ('_B', 'B'),
('_C',u'C'), ('_C', 'C'),
('_D',u'D'), ('_D', 'D'),
('_E',u'E'), ('_E', 'E'),
('_F',u'F'), ('_F', 'F'),
('_G',u'G'), ('_G', 'G'),
('_H',u'H'), ('_H', 'H'),
('_I',u'I'), ('_I', 'I'),
('_J',u'J'), ('_J', 'J'),
('_K',u'K'), ('_K', 'K'),
('_L',u'L'), ('_L', 'L'),
('_M',u'M'), ('_M', 'M'),
('_N',u'N'), ('_N', 'N'),
('_O',u'O'), ('_O', 'O'),
('_P',u'P'), ('_P', 'P'),
('_Q',u'Q'), ('_Q', 'Q'),
('_R',u'R'), ('_R', 'R'),
('_S',u'S'), ('_S', 'S'),
('_T',u'T'), ('_T', 'T'),
('_U',u'U'), ('_U', 'U'),
('_V',u'V'), ('_V', 'V'),
('_W',u'W'), ('_W', 'W'),
('_X',u'X'), ('_X', 'X'),
('_Y',u'Y'), ('_Y', 'Y'),
('_Z',u'Z'), ('_Z', 'Z'),
('_a',u'a'), ('_a', 'a'),
('_b',u'b'), ('_b', 'b'),
('_c',u'c'), ('_c', 'c'),
('_d',u'd'), ('_d', 'd'),
('_e',u'e'), ('_e', 'e'),
('_f',u'f'), ('_f', 'f'),
('_g',u'g'), ('_g', 'g'),
('_h',u'h'), ('_h', 'h'),
('_i',u'i'), ('_i', 'i'),
('_j',u'j'), ('_j', 'j'),
('_k',u'k'), ('_k', 'k'),
('_l',u'l'), ('_l', 'l'),
('_m',u'm'), ('_m', 'm'),
('_n',u'n'), ('_n', 'n'),
('_o',u'o'), ('_o', 'o'),
('_p',u'p'), ('_p', 'p'),
('_q',u'q'), ('_q', 'q'),
('_r',u'r'), ('_r', 'r'),
('_s',u's'), ('_s', 's'),
('_t',u't'), ('_t', 't'),
('_u',u'u'), ('_u', 'u'),
('_v',u'v'), ('_v', 'v'),
('_w',u'w'), ('_w', 'w'),
('_x',u'x'), ('_x', 'x'),
('_y',u'y'), ('_y', 'y'),
('_z',u'z'), ('_z', 'z'),
] ]
raw_prefix_list = sorted(raw_prefix_list, key=prefix_sorter) raw_prefix_list = sorted(raw_prefix_list, key=prefix_sorter)
self.prefix_list = [x[1] for x in raw_prefix_list] self.prefix_list = [x[1] for x in raw_prefix_list]

View File

@ -1,5 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
@ -338,7 +339,7 @@ class EditorWidget(QWebView, LineEditECM): # {{{
@property @property
def html(self): def html(self):
ans = u'' ans = ''
try: try:
if not self.page().mainFrame().documentElement().findFirst('meta[name="calibre-dont-sanitize"]').isNull(): if not self.page().mainFrame().documentElement().findFirst('meta[name="calibre-dont-sanitize"]').isNull():
# Bypass cleanup if special meta tag exists # Bypass cleanup if special meta tag exists
@ -364,9 +365,9 @@ class EditorWidget(QWebView, LineEditECM): # {{{
x.tag not in ('script', 'style')] x.tag not in ('script', 'style')]
if len(elems) > 1: if len(elems) > 1:
ans = u'<div>%s</div>'%(u''.join(elems)) ans = '<div>%s</div>'%(''.join(elems))
else: else:
ans = u''.join(elems) ans = ''.join(elems)
if not ans.startswith('<'): if not ans.startswith('<'):
ans = '<p>%s</p>'%ans ans = '<p>%s</p>'%ans
ans = xml_replace_entities(ans) ans = xml_replace_entities(ans)
@ -482,7 +483,7 @@ class Highlighter(QSyntaxHighlighter):
if state == State_Comment: if state == State_Comment:
start = pos start = pos
while pos < len_: while pos < len_:
if text[pos:pos+3] == u"-->": if text[pos:pos+3] == "-->":
pos += 3 pos += 3
state = State_Text state = State_Text
break break
@ -495,7 +496,7 @@ class Highlighter(QSyntaxHighlighter):
while pos < len_: while pos < len_:
ch = text[pos] ch = text[pos]
pos += 1 pos += 1
if ch == u'>': if ch == '>':
state = State_Text state = State_Text
break break
self.setFormat(start, pos - start, self.colors['doctype']) self.setFormat(start, pos - start, self.colors['doctype'])
@ -506,7 +507,7 @@ class Highlighter(QSyntaxHighlighter):
while pos < len_: while pos < len_:
ch = text[pos] ch = text[pos]
pos += 1 pos += 1
if ch == u'>': if ch == '>':
state = State_Text state = State_Text
break break
if not ch.isspace(): if not ch.isspace():
@ -524,7 +525,7 @@ class Highlighter(QSyntaxHighlighter):
pos -= 1 pos -= 1
state = State_InsideTag state = State_InsideTag
break break
if ch == u'>': if ch == '>':
state = State_Text state = State_Text
break break
self.setFormat(start, pos - start, self.colors['tag']) self.setFormat(start, pos - start, self.colors['tag'])
@ -537,10 +538,10 @@ class Highlighter(QSyntaxHighlighter):
ch = text[pos] ch = text[pos]
pos += 1 pos += 1
if ch == u'/': if ch == '/':
continue continue
if ch == u'>': if ch == '>':
state = State_Text state = State_Text
break break
@ -557,11 +558,11 @@ class Highlighter(QSyntaxHighlighter):
ch = text[pos] ch = text[pos]
pos += 1 pos += 1
if ch == u'=': if ch == '=':
state = State_AttributeValue state = State_AttributeValue
break break
if ch in (u'>', u'/'): if ch in ('>', '/'):
state = State_InsideTag state = State_InsideTag
break break
@ -577,12 +578,12 @@ class Highlighter(QSyntaxHighlighter):
pos += 1 pos += 1
# handle opening single quote # handle opening single quote
if ch == u"'": if ch == "'":
state = State_SingleQuote state = State_SingleQuote
break break
# handle opening double quote # handle opening double quote
if ch == u'"': if ch == '"':
state = State_DoubleQuote state = State_DoubleQuote
break break
@ -597,7 +598,7 @@ class Highlighter(QSyntaxHighlighter):
ch = text[pos] ch = text[pos]
if ch.isspace(): if ch.isspace():
break break
if ch in (u'>', u'/'): if ch in ('>', '/'):
break break
pos += 1 pos += 1
state = State_InsideTag state = State_InsideTag
@ -610,7 +611,7 @@ class Highlighter(QSyntaxHighlighter):
while pos < len_: while pos < len_:
ch = text[pos] ch = text[pos]
pos += 1 pos += 1
if ch == u"'": if ch == "'":
break break
state = State_InsideTag state = State_InsideTag
@ -624,7 +625,7 @@ class Highlighter(QSyntaxHighlighter):
while pos < len_: while pos < len_:
ch = text[pos] ch = text[pos]
pos += 1 pos += 1
if ch == u'"': if ch == '"':
break break
state = State_InsideTag state = State_InsideTag
@ -635,18 +636,18 @@ class Highlighter(QSyntaxHighlighter):
# State_Text and default # State_Text and default
while pos < len_: while pos < len_:
ch = text[pos] ch = text[pos]
if ch == u'<': if ch == '<':
if text[pos:pos+4] == u"<!--": if text[pos:pos+4] == "<!--":
state = State_Comment state = State_Comment
else: else:
if text[pos:pos+9].upper() == u"<!DOCTYPE": if text[pos:pos+9].upper() == "<!DOCTYPE":
state = State_DocType state = State_DocType
else: else:
state = State_TagStart state = State_TagStart
break break
elif ch == u'&': elif ch == '&':
start = pos start = pos
while pos < len_ and text[pos] != u';': while pos < len_ and text[pos] != ';':
self.setFormat(start, pos - start, self.setFormat(start, pos - start,
self.colors['entity']) self.colors['entity'])
pos += 1 pos += 1

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL 3' __license__ = 'GPL 3'
__copyright__ = '2009, John Schember <john@nachtimwald.com>' __copyright__ = '2009, John Schember <john@nachtimwald.com>'

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL 3' __license__ = 'GPL 3'
__copyright__ = '2009, John Schember <john@nachtimwald.com>' __copyright__ = '2009, John Schember <john@nachtimwald.com>'

View File

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL 3' __license__ = 'GPL 3'
__copyright__ = '2009, John Schember <john@nachtimwald.com>' __copyright__ = '2009, John Schember <john@nachtimwald.com>'

View File

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL 3' __license__ = 'GPL 3'
__copyright__ = '2009, John Schember <john@nachtimwald.com>' __copyright__ = '2009, John Schember <john@nachtimwald.com>'

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'

View File

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL 3' __license__ = 'GPL 3'
__copyright__ = '2009, John Schember <john@nachtimwald.com>' __copyright__ = '2009, John Schember <john@nachtimwald.com>'

View File

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL 3' __license__ = 'GPL 3'
__copyright__ = '2011, John Schember <john@nachtimwald.com>' __copyright__ = '2011, John Schember <john@nachtimwald.com>'

View File

@ -1,4 +1,5 @@
from __future__ import with_statement from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
@ -34,7 +35,7 @@ from calibre.utils.config import tweaks, device_prefs
from calibre.utils.img import scale_image from calibre.utils.img import scale_image
from calibre.library.save_to_disk import find_plugboard from calibre.library.save_to_disk import find_plugboard
from calibre.ptempfile import PersistentTemporaryFile, force_unicode as filename_to_unicode from calibre.ptempfile import PersistentTemporaryFile, force_unicode as filename_to_unicode
from polyglot.builtins import unicode_type, string_or_bytes from polyglot.builtins import unicode_type, string_or_unicode
from polyglot import queue from polyglot import queue
# }}} # }}}
@ -209,7 +210,7 @@ class DeviceManager(Thread): # {{{
tb = traceback.format_exc() tb = traceback.format_exc()
if DEBUG or tb not in self.reported_errors: if DEBUG or tb not in self.reported_errors:
self.reported_errors.add(tb) self.reported_errors.add(tb)
prints('Unable to open device', str(dev)) prints('Unable to open device', unicode_type(dev))
prints(tb) prints(tb)
continue continue
self.after_device_connect(dev, device_kind) self.after_device_connect(dev, device_kind)
@ -472,7 +473,7 @@ class DeviceManager(Thread): # {{{
info = self.device.get_device_information(end_session=False) info = self.device.get_device_information(end_session=False)
if len(info) < 5: if len(info) < 5:
info = tuple(list(info) + [{}]) info = tuple(list(info) + [{}])
info = [i.replace('\x00', '').replace('\x01', '') if isinstance(i, string_or_bytes) else i info = [i.replace('\x00', '').replace('\x01', '') if isinstance(i, string_or_unicode) else i
for i in info] for i in info]
cp = self.device.card_prefix(end_session=False) cp = self.device.card_prefix(end_session=False)
fs = self.device.free_space() fs = self.device.free_space()
@ -604,7 +605,7 @@ class DeviceManager(Thread): # {{{
metadata=None, plugboards=None, add_as_step_to_job=None): metadata=None, plugboards=None, add_as_step_to_job=None):
desc = ngettext('Upload one book to the device', 'Upload {} books to the device', len(names)).format(len(names)) desc = ngettext('Upload one book to the device', 'Upload {} books to the device', len(names)).format(len(names))
if titles: if titles:
desc += u': ' + u', '.join(titles) desc += ': ' + ', '.join(titles)
return self.create_job_step(self._upload_books, done, to_job=add_as_step_to_job, return self.create_job_step(self._upload_books, done, to_job=add_as_step_to_job,
args=[files, names], args=[files, names],
kwargs={'on_card':on_card,'metadata':metadata,'plugboards':plugboards}, description=desc) kwargs={'on_card':on_card,'metadata':metadata,'plugboards':plugboards}, description=desc)
@ -930,7 +931,7 @@ class DeviceMixin(object): # {{{
d.show() d.show()
def auto_convert_question(self, msg, autos): def auto_convert_question(self, msg, autos):
autos = u'\n'.join(map(unicode_type, map(force_unicode, autos))) autos = '\n'.join(map(unicode_type, map(force_unicode, autos)))
return self.ask_a_yes_no_question( return self.ask_a_yes_no_question(
_('No suitable formats'), msg, _('No suitable formats'), msg,
ans_when_user_unavailable=True, ans_when_user_unavailable=True,
@ -1627,7 +1628,7 @@ class DeviceMixin(object): # {{{
if job.exception is not None: if job.exception is not None:
if isinstance(job.exception, FreeSpaceError): if isinstance(job.exception, FreeSpaceError):
where = 'in main memory.' if 'memory' in str(job.exception) \ where = 'in main memory.' if 'memory' in unicode_type(job.exception) \
else 'on the storage card.' else 'on the storage card.'
titles = '\n'.join(['<li>'+mi.title+'</li>' titles = '\n'.join(['<li>'+mi.title+'</li>'
for mi in metadata]) for mi in metadata])

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
@ -44,7 +44,7 @@ class DBUSNotifier(Notifier):
self._notify = dbus.Interface(session_bus.get_object(server, path), interface) self._notify = dbus.Interface(session_bus.get_object(server, path), interface)
except Exception as err: except Exception as err:
self.ok = False self.ok = False
self.err = str(err) self.err = unicode_type(err)
if DEBUG: if DEBUG:
prints(server, 'found' if self.ok else 'not found', 'in', '%.1f' % (time.time() - start), 'seconds') prints(server, 'found' if self.ok else 'not found', 'in', '%.1f' % (time.time() - start), 'seconds')

View File

@ -1,6 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai # vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
from __future__ import with_statement from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
@ -20,7 +20,7 @@ from calibre.gui2.dialogs.confirm_delete import confirm
from calibre.gui2.dialogs.saved_search_editor import SavedSearchEditor from calibre.gui2.dialogs.saved_search_editor import SavedSearchEditor
from calibre.gui2.dialogs.search import SearchDialog from calibre.gui2.dialogs.search import SearchDialog
from calibre.utils.icu import primary_sort_key from calibre.utils.icu import primary_sort_key
from polyglot.builtins import unicode_type, string_or_bytes, map, range from polyglot.builtins import native_string_type, unicode_type, string_or_bytes, map, range
QT_HIDDEN_CLEAR_ACTION = '_q_qlineeditclearaction' QT_HIDDEN_CLEAR_ACTION = '_q_qlineeditclearaction'
@ -119,11 +119,11 @@ class SearchBox2(QComboBox): # {{{
c = self.line_edit.completer() c = self.line_edit.completer()
c.setCompletionMode(c.PopupCompletion) c.setCompletionMode(c.PopupCompletion)
c.highlighted[str].connect(self.completer_used) c.highlighted[native_string_type].connect(self.completer_used)
self.line_edit.key_pressed.connect(self.key_pressed, type=Qt.DirectConnection) self.line_edit.key_pressed.connect(self.key_pressed, type=Qt.DirectConnection)
# QueuedConnection as workaround for https://bugreports.qt-project.org/browse/QTBUG-40807 # QueuedConnection as workaround for https://bugreports.qt-project.org/browse/QTBUG-40807
self.activated[str].connect(self.history_selected, type=Qt.QueuedConnection) self.activated[native_string_type].connect(self.history_selected, type=Qt.QueuedConnection)
self.setEditable(True) self.setEditable(True)
self.as_you_type = True self.as_you_type = True
self.timer = QTimer() self.timer = QTimer()
@ -272,7 +272,7 @@ class SearchBox2(QComboBox): # {{{
def set_search_string(self, txt, store_in_history=False, emit_changed=True): def set_search_string(self, txt, store_in_history=False, emit_changed=True):
if not store_in_history: if not store_in_history:
self.activated[str].disconnect() self.activated[native_string_type].disconnect()
try: try:
self.setFocus(Qt.OtherFocusReason) self.setFocus(Qt.OtherFocusReason)
if not txt: if not txt:

View File

@ -1,4 +1,6 @@
#!/usr/bin/env python2 #!/usr/bin/env python2
from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'

View File

@ -1,4 +1,5 @@
from __future__ import print_function from __future__ import absolute_import, division, print_function, unicode_literals
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
''' '''
@ -23,7 +24,7 @@ from calibre.gui2.progress_indicator import ProgressIndicator as _ProgressIndica
from calibre.gui2.dnd import (dnd_has_image, dnd_get_image, dnd_get_files, from calibre.gui2.dnd import (dnd_has_image, dnd_get_image, dnd_get_files,
image_extensions, dnd_has_extension, DownloadDialog) image_extensions, dnd_has_extension, DownloadDialog)
from calibre.utils.localization import localize_user_manual_link from calibre.utils.localization import localize_user_manual_link
from polyglot.builtins import unicode_type, range from polyglot.builtins import native_string_type, unicode_type, range
history = XMLConfig('history') history = XMLConfig('history')
@ -45,11 +46,11 @@ class ProgressIndicator(QWidget): # {{{
pwidth, pheight = view.size().width(), view.size().height() pwidth, pheight = view.size().width(), view.size().height()
self.resize(pwidth, min(pheight, 250)) self.resize(pwidth, min(pheight, 250))
if self.pos is None: if self.pos is None:
self.move(0, (pheight-self.size().height())/2.) self.move(0, (pheight-self.size().height())/2)
else: else:
self.move(self.pos[0], self.pos[1]) self.move(self.pos[0], self.pos[1])
self.pi.resize(self.pi.sizeHint()) self.pi.resize(self.pi.sizeHint())
self.pi.move(int((self.size().width()-self.pi.size().width())/2.), 0) self.pi.move(int((self.size().width()-self.pi.size().width())//2), 0)
self.status.resize(self.size().width(), self.size().height()-self.pi.size().height()-10) self.status.resize(self.size().width(), self.size().height()-self.pi.size().height()-10)
self.status.move(0, self.pi.size().height()+10) self.status.move(0, self.pi.size().height()+10)
self.status.setText('<h1>'+msg+'</h1>') self.status.setText('<h1>'+msg+'</h1>')
@ -137,7 +138,7 @@ class FilenamePattern(QWidget, Ui_Form): # {{{
self.series.setText(_('No match')) self.series.setText(_('No match'))
if mi.series_index is not None: if mi.series_index is not None:
self.series_index.setText(str(mi.series_index)) self.series_index.setText(unicode_type(mi.series_index))
else: else:
self.series_index.setText(_('No match')) self.series_index.setText(_('No match'))
@ -151,7 +152,7 @@ class FilenamePattern(QWidget, Ui_Form): # {{{
else: else:
self.pubdate.setText(_('No match')) self.pubdate.setText(_('No match'))
self.isbn.setText(_('No match') if mi.isbn is None else str(mi.isbn)) self.isbn.setText(_('No match') if mi.isbn is None else unicode_type(mi.isbn))
self.comments.setText(mi.comments if mi.comments else _('No match')) self.comments.setText(mi.comments if mi.comments else _('No match'))
def pattern(self): def pattern(self):
@ -304,7 +305,7 @@ def draw_size(p, rect, w, h):
f = p.font() f = p.font()
f.setBold(True) f.setBold(True)
p.setFont(f) p.setFont(f)
sz = u'\u00a0%d x %d\u00a0'%(w, h) sz = '\u00a0%d x %d\u00a0'%(w, h)
flags = Qt.AlignBottom|Qt.AlignRight|Qt.TextSingleLine flags = Qt.AlignBottom|Qt.AlignRight|Qt.TextSingleLine
szrect = p.boundingRect(rect, flags, sz) szrect = p.boundingRect(rect, flags, sz)
p.fillRect(szrect.adjusted(0, 0, 0, 4), QColor(0, 0, 0, 200)) p.fillRect(szrect.adjusted(0, 0, 0, 4), QColor(0, 0, 0, 200))
@ -369,8 +370,8 @@ class ImageView(QWidget, ImageDropMixin):
pmap = pmap.scaled(int(nw*pmap.devicePixelRatio()), int(nh*pmap.devicePixelRatio()), Qt.IgnoreAspectRatio, pmap = pmap.scaled(int(nw*pmap.devicePixelRatio()), int(nh*pmap.devicePixelRatio()), Qt.IgnoreAspectRatio,
Qt.SmoothTransformation) Qt.SmoothTransformation)
w, h = int(pmap.width()/pmap.devicePixelRatio()), int(pmap.height()/pmap.devicePixelRatio()) w, h = int(pmap.width()/pmap.devicePixelRatio()), int(pmap.height()/pmap.devicePixelRatio())
x = int(abs(cw - w)/2.) x = int(abs(cw - w)//2)
y = int(abs(ch - h)/2.) y = int(abs(ch - h)//2)
target = QRect(x, y, w, h) target = QRect(x, y, w, h)
p = QPainter(self) p = QPainter(self)
p.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform) p.setRenderHints(QPainter.Antialiasing | QPainter.SmoothPixmapTransform)
@ -570,7 +571,7 @@ class CompleteLineEdit(EnLineEdit): # {{{
self.completer = ItemsCompleter(self, complete_items) self.completer = ItemsCompleter(self, complete_items)
self.completer.setCaseSensitivity(Qt.CaseInsensitive) self.completer.setCaseSensitivity(Qt.CaseInsensitive)
self.completer.activated[str].connect(self.complete_text) self.completer.activated[native_string_type].connect(self.complete_text)
self.completer.setWidget(self) self.completer.setWidget(self)
@ -888,13 +889,13 @@ class PythonHighlighter(QSyntaxHighlighter): # {{{
self.setFormat(0, textLength, self.setFormat(0, textLength,
PythonHighlighter.Formats["normal"]) PythonHighlighter.Formats["normal"])
if text.startswith(u"Traceback") or text.startswith(u"Error: "): if text.startswith("Traceback") or text.startswith("Error: "):
self.setCurrentBlockState(ERROR) self.setCurrentBlockState(ERROR)
self.setFormat(0, textLength, self.setFormat(0, textLength,
PythonHighlighter.Formats["error"]) PythonHighlighter.Formats["error"])
return return
if prevState == ERROR and \ if prevState == ERROR and \
not (text.startswith(u'>>>') or text.startswith(u"#")): not (text.startswith('>>>') or text.startswith("#")):
self.setCurrentBlockState(ERROR) self.setCurrentBlockState(ERROR)
self.setFormat(0, textLength, self.setFormat(0, textLength,
PythonHighlighter.Formats["error"]) PythonHighlighter.Formats["error"])
@ -913,18 +914,18 @@ class PythonHighlighter(QSyntaxHighlighter): # {{{
# PythonHighlighter.Rules.append((QRegExp(r"#.*"), "comment")) # PythonHighlighter.Rules.append((QRegExp(r"#.*"), "comment"))
if not text: if not text:
pass pass
elif text[0] == u"#": elif text[0] == "#":
self.setFormat(0, len(text), self.setFormat(0, len(text),
PythonHighlighter.Formats["comment"]) PythonHighlighter.Formats["comment"])
else: else:
stack = [] stack = []
for i, c in enumerate(text): for i, c in enumerate(text):
if c in (u'"', u"'"): if c in ('"', "'"):
if stack and stack[-1] == c: if stack and stack[-1] == c:
stack.pop() stack.pop()
else: else:
stack.append(c) stack.append(c)
elif c == u"#" and len(stack) == 0: elif c == "#" and len(stack) == 0:
self.setFormat(i, len(text), self.setFormat(i, len(text),
PythonHighlighter.Formats["comment"]) PythonHighlighter.Formats["comment"])
break break