Fix #1903270 [[Enhancement] Add ability to undo Generate cover in the Edit metadata screen](https://bugs.launchpad.net/calibre/+bug/1903270)

This commit is contained in:
Kovid Goyal 2020-11-26 16:43:12 +05:30
parent 15edcbfdb8
commit 7b7bcd6468
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -1094,7 +1094,7 @@ class Cover(ImageView): # {{{
self.dialog = parent self.dialog = parent
self._cdata = None self._cdata = None
self.draw_border = False self.draw_border = False
self.cdata_before_trim = None self.cdata_before_trim = self.cdata_before_generate = None
self.cover_changed.connect(self.set_pixmap_from_data) self.cover_changed.connect(self.set_pixmap_from_data)
class CB(RightClickButton): class CB(RightClickButton):
@ -1128,6 +1128,7 @@ class Cover(ImageView): # {{{
b.m = m = QMenu(b) b.m = m = QMenu(b)
b.setMenu(m) b.setMenu(m)
m.addAction(QIcon(I('config.png')), _('Customize the styles and colors of the generated cover'), self.custom_cover) m.addAction(QIcon(I('config.png')), _('Customize the styles and colors of the generated cover'), self.custom_cover)
m.addAction(QIcon(I('edit-undo.png')), _('Undo last Generate cover'), self.undo_generate)
b.setPopupMode(b.DelayedPopup) b.setPopupMode(b.DelayedPopup)
self.buttons = [self.select_cover_button, self.remove_cover_button, self.buttons = [self.select_cover_button, self.remove_cover_button,
self.trim_cover_button, self.download_cover_button, self.trim_cover_button, self.download_cover_button,
@ -1142,6 +1143,11 @@ class Cover(ImageView): # {{{
self.current_val = self.cdata_before_trim self.current_val = self.cdata_before_trim
self.cdata_before_trim = None self.cdata_before_trim = None
def undo_generate(self):
if self.cdata_before_generate:
self.current_val = self.cdata_before_generate
self.cdata_before_generate = None
def frame_resized(self, ev): def frame_resized(self, ev):
sz = ev.size() sz = ev.size()
self.frame_size = (sz.width()//3, sz.height()) self.frame_size = (sz.width()//3, sz.height())
@ -1208,6 +1214,7 @@ class Cover(ImageView): # {{{
def generate_cover(self, *args): def generate_cover(self, *args):
from calibre.ebooks.covers import generate_cover from calibre.ebooks.covers import generate_cover
mi = self.dialog.to_book_metadata() mi = self.dialog.to_book_metadata()
self.cdata_before_generate = self.current_val
self.current_val = generate_cover(mi) self.current_val = generate_cover(mi)
def custom_cover(self): def custom_cover(self):