From 34d2468e56af9ce13241b18d597f78a41241d191 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 15 Oct 2011 10:00:04 +0530 Subject: [PATCH] Fix #874689 (Add Remove Cover to book cover) --- src/calibre/gui2/book_details.py | 12 ++++++++++++ src/calibre/gui2/init.py | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index e8968b7cf5..fc05c86531 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -204,6 +204,7 @@ def render_data(mi, use_roman_numbers=True, all_fields=False): class CoverView(QWidget): # {{{ cover_changed = pyqtSignal(object, object) + cover_removed = pyqtSignal(object) def __init__(self, vertical, parent=None): QWidget.__init__(self, parent) @@ -289,10 +290,12 @@ class CoverView(QWidget): # {{{ cm = QMenu(self) paste = cm.addAction(_('Paste Cover')) copy = cm.addAction(_('Copy Cover')) + remove = cm.addAction(_('Remove Cover')) if not QApplication.instance().clipboard().mimeData().hasImage(): paste.setEnabled(False) copy.triggered.connect(self.copy_to_clipboard) paste.triggered.connect(self.paste_from_clipboard) + remove.triggered.connect(self.remove_cover) cm.exec_(ev.globalPos()) def copy_to_clipboard(self): @@ -315,6 +318,13 @@ class CoverView(QWidget): # {{{ self.cover_changed.emit(id_, pixmap_to_data(pmap)) + def remove_cover(self): + id_ = self.data.get('id', None) + self.pixmap = self.default_pixmap + self.do_layout() + self.update() + if id_ is not None: + self.cover_removed.emit(id_) # }}} @@ -457,6 +467,7 @@ class BookDetails(QWidget): # {{{ remote_file_dropped = pyqtSignal(object, object) files_dropped = pyqtSignal(object, object) cover_changed = pyqtSignal(object, object) + cover_removed = pyqtSignal(object) # Drag 'n drop {{{ DROPABBLE_EXTENSIONS = IMAGE_EXTENSIONS+BOOK_EXTENSIONS @@ -514,6 +525,7 @@ class BookDetails(QWidget): # {{{ self.cover_view = CoverView(vertical, self) self.cover_view.cover_changed.connect(self.cover_changed.emit) + self.cover_view.cover_removed.connect(self.cover_removed.emit) self._layout.addWidget(self.cover_view) self.book_info = BookInfo(vertical, self) self._layout.addWidget(self.book_info) diff --git a/src/calibre/gui2/init.py b/src/calibre/gui2/init.py index 1700a9aced..cccf76e713 100644 --- a/src/calibre/gui2/init.py +++ b/src/calibre/gui2/init.py @@ -261,6 +261,8 @@ class LayoutMixin(object): # {{{ self.book_details.files_dropped.connect(self.iactions['Add Books'].files_dropped_on_book) self.book_details.cover_changed.connect(self.bd_cover_changed, type=Qt.QueuedConnection) + self.book_details.cover_removed.connect(self.bd_cover_removed, + type=Qt.QueuedConnection) self.book_details.remote_file_dropped.connect( self.iactions['Add Books'].remote_file_dropped_on_book, type=Qt.QueuedConnection) @@ -279,6 +281,12 @@ class LayoutMixin(object): # {{{ if self.cover_flow: self.cover_flow.dataChanged() + def bd_cover_removed(self, id_): + self.library_view.model().db.remove_cover(id_, commit=True, + notify=False) + if self.cover_flow: + self.cover_flow.dataChanged() + def save_layout_state(self): for x in ('library', 'memory', 'card_a', 'card_b'): getattr(self, x+'_view').save_state()