mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Show the view changes button only if there are some actual changes
This commit is contained in:
parent
f630484554
commit
4fadc7dacc
@ -147,3 +147,4 @@ def remove_unused_css(container, report):
|
||||
report(_('Removed %d unused CSS style rules') % num_of_removed_rules)
|
||||
else:
|
||||
report(_('No unused CSS style rules found'))
|
||||
return num_of_removed_rules > 0
|
||||
|
@ -116,7 +116,7 @@ def embed_all_fonts(container, stats, report):
|
||||
|
||||
if not rules:
|
||||
report(_('No embeddable fonts found'))
|
||||
return
|
||||
return False
|
||||
|
||||
# Write out CSS
|
||||
rules = [';\n\t'.join('%s: %s' % (
|
||||
@ -135,6 +135,7 @@ def embed_all_fonts(container, stats, report):
|
||||
href = container.name_to_href(name, spine_name)
|
||||
etree.SubElement(head, XHTML('link'), rel='stylesheet', type='text/css', href=href).tail = '\n'
|
||||
container.dirty(spine_name)
|
||||
return True
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
@ -132,11 +132,13 @@ def update_metadata(ebook, new_opf):
|
||||
def polish_one(ebook, opts, report):
|
||||
rt = lambda x: report('\n### ' + x)
|
||||
jacket = None
|
||||
changed = False
|
||||
|
||||
if opts.subset or opts.embed:
|
||||
stats = StatsCollector(ebook, do_embed=opts.embed)
|
||||
|
||||
if opts.opf:
|
||||
changed = True
|
||||
rt(_('Updating metadata'))
|
||||
update_metadata(ebook, opts.opf)
|
||||
jacket = find_existing_jacket(ebook)
|
||||
@ -146,11 +148,13 @@ def polish_one(ebook, opts, report):
|
||||
report(_('Metadata updated\n'))
|
||||
|
||||
if opts.cover:
|
||||
changed = True
|
||||
rt(_('Setting cover'))
|
||||
set_cover(ebook, opts.cover, report)
|
||||
report('')
|
||||
|
||||
if opts.jacket:
|
||||
changed = True
|
||||
rt(_('Inserting metadata jacket'))
|
||||
if jacket is None:
|
||||
if add_or_replace_jacket(ebook):
|
||||
@ -165,30 +169,37 @@ def polish_one(ebook, opts, report):
|
||||
rt(_('Removing metadata jacket'))
|
||||
if remove_jacket(ebook):
|
||||
report(_('Metadata jacket removed'))
|
||||
changed = True
|
||||
else:
|
||||
report(_('No metadata jacket found'))
|
||||
report('')
|
||||
|
||||
if opts.smarten_punctuation:
|
||||
rt(_('Smartening punctuation'))
|
||||
smarten_punctuation(ebook, report)
|
||||
if smarten_punctuation(ebook, report):
|
||||
changed = True
|
||||
report('')
|
||||
|
||||
if opts.embed:
|
||||
rt(_('Embedding referenced fonts'))
|
||||
embed_all_fonts(ebook, stats, report)
|
||||
if embed_all_fonts(ebook, stats, report):
|
||||
changed = True
|
||||
report('')
|
||||
|
||||
if opts.subset:
|
||||
rt(_('Subsetting embedded fonts'))
|
||||
subset_all_fonts(ebook, stats.font_stats, report)
|
||||
if subset_all_fonts(ebook, stats.font_stats, report):
|
||||
changed = True
|
||||
report('')
|
||||
|
||||
if opts.remove_unused_css:
|
||||
rt(_('Removing unused CSS rules'))
|
||||
remove_unused_css(ebook, report)
|
||||
if remove_unused_css(ebook, report):
|
||||
changed = True
|
||||
report('')
|
||||
|
||||
return changed
|
||||
|
||||
|
||||
def polish(file_map, opts, log, report):
|
||||
st = time.time()
|
||||
@ -228,8 +239,8 @@ def tweak_polish(container, actions):
|
||||
O = namedtuple('Options', ' '.join(ALL_OPTS.iterkeys()))
|
||||
opts = O(**opts)
|
||||
report = []
|
||||
polish_one(container, opts, report.append)
|
||||
return report
|
||||
changed = polish_one(container, opts, report.append)
|
||||
return report, changed
|
||||
|
||||
def option_parser():
|
||||
from calibre.utils.config import OptionParser
|
||||
|
@ -104,6 +104,7 @@ def smarten_punctuation(container, report):
|
||||
smartened = True
|
||||
if not smartened:
|
||||
report(_('No punctuation that could be smartened found'))
|
||||
return smartened
|
||||
|
||||
def rename_files(container, file_map):
|
||||
overlap = set(file_map).intersection(set(file_map.itervalues()))
|
||||
|
@ -35,6 +35,7 @@ def remove_font_face_rules(container, sheet, remove_names, base):
|
||||
def subset_all_fonts(container, font_stats, report):
|
||||
remove = set()
|
||||
total_old = total_new = 0
|
||||
changed = False
|
||||
for name, mt in container.mime_map.iteritems():
|
||||
if (mt in OEB_FONTS or name.rpartition('.')[-1].lower() in {'otf', 'ttf'}) and mt != guess_type('a.woff'):
|
||||
chars = font_stats.get(name, set())
|
||||
@ -69,10 +70,12 @@ def subset_all_fonts(container, font_stats, report):
|
||||
else:
|
||||
report('Decreased the font %s to %.1f%% of its original size'%
|
||||
(font_name, nlen/olen * 100))
|
||||
changed = True
|
||||
f.seek(0), f.truncate(), f.write(nraw)
|
||||
|
||||
for name in remove:
|
||||
container.remove_item(name)
|
||||
changed = True
|
||||
|
||||
if remove:
|
||||
for name, mt in container.mime_map.iteritems():
|
||||
@ -92,6 +95,7 @@ def subset_all_fonts(container, font_stats, report):
|
||||
total_new/total_old*100))
|
||||
else:
|
||||
report('No embedded fonts found')
|
||||
return changed
|
||||
|
||||
if __name__ == '__main__':
|
||||
from calibre.ebooks.oeb.polish.container import get_container
|
||||
|
@ -372,7 +372,7 @@ class Boss(QObject):
|
||||
with BusyCursor():
|
||||
self.add_savepoint(name)
|
||||
try:
|
||||
report = tweak_polish(current_container(), {action:True})
|
||||
report, changed = tweak_polish(current_container(), {action:True})
|
||||
except:
|
||||
self.rewind_savepoint()
|
||||
raise
|
||||
@ -386,6 +386,7 @@ class Boss(QObject):
|
||||
d.l.addWidget(d.e)
|
||||
d.e.setHtml(report)
|
||||
d.bb = QDialogButtonBox(QDialogButtonBox.Close)
|
||||
if changed:
|
||||
b = d.b = d.bb.addButton(_('See what changed'), d.bb.AcceptRole)
|
||||
b.setIcon(QIcon(I('diff.png')))
|
||||
b.clicked.connect(partial(self.show_current_diff, allow_revert=True))
|
||||
|
Loading…
x
Reference in New Issue
Block a user