mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #826
This commit is contained in:
parent
566665a057
commit
8f2800d301
@ -1085,29 +1085,48 @@ class Main(MainWindow, Ui_MainWindow):
|
|||||||
self.device_error_dialog.show()
|
self.device_error_dialog.show()
|
||||||
|
|
||||||
def conversion_job_exception(self, id, description, exception, formatted_traceback, log):
|
def conversion_job_exception(self, id, description, exception, formatted_traceback, log):
|
||||||
|
|
||||||
|
def safe_print(msgs, file=sys.stderr):
|
||||||
|
for i, msg in enumerate(msgs):
|
||||||
|
if not msg:
|
||||||
|
msg = ''
|
||||||
|
if isinstance(msg, unicode):
|
||||||
|
msgs[i] = msg.encode(preferred_encoding, 'replace')
|
||||||
|
msg = ' '.join(msgs)
|
||||||
|
print >>file, msg
|
||||||
|
|
||||||
|
def safe_unicode(self, arg):
|
||||||
|
if not arg:
|
||||||
|
arg = unicode(repr(arg))
|
||||||
|
if isinstance(arg, str):
|
||||||
|
arg = arg.decode(preferred_encoding, 'replace')
|
||||||
|
if not isinstance(arg, unicode):
|
||||||
try:
|
try:
|
||||||
print >>sys.stderr, 'Error in job:', description.encode('utf8')
|
arg = unicode(repr(arg))
|
||||||
|
except:
|
||||||
|
arg = u'Could not convert to unicode'
|
||||||
|
return arg
|
||||||
|
|
||||||
|
only_msg = getattr(exception, 'only_msg', False)
|
||||||
|
description, exception, formatted_traceback, log = map(safe_unicode,
|
||||||
|
(description, exception, formatted_traceback, log))
|
||||||
|
try:
|
||||||
|
safe_print('Error in job:', description)
|
||||||
if log:
|
if log:
|
||||||
print >>sys.stderr, log.encode('utf8', 'ignore') if isinstance(log, unicode) else log
|
safe_print(log)
|
||||||
print >>sys.stderr, exception
|
safe_print(exception)
|
||||||
print >>sys.stderr, formatted_traceback.encode('utf8', 'ignore') if isinstance(formatted_traceback, unicode) else formatted_traceback
|
safe_print(formatted_traceback)
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
if getattr(exception, 'only_msg', False):
|
if only_msg:
|
||||||
error_dialog(self, _('Conversion Error'), unicode(exception)).exec_()
|
error_dialog(self, _('Conversion Error'), exception).exec_()
|
||||||
return
|
return
|
||||||
try:
|
|
||||||
msg = u'<p><b>%s</b>:'%exception
|
msg = u'<p><b>%s</b>:'%exception
|
||||||
except:
|
|
||||||
msg = u'<p><b>%s</b>: %s'%exception
|
|
||||||
msg += u'<p>Failed to perform <b>job</b>: '+description
|
msg += u'<p>Failed to perform <b>job</b>: '+description
|
||||||
msg += u'<p>Detailed <b>traceback</b>:<pre>'
|
msg += u'<p>Detailed <b>traceback</b>:<pre>'
|
||||||
if not isinstance(formatted_traceback, unicode):
|
msg += formatted_traceback + u'</pre>'
|
||||||
formatted_traceback = formatted_traceback.decode(preferred_encoding, 'replace')
|
msg += u'<p><b>Log:</b></p><pre>'
|
||||||
msg += formatted_traceback + '</pre>'
|
msg += log
|
||||||
msg += '<p><b>Log:</b></p><pre>'
|
|
||||||
if log:
|
|
||||||
msg += log.encode('utf8', 'ignore') if isinstance(log, unicode) else log.decode('utf8', 'ignore')
|
|
||||||
ConversionErrorDialog(self, 'Conversion Error', msg, show=True)
|
ConversionErrorDialog(self, 'Conversion Error', msg, show=True)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user