28 from eric7.Globals import recentNamePdfFiles |
28 from eric7.Globals import recentNamePdfFiles |
29 from eric7.SystemUtilities import FileSystemUtilities |
29 from eric7.SystemUtilities import FileSystemUtilities |
30 |
30 |
31 from .PdfPageSelector import PdfPageSelector |
31 from .PdfPageSelector import PdfPageSelector |
32 from .PdfZoomSelector import PdfZoomSelector |
32 from .PdfZoomSelector import PdfZoomSelector |
|
33 from .PdfToCWidget import PdfToCWidget |
|
34 from .PdfInfoWidget import PdfInfoWidget |
33 |
35 |
34 |
36 |
35 class PdfViewerWindow(EricMainWindow): |
37 class PdfViewerWindow(EricMainWindow): |
36 """ |
38 """ |
37 Class implementing the PDF viewer main window. |
39 Class implementing the PDF viewer main window. |
80 self.__view = QPdfView(self) |
82 self.__view = QPdfView(self) |
81 self.__view.setDocument(self.__pdfDocument) |
83 self.__view.setDocument(self.__pdfDocument) |
82 self.__cw.addWidget(self.__view) |
84 self.__cw.addWidget(self.__view) |
83 self.setCentralWidget(self.__cw) |
85 self.setCentralWidget(self.__cw) |
84 |
86 |
|
87 # create the various info widgets |
|
88 self.__documentInfoWidget = PdfInfoWidget(self.__pdfDocument, self) |
|
89 index = self.__info.addTab( |
|
90 self.__documentInfoWidget, EricPixmapCache.getIcon("documentProperties"), "" |
|
91 ) |
|
92 self.__info.setTabToolTip(index, self.tr("Document Properties")) |
|
93 |
|
94 self.__tocWidget = PdfToCWidget(self.__pdfDocument, self) |
|
95 index = self.__info.addTab( |
|
96 self.__tocWidget, EricPixmapCache.getIcon("listSelection"), "" |
|
97 ) |
|
98 self.__info.setTabToolTip(index, self.tr("Table of Contents")) |
|
99 |
|
100 self.__info.setCurrentWidget(self.__tocWidget) |
|
101 |
85 # create a few widgets needed in the toolbars |
102 # create a few widgets needed in the toolbars |
86 self.__pageSelector = PdfPageSelector(self) |
103 self.__pageSelector = PdfPageSelector(self) |
87 self.__pageSelector.setDocument(self.__pdfDocument) |
104 self.__pageSelector.setDocument(self.__pdfDocument) |
88 self.__view.pageNavigator().currentPageChanged.connect( |
105 self.__view.pageNavigator().currentPageChanged.connect( |
89 self.__pageSelector.setValue |
106 self.__pageSelector.setValue |
119 self.__zoomSelector.zoomModeChanged.connect(self.__view.setZoomMode) |
136 self.__zoomSelector.zoomModeChanged.connect(self.__view.setZoomMode) |
120 self.__zoomSelector.zoomModeChanged.connect(self.__zoomModeChanged) |
137 self.__zoomSelector.zoomModeChanged.connect(self.__zoomModeChanged) |
121 self.__zoomSelector.zoomFactorChanged.connect(self.__view.setZoomFactor) |
138 self.__zoomSelector.zoomFactorChanged.connect(self.__view.setZoomFactor) |
122 self.__view.zoomFactorChanged.connect(self.__zoomSelector.setZoomFactor) |
139 self.__view.zoomFactorChanged.connect(self.__zoomSelector.setZoomFactor) |
123 self.__view.zoomModeChanged.connect(self.__zoomSelector.setZoomMode) |
140 self.__view.zoomModeChanged.connect(self.__zoomSelector.setZoomMode) |
|
141 |
|
142 self.__tocWidget.topicActivated.connect(self.__tocActivated) |
124 |
143 |
125 PdfViewerWindow.windows.append(self) |
144 PdfViewerWindow.windows.append(self) |
126 |
145 |
127 self.__restoreViewerState() |
146 self.__restoreViewerState() |
128 |
147 |
782 self.tr( |
801 self.tr( |
783 """<p>The PDF file <b>{0}</b> could not be loaded.</p>""" |
802 """<p>The PDF file <b>{0}</b> could not be loaded.</p>""" |
784 """<p>Reason: {1}</p>""" |
803 """<p>Reason: {1}</p>""" |
785 ).format(fileName, self.__getErrorString(err)), |
804 ).format(fileName, self.__getErrorString(err)), |
786 ) |
805 ) |
|
806 self.__documentInfoWidget.setFileName("") |
787 return |
807 return |
788 |
808 |
789 self.__lastOpenPath = os.path.dirname(fileName) |
809 self.__lastOpenPath = os.path.dirname(fileName) |
790 self.__setCurrentFile(fileName) |
810 self.__setCurrentFile(fileName) |
791 |
811 |
793 self.__setViewerTitle(documentTitle) |
813 self.__setViewerTitle(documentTitle) |
794 |
814 |
795 self.__pageSelected(0) |
815 self.__pageSelected(0) |
796 self.__pageSelector.setMaximum(self.__pdfDocument.pageCount() - 1) |
816 self.__pageSelector.setMaximum(self.__pdfDocument.pageCount() - 1) |
797 self.__pageSelector.setValue(0) |
817 self.__pageSelector.setValue(0) |
|
818 |
|
819 self.__documentInfoWidget.setFileName(fileName) |
|
820 |
|
821 self.__info.setCurrentWidget(self.__tocWidget) |
798 |
822 |
799 @pyqtSlot() |
823 @pyqtSlot() |
800 def __reload(self): |
824 def __reload(self): |
801 """ |
825 """ |
802 Private slot to reload the current PDF document. |
826 Private slot to reload the current PDF document. |
878 """ |
902 """ |
879 nav = self.__view.pageNavigator() |
903 nav = self.__view.pageNavigator() |
880 nav.jump(page, QPointF(), nav.currentZoom()) |
904 nav.jump(page, QPointF(), nav.currentZoom()) |
881 |
905 |
882 self.__checkActions() |
906 self.__checkActions() |
|
907 |
|
908 @pyqtSlot(int, float) |
|
909 def __tocActivated(self, page, zoomFactor): |
|
910 """ |
|
911 Private slot to handle the selection of a ToC topic. |
|
912 |
|
913 @param page page number |
|
914 @type int |
|
915 @param zoomFactor zoom factor |
|
916 @type float |
|
917 """ |
|
918 nav = self.__view.pageNavigator() |
|
919 nav.jump(page, QPointF(), zoomFactor) |
883 |
920 |
884 def __setCurrentFile(self, fileName): |
921 def __setCurrentFile(self, fileName): |
885 """ |
922 """ |
886 Private method to register the file name of the current file. |
923 Private method to register the file name of the current file. |
887 |
924 |