mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #874689 (Add Remove Cover to book cover)
This commit is contained in:
parent
75a7f77b6b
commit
34d2468e56
@ -204,6 +204,7 @@ def render_data(mi, use_roman_numbers=True, all_fields=False):
|
|||||||
class CoverView(QWidget): # {{{
|
class CoverView(QWidget): # {{{
|
||||||
|
|
||||||
cover_changed = pyqtSignal(object, object)
|
cover_changed = pyqtSignal(object, object)
|
||||||
|
cover_removed = pyqtSignal(object)
|
||||||
|
|
||||||
def __init__(self, vertical, parent=None):
|
def __init__(self, vertical, parent=None):
|
||||||
QWidget.__init__(self, parent)
|
QWidget.__init__(self, parent)
|
||||||
@ -289,10 +290,12 @@ class CoverView(QWidget): # {{{
|
|||||||
cm = QMenu(self)
|
cm = QMenu(self)
|
||||||
paste = cm.addAction(_('Paste Cover'))
|
paste = cm.addAction(_('Paste Cover'))
|
||||||
copy = cm.addAction(_('Copy Cover'))
|
copy = cm.addAction(_('Copy Cover'))
|
||||||
|
remove = cm.addAction(_('Remove Cover'))
|
||||||
if not QApplication.instance().clipboard().mimeData().hasImage():
|
if not QApplication.instance().clipboard().mimeData().hasImage():
|
||||||
paste.setEnabled(False)
|
paste.setEnabled(False)
|
||||||
copy.triggered.connect(self.copy_to_clipboard)
|
copy.triggered.connect(self.copy_to_clipboard)
|
||||||
paste.triggered.connect(self.paste_from_clipboard)
|
paste.triggered.connect(self.paste_from_clipboard)
|
||||||
|
remove.triggered.connect(self.remove_cover)
|
||||||
cm.exec_(ev.globalPos())
|
cm.exec_(ev.globalPos())
|
||||||
|
|
||||||
def copy_to_clipboard(self):
|
def copy_to_clipboard(self):
|
||||||
@ -315,6 +318,13 @@ class CoverView(QWidget): # {{{
|
|||||||
self.cover_changed.emit(id_,
|
self.cover_changed.emit(id_,
|
||||||
pixmap_to_data(pmap))
|
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)
|
remote_file_dropped = pyqtSignal(object, object)
|
||||||
files_dropped = pyqtSignal(object, object)
|
files_dropped = pyqtSignal(object, object)
|
||||||
cover_changed = pyqtSignal(object, object)
|
cover_changed = pyqtSignal(object, object)
|
||||||
|
cover_removed = pyqtSignal(object)
|
||||||
|
|
||||||
# Drag 'n drop {{{
|
# Drag 'n drop {{{
|
||||||
DROPABBLE_EXTENSIONS = IMAGE_EXTENSIONS+BOOK_EXTENSIONS
|
DROPABBLE_EXTENSIONS = IMAGE_EXTENSIONS+BOOK_EXTENSIONS
|
||||||
@ -514,6 +525,7 @@ class BookDetails(QWidget): # {{{
|
|||||||
|
|
||||||
self.cover_view = CoverView(vertical, self)
|
self.cover_view = CoverView(vertical, self)
|
||||||
self.cover_view.cover_changed.connect(self.cover_changed.emit)
|
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._layout.addWidget(self.cover_view)
|
||||||
self.book_info = BookInfo(vertical, self)
|
self.book_info = BookInfo(vertical, self)
|
||||||
self._layout.addWidget(self.book_info)
|
self._layout.addWidget(self.book_info)
|
||||||
|
@ -261,6 +261,8 @@ class LayoutMixin(object): # {{{
|
|||||||
self.book_details.files_dropped.connect(self.iactions['Add Books'].files_dropped_on_book)
|
self.book_details.files_dropped.connect(self.iactions['Add Books'].files_dropped_on_book)
|
||||||
self.book_details.cover_changed.connect(self.bd_cover_changed,
|
self.book_details.cover_changed.connect(self.bd_cover_changed,
|
||||||
type=Qt.QueuedConnection)
|
type=Qt.QueuedConnection)
|
||||||
|
self.book_details.cover_removed.connect(self.bd_cover_removed,
|
||||||
|
type=Qt.QueuedConnection)
|
||||||
self.book_details.remote_file_dropped.connect(
|
self.book_details.remote_file_dropped.connect(
|
||||||
self.iactions['Add Books'].remote_file_dropped_on_book,
|
self.iactions['Add Books'].remote_file_dropped_on_book,
|
||||||
type=Qt.QueuedConnection)
|
type=Qt.QueuedConnection)
|
||||||
@ -279,6 +281,12 @@ class LayoutMixin(object): # {{{
|
|||||||
if self.cover_flow:
|
if self.cover_flow:
|
||||||
self.cover_flow.dataChanged()
|
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):
|
def save_layout_state(self):
|
||||||
for x in ('library', 'memory', 'card_a', 'card_b'):
|
for x in ('library', 'memory', 'card_a', 'card_b'):
|
||||||
getattr(self, x+'_view').save_state()
|
getattr(self, x+'_view').save_state()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user