From 7e49bd7983d7929b076fd40cec4b0a43e7e789fe Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 4 Dec 2013 16:01:45 +0530 Subject: [PATCH] Edit metadata : Add the ability to trim covers manually Edit metadata dialog: Add the ability to trim covers manually, if automatic trimming is not satisfactory. Fixes #1256054 [[Enhancement] Enhanced cover picture trim](https://bugs.launchpad.net/calibre/+bug/1256054) --- src/calibre/gui2/metadata/basic_widgets.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/metadata/basic_widgets.py b/src/calibre/gui2/metadata/basic_widgets.py index 43c7e66b10..7b33b46d77 100644 --- a/src/calibre/gui2/metadata/basic_widgets.py +++ b/src/calibre/gui2/metadata/basic_widgets.py @@ -926,12 +926,15 @@ class Cover(ImageView): # {{{ self.clicked.connect(action) self.select_cover_button = CB(_('&Browse'), 'document_open.png', self.select_cover) - self.trim_cover_button = b = CB(_('T&rim borders'), 'trim.png', self.trim_cover) + self.trim_cover_button = b = CB(_('T&rim borders'), 'trim.png') b.setToolTip(_( 'Automatically detect and remove extra space at the cover\'s edges.\n' 'Pressing it repeatedly can sometimes remove stubborn borders.')) b.m = m = QMenu() - b.setPopupMode(QToolButton.DelayedPopup) + b.setPopupMode(QToolButton.InstantPopup) + m.addAction(QIcon(I('trim.png')), _('Automatically trim borders'), self.trim_cover) + m.addSeparator() + m.addAction(_('Trim borders manually'), self.manual_trim_cover) m.addAction(QIcon(I('edit-undo.png')), _('Undo last trim'), self.undo_trim) b.setMenu(m) self.remove_cover_button = CB(_('&Remove'), 'trash.png', self.remove_cover) @@ -1005,6 +1008,14 @@ class Cover(ImageView): # {{{ self.current_val = im.export('png') self.cdata_before_trim = cdata + def manual_trim_cover(self): + cdata = self.current_val + from calibre.gui2.dialogs.trim_image import TrimImage + d = TrimImage(cdata, parent=self) + if d.exec_() == d.Accepted and d.image_data is not None: + self.current_val = d.image_data + self.cdata_before_trim = cdata + def generate_cover(self, *args): from calibre.ebooks import calibre_cover from calibre.ebooks.metadata import fmt_sidx