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)