From a2f008766e37ff0a3d3e7c2cf679a75435a06ee9 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 5 Nov 2014 22:20:55 +0530 Subject: [PATCH] Add buttons to follow the footnote link and close the footnote window --- src/calibre/gui2/viewer/documentview.py | 5 +++++ src/calibre/gui2/viewer/footnote.py | 18 ++++++++++++++++-- src/calibre/gui2/viewer/ui.py | 2 ++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/viewer/documentview.py b/src/calibre/gui2/viewer/documentview.py index e0a86f3b2d..b436adb395 100644 --- a/src/calibre/gui2/viewer/documentview.py +++ b/src/calibre/gui2/viewer/documentview.py @@ -1334,6 +1334,11 @@ class DocumentView(QWebView): # {{{ self.manager.internal_link_clicked(prev_pos) return ret + def follow_footnote_link(self): + qurl = self.footnotes.showing_url + if qurl and qurl.isValid(): + self.link_clicked(qurl) + # }}} diff --git a/src/calibre/gui2/viewer/footnote.py b/src/calibre/gui2/viewer/footnote.py index ed87e6c4e3..63c0e02a51 100644 --- a/src/calibre/gui2/viewer/footnote.py +++ b/src/calibre/gui2/viewer/footnote.py @@ -9,7 +9,9 @@ __copyright__ = '2014, Kovid Goyal ' import json from collections import defaultdict -from PyQt5.Qt import QUrl, QWidget, QHBoxLayout, QSize, pyqtSlot +from PyQt5.Qt import ( + QUrl, QWidget, QHBoxLayout, QSize, pyqtSlot, QVBoxLayout, QToolButton, + QIcon, pyqtSignal) from PyQt5.QtWebKitWidgets import QWebView, QWebPage from PyQt5.QtWebKit import QWebSettings @@ -62,13 +64,25 @@ class FootnotesPage(QWebPage): class FootnotesView(QWidget): + follow_link = pyqtSignal() + close_view = pyqtSignal() + def __init__(self, parent): QWidget.__init__(self, parent) self.l = l = QHBoxLayout(self) + self.vl = vl = QVBoxLayout() self.view = v = QWebView(self) self._page = FootnotesPage(v) v.setPage(self._page) - l.addWidget(v) + l.addWidget(v), l.addLayout(vl) + self.goto_button = b = QToolButton(self) + b.setIcon(QIcon(I('forward.png'))), b.setToolTip(_('Go to this footnote in the main view')) + b.clicked.connect(self.follow_link) + vl.addWidget(b) + self.close_button = b = QToolButton(self) + b.setIcon(QIcon(I('window-close.png'))), b.setToolTip(_('Close the footnotes window')) + b.clicked.connect(self.close_view) + vl.addWidget(b) def page(self): return self._page diff --git a/src/calibre/gui2/viewer/ui.py b/src/calibre/gui2/viewer/ui.py index 8c382ab37e..e726cf6f97 100644 --- a/src/calibre/gui2/viewer/ui.py +++ b/src/calibre/gui2/viewer/ui.py @@ -272,6 +272,8 @@ class Main(MainWindow): self.footnotes_dock = d = QDockWidget(_('Footnotes'), self) self.footnotes_view = FootnotesView(self) + self.footnotes_view.follow_link.connect(self.view.follow_footnote_link) + self.footnotes_view.close_view.connect(d.close) self.view.footnotes.set_footnotes_view(self.footnotes_view) d.setObjectName('footnotes-dock') d.setWidget(self.footnotes_view)