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