--- a/src/eric7/PdfViewer/PdfViewerWindow.py Sun Jan 15 17:41:35 2023 +0100 +++ b/src/eric7/PdfViewer/PdfViewerWindow.py Mon Jan 16 11:56:23 2023 +0100 @@ -30,6 +30,8 @@ from .PdfPageSelector import PdfPageSelector from .PdfZoomSelector import PdfZoomSelector +from .PdfToCWidget import PdfToCWidget +from .PdfInfoWidget import PdfInfoWidget class PdfViewerWindow(EricMainWindow): @@ -82,6 +84,21 @@ self.__cw.addWidget(self.__view) self.setCentralWidget(self.__cw) + # create the various info widgets + self.__documentInfoWidget = PdfInfoWidget(self.__pdfDocument, self) + index = self.__info.addTab( + self.__documentInfoWidget, EricPixmapCache.getIcon("documentProperties"), "" + ) + self.__info.setTabToolTip(index, self.tr("Document Properties")) + + self.__tocWidget = PdfToCWidget(self.__pdfDocument, self) + index = self.__info.addTab( + self.__tocWidget, EricPixmapCache.getIcon("listSelection"), "" + ) + self.__info.setTabToolTip(index, self.tr("Table of Contents")) + + self.__info.setCurrentWidget(self.__tocWidget) + # create a few widgets needed in the toolbars self.__pageSelector = PdfPageSelector(self) self.__pageSelector.setDocument(self.__pdfDocument) @@ -122,6 +139,8 @@ self.__view.zoomFactorChanged.connect(self.__zoomSelector.setZoomFactor) self.__view.zoomModeChanged.connect(self.__zoomSelector.setZoomMode) + self.__tocWidget.topicActivated.connect(self.__tocActivated) + PdfViewerWindow.windows.append(self) self.__restoreViewerState() @@ -784,6 +803,7 @@ """<p>Reason: {1}</p>""" ).format(fileName, self.__getErrorString(err)), ) + self.__documentInfoWidget.setFileName("") return self.__lastOpenPath = os.path.dirname(fileName) @@ -796,6 +816,10 @@ self.__pageSelector.setMaximum(self.__pdfDocument.pageCount() - 1) self.__pageSelector.setValue(0) + self.__documentInfoWidget.setFileName(fileName) + + self.__info.setCurrentWidget(self.__tocWidget) + @pyqtSlot() def __reload(self): """ @@ -881,6 +905,19 @@ self.__checkActions() + @pyqtSlot(int, float) + def __tocActivated(self, page, zoomFactor): + """ + Private slot to handle the selection of a ToC topic. + + @param page page number + @type int + @param zoomFactor zoom factor + @type float + """ + nav = self.__view.pageNavigator() + nav.jump(page, QPointF(), zoomFactor) + def __setCurrentFile(self, fileName): """ Private method to register the file name of the current file.