From 52a757e715d57f35b054c8ca1b6cf5ec2e86f39b Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 29 Oct 2016 14:06:45 +0530 Subject: [PATCH] Book details panel: Adda copy all action to the right click menu. Fixes #1633477 [[Enhancement] Context Menu in Book Details window](https://bugs.launchpad.net/calibre/+bug/1633477) --- src/calibre/gui2/book_details.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index ac7267525c..714d7c66f6 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -12,7 +12,7 @@ from functools import partial from PyQt5.Qt import (QPixmap, QSize, QWidget, Qt, pyqtSignal, QUrl, QIcon, QPropertyAnimation, QEasingCurve, QApplication, QFontInfo, QAction, QSizePolicy, QPainter, QRect, pyqtProperty, QLayout, QPalette, QMenu, - QPen, QColor) + QPen, QColor, QMimeData) from PyQt5.QtWebKitWidgets import QWebView from calibre import fit_image @@ -38,6 +38,16 @@ def css(): return _css +def copy_all(web_view): + web_view = getattr(web_view, 'details', web_view) + mf = web_view.page().mainFrame() + c = QApplication.clipboard() + md = QMimeData() + md.setText(mf.toPlainText()) + md.setHtml(mf.toHtml()) + c.setMimeData(md) + + def render_html(mi, css, vertical, widget, all_fields=False, render_data_func=None): # {{{ table, comment_fields = (render_data_func or render_data)(mi, all_fields=all_fields, use_roman_numbers=config['use_roman_numerals_for_series_number']) @@ -132,6 +142,7 @@ def details_context_menu_event(view, ev, book_info): # {{{ for action in list(menu.actions()): if action is not ca: menu.removeAction(action) + menu.addAction(QIcon(I('edit-copy.png')), _('Copy &all'), partial(copy_all, book_info)) if not r.isNull(): if url.startswith('format:'): parts = url.split(':')