src/eric7/PdfViewer/PdfViewerWindow.py

branch
pdf_viewer
changeset 9702
7c973954919d
parent 9700
b74a13a382a8
child 9704
6e1650b9b3b5
diff -r b74a13a382a8 -r 7c973954919d src/eric7/PdfViewer/PdfViewerWindow.py
--- 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.

eric ide

mercurial