mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Auto-fixing of individual errors
This commit is contained in:
parent
8df0f92750
commit
79b13973a1
@ -705,13 +705,13 @@ class Boss(QObject):
|
|||||||
c.run_checks(current_container())
|
c.run_checks(current_container())
|
||||||
|
|
||||||
@in_thread_job
|
@in_thread_job
|
||||||
def fix_requested(self):
|
def fix_requested(self, errors):
|
||||||
self.commit_all_editors_to_container()
|
self.commit_all_editors_to_container()
|
||||||
self.add_savepoint(_('Auto-fix errors'))
|
self.add_savepoint(_('Auto-fix errors'))
|
||||||
c = self.gui.check_book
|
c = self.gui.check_book
|
||||||
c.parent().show()
|
c.parent().show()
|
||||||
c.parent().raise_()
|
c.parent().raise_()
|
||||||
changed = c.fix_errors(current_container())
|
changed = c.fix_errors(current_container(), errors)
|
||||||
if changed:
|
if changed:
|
||||||
self.apply_container_update_to_gui()
|
self.apply_container_update_to_gui()
|
||||||
self.set_modified()
|
self.set_modified()
|
||||||
|
@ -39,7 +39,7 @@ class Check(QSplitter):
|
|||||||
|
|
||||||
item_activated = pyqtSignal(object)
|
item_activated = pyqtSignal(object)
|
||||||
check_requested = pyqtSignal()
|
check_requested = pyqtSignal()
|
||||||
fix_requested = pyqtSignal()
|
fix_requested = pyqtSignal(object)
|
||||||
|
|
||||||
def __init__(self, parent=None):
|
def __init__(self, parent=None):
|
||||||
QSplitter.__init__(self, parent)
|
QSplitter.__init__(self, parent)
|
||||||
@ -79,7 +79,12 @@ class Check(QSplitter):
|
|||||||
elif url == 'run:check':
|
elif url == 'run:check':
|
||||||
self.check_requested.emit()
|
self.check_requested.emit()
|
||||||
elif url == 'fix:errors':
|
elif url == 'fix:errors':
|
||||||
self.fix_requested.emit()
|
errors = [self.items.item(i).data(Qt.UserRole).toPyObject() for i in xrange(self.items.count())]
|
||||||
|
self.fix_requested.emit(errors)
|
||||||
|
elif url.startswith('fix:error,'):
|
||||||
|
num = int(url.rpartition(',')[-1])
|
||||||
|
errors = [self.items.item(num).data(Qt.UserRole).toPyObject()]
|
||||||
|
self.fix_requested.emit(errors)
|
||||||
|
|
||||||
def next_error(self, delta=1):
|
def next_error(self, delta=1):
|
||||||
row = self.items.currentRow()
|
row = self.items.currentRow()
|
||||||
@ -108,13 +113,18 @@ class Check(QSplitter):
|
|||||||
loc += ' column: %d' % err.col
|
loc += ' column: %d' % err.col
|
||||||
if loc:
|
if loc:
|
||||||
loc = ' (%s)' % loc
|
loc = ' (%s)' % loc
|
||||||
|
ifix = ''
|
||||||
|
if err.INDIVIDUAL_FIX:
|
||||||
|
ifix = '<a href="fix:error,%d" title="%s">%s</a><br><br>' % (
|
||||||
|
self.items.currentRow(), _('Try to fix only this error'), err.INDIVIDUAL_FIX)
|
||||||
|
|
||||||
self.help.setText(
|
self.help.setText(
|
||||||
'''<style>a { text-decoration: none}</style><h2>%s [%d]</h2>
|
'''<style>a { text-decoration: none}</style><h2>%s [%d]</h2>
|
||||||
<div><a href="activate:item" title="%s">%s %s</a></div>
|
<div><a href="activate:item" title="%s">%s %s</a></div>
|
||||||
<p>%s</p>
|
<p>%s</p>
|
||||||
<div><a href="fix:errors" title="%s">%s</a><br><br>
|
<div>%s<a href="fix:errors" title="%s">%s</a><br><br>
|
||||||
<a href="run:check" title="%s">%s</a></div>
|
<a href="run:check" title="%s">%s</a></div>
|
||||||
''' % (header, self.items.currentRow()+1, _('Click to open in editor'), err.name, loc, err.HELP,
|
''' % (header, self.items.currentRow()+1, _('Click to open in editor'), err.name, loc, err.HELP, ifix,
|
||||||
_('Try to fix all errors automatically. Only works for some types of error.'), _('Try fixing errors automatically'),
|
_('Try to fix all errors automatically. Only works for some types of error.'), _('Try fixing errors automatically'),
|
||||||
_('Re-run the check'), _('Re-run check')))
|
_('Re-run the check'), _('Re-run check')))
|
||||||
|
|
||||||
@ -137,10 +147,9 @@ class Check(QSplitter):
|
|||||||
else:
|
else:
|
||||||
self.clear_help(_('No problems found'))
|
self.clear_help(_('No problems found'))
|
||||||
|
|
||||||
def fix_errors(self, container):
|
def fix_errors(self, container, errors):
|
||||||
from calibre.gui2.tweak_book.boss import BusyCursor
|
from calibre.gui2.tweak_book.boss import BusyCursor
|
||||||
with BusyCursor():
|
with BusyCursor():
|
||||||
errors = [self.items.item(i).data(Qt.UserRole).toPyObject() for i in xrange(self.items.count())]
|
|
||||||
self.show_busy(_('Running fixers, please wait...'))
|
self.show_busy(_('Running fixers, please wait...'))
|
||||||
QApplication.processEvents()
|
QApplication.processEvents()
|
||||||
changed = fix_errors(container, errors)
|
changed = fix_errors(container, errors)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user