mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Book details panel: Allow saving the displayed cover to disk via the right click context menu. Fixes #1728251 [Save cover by right clicking](https://bugs.launchpad.net/calibre/+bug/1728251)
This commit is contained in:
parent
1dfe8ebee8
commit
e29e8c2b28
@ -2,7 +2,8 @@
|
|||||||
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
||||||
# License: GPLv3 Copyright: 2010, Kovid Goyal <kovid at kovidgoyal.net>
|
# License: GPLv3 Copyright: 2010, Kovid Goyal <kovid at kovidgoyal.net>
|
||||||
|
|
||||||
import cPickle, re
|
import cPickle
|
||||||
|
import re
|
||||||
from binascii import unhexlify
|
from binascii import unhexlify
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from functools import partial
|
from functools import partial
|
||||||
@ -23,8 +24,8 @@ from calibre.ebooks.metadata.search_internet import (
|
|||||||
url_for_book_search
|
url_for_book_search
|
||||||
)
|
)
|
||||||
from calibre.gui2 import (
|
from calibre.gui2 import (
|
||||||
NO_URL_FORMATTING, config, default_author_link, gprefs, open_url, pixmap_to_data,
|
NO_URL_FORMATTING, choose_save_file, config, default_author_link, gprefs,
|
||||||
rating_font
|
open_url, pixmap_to_data, rating_font
|
||||||
)
|
)
|
||||||
from calibre.gui2.dnd import (
|
from calibre.gui2.dnd import (
|
||||||
dnd_get_files, dnd_get_image, dnd_has_extension, dnd_has_image, image_extensions
|
dnd_get_files, dnd_get_image, dnd_has_extension, dnd_has_image, image_extensions
|
||||||
@ -393,6 +394,7 @@ 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'))
|
||||||
|
save = cm.addAction(_('Save cover to disk'))
|
||||||
remove = cm.addAction(_('Remove cover'))
|
remove = cm.addAction(_('Remove cover'))
|
||||||
gc = cm.addAction(_('Generate cover from metadata'))
|
gc = cm.addAction(_('Generate cover from metadata'))
|
||||||
cm.addSeparator()
|
cm.addSeparator()
|
||||||
@ -402,6 +404,7 @@ class CoverView(QWidget): # {{{
|
|||||||
paste.triggered.connect(self.paste_from_clipboard)
|
paste.triggered.connect(self.paste_from_clipboard)
|
||||||
remove.triggered.connect(self.remove_cover)
|
remove.triggered.connect(self.remove_cover)
|
||||||
gc.triggered.connect(self.generate_cover)
|
gc.triggered.connect(self.generate_cover)
|
||||||
|
save.triggered.connect(self.save_cover)
|
||||||
|
|
||||||
m = QMenu(_('Open cover with...'))
|
m = QMenu(_('Open cover with...'))
|
||||||
populate_menu(m, self.open_with, 'cover_image')
|
populate_menu(m, self.open_with, 'cover_image')
|
||||||
@ -440,6 +443,18 @@ class CoverView(QWidget): # {{{
|
|||||||
if not pmap.isNull():
|
if not pmap.isNull():
|
||||||
self.update_cover(pmap)
|
self.update_cover(pmap)
|
||||||
|
|
||||||
|
def save_cover(self):
|
||||||
|
from calibre.gui2.ui import get_gui
|
||||||
|
book_id = self.data.get('id')
|
||||||
|
db = get_gui().current_db.new_api
|
||||||
|
path = choose_save_file(
|
||||||
|
self, 'save-cover-from-book-details', _('Choose cover save location'),
|
||||||
|
filters=[(_('JPEG images'), ['jpg', 'jpeg'])], all_files=False,
|
||||||
|
initial_filename='{}.jpeg'.format(db.field_for('title', book_id, default_value='cover'))
|
||||||
|
)
|
||||||
|
if path:
|
||||||
|
db.copy_cover_to(book_id, path)
|
||||||
|
|
||||||
def update_cover(self, pmap=None, cdata=None):
|
def update_cover(self, pmap=None, cdata=None):
|
||||||
if pmap is None:
|
if pmap is None:
|
||||||
pmap = QPixmap()
|
pmap = QPixmap()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user