diff --git a/src/calibre/gui2/dialogs/confirm_merge.py b/src/calibre/gui2/dialogs/confirm_merge.py index 3746bcbb9b..bd79b83e03 100644 --- a/src/calibre/gui2/dialogs/confirm_merge.py +++ b/src/calibre/gui2/dialogs/confirm_merge.py @@ -4,9 +4,10 @@ __license__ = 'GPL v3' __copyright__ = '2015, Kovid Goyal ' +import os from typing import NamedTuple -from qt.core import QCheckBox, QDialog, QDialogButtonBox, QLabel, QSplitter, Qt, QTextBrowser, QVBoxLayout, QWidget +from qt.core import QCheckBox, QDialog, QDialogButtonBox, QLabel, QSplitter, Qt, QTextBrowser, QUrl, QVBoxLayout, QWidget from calibre.ebooks.metadata import authors_to_string from calibre.ebooks.metadata.book.base import field_metadata @@ -26,6 +27,14 @@ class Target(QTextBrowser): fm = field_metadata if mi.series: series = _('{num} of {series}').format(num=mi.format_series_index(), series=f'{mi.series}') + cover_html = has_cover_row = '' + if mi.cover: + cover_html = f''.format() + self.document().setDefaultStyleSheet( + 'img { max-width: 100%; width: 100%; height: auto; display: block; }' + ) + else: + has_cover_row = f"{_('Has cover')}:{_('Yes') if mi.has_cover else _('No')}" self.setHtml('''

{mb}

{title} - {authors}

@@ -34,19 +43,25 @@ class Target(QTextBrowser): {fm[pubdate][name]}:{published} {fm[formats][name]}:{formats} {fm[series][name]}:{series} -{has_cover_title}:{has_cover} +{has_cover_row} +{cover_html} '''.format( mb=_('Target book'), title=mi.title, - has_cover_title=_('Has cover'), has_cover=_('Yes') if mi.has_cover else _('No'), + has_cover_row=has_cover_row, authors=authors_to_string(mi.authors), date=format_date(mi.timestamp, tweaks['gui_timestamp_display_format']), fm=fm, published=(format_date(mi.pubdate, tweaks['gui_pubdate_display_format']) if mi.pubdate else ''), formats=', '.join(mi.formats or ()), - series=series + series=series, cover_html=cover_html, )) + def sizeHint(self): + ans = super().sizeHint() + ans.setHeight(max(600, ans.height())) + return ans + class ConfirmMerge(Dialog): @@ -110,8 +125,13 @@ class ChooseMerge(Dialog): def __init__(self, dest_id, src_ids, gui): self.dest_id, self.src_ids = dest_id, src_ids - self.mi = gui.current_db.new_api.get_metadata(dest_id) + self.mi = gui.current_db.new_api.get_metadata(dest_id, get_cover=True) Dialog.__init__(self, _('Merge books'), 'choose-merge-dialog', parent=gui) + self.finished.connect(self.cleanup_resources) + + def cleanup_resources(self): + if self.mi.cover: + os.remove(self.mi.cover) def setup_ui(self): self.l = l = QVBoxLayout(self)