Sun, 15 Jan 2023 17:41:35 +0100
PDF Viewer
- finished 'Zoom' functions
9698
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | # Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a widget to select a PDF page to be shown. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | import contextlib |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | from PyQt6.QtCore import Qt, pyqtSlot, pyqtSignal |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | from PyQt6.QtGui import QIntValidator |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | from PyQt6.QtPdf import QPdfDocument |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from PyQt6.QtWidgets import ( |
9699 | 16 | QToolButton, QHBoxLayout, QWidget, QLabel, QLineEdit, QSizePolicy |
9698
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | ) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | from eric7.EricGui import EricPixmapCache |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | class PdfPageSelector(QWidget): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | Class implementing a widget to select a PDF page to be shown. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | valueChanged = pyqtSignal(int) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | gotoPage = pyqtSignal() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | def __init__(self, parent=None): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | Constructor |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | @param parent reference to the parent widget (defaults to None) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | @type QWidget (optional) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | super().__init__(parent) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | self.__document = None |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | self.__prevButton = QToolButton(self) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | self.__prevButton.setIcon(EricPixmapCache.getIcon("1uparrow")) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | self.__nextButton = QToolButton(self) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | self.__nextButton.setIcon(EricPixmapCache.getIcon("1downarrow")) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | self.__pageButton = QToolButton() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | self.__pageButton.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextOnly) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | self.__pageEntry = QLineEdit() |
9700 | 51 | self.__pageEntry.setMaximumWidth(50) |
9698
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | self.__pageEntry.setMaxLength(10) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | self.__pageEntry.setAlignment(Qt.AlignmentFlag.AlignCenter) |
9699 | 54 | self.__pageEntry.setSizePolicy( |
55 | QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed | |
56 | ) | |
9698
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | self.__pageLabel = QLabel() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | self.__layout = QHBoxLayout() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | self.__layout.addWidget(self.__prevButton) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | self.__layout.addWidget(self.__pageEntry) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | self.__layout.addWidget(self.__pageLabel) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | self.__layout.addWidget(QLabel(self.tr("of"))) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | self.__layout.addWidget(self.__pageButton) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | self.__layout.addWidget(self.__nextButton) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | self.setLayout(self.__layout) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | # Setup signal/slot connections |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | self.__prevButton.clicked.connect(self.__decrement) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | self.__nextButton.clicked.connect(self.__increment) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | self.__pageButton.clicked.connect(self.__pageButtonTriggered) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | self.__pageEntry.editingFinished.connect(self.__pageEntered) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | self.__initialize() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | def __initialize(self): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | Private method to initialize some internal state. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | self.__value = -1 |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | self.__minimum = 0 |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | self.__maximum = 0 |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | self.__prevButton.setEnabled(False) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | self.__nextButton.setEnabled(False) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | self.__pageEntry.clear() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | self.__pageLabel.clear() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | self.__pageButton.setText(" ") |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | self.setEnabled(False) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | def setDocument(self, document): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | Public method to set a reference to the associated PDF document. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | @param document reference to the associated PDF document |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | @type QPdfDocument |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | self.__document = document |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | self.__document.statusChanged.connect(self.__documentStatusChanged) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | @pyqtSlot(int) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | def setValue(self, value): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | Public slot to set the value. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | Note: value is 0 based. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | @param value value to be set |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | @type int |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | if value != self.__value: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | with contextlib.suppress(RuntimeError): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | self.__pageEntry.setText(self.__document.pageLabel(value)) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | self.__pageLabel.setText(str(value + 1)) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | self.__value = value |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | self.__prevButton.setEnabled(value > self.__minimum) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | self.__nextButton.setEnabled(value < self.__maximum) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | self.valueChanged.emit(value) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | def value(self): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | Public method to get the current value. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | @return current value |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | @rtype int |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | return self.__value |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | def setMaximum(self, max): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | Public method to set the maximum value. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | Note: max is 0 based. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | @param max maximum value to be set |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | @type int |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | self.__maximum = max |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | self.__nextButton.setEnabled(self.__value < self.__maximum) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | self.__pageButton.setText(str(max + 1)) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | @pyqtSlot() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | def __pageEntered(self): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | Private slot to handle the entering of a page value. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | model = self.__document.pageModel() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | start = model.index(0) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | indices = model.match( |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | start, QPdfDocument.PageModelRole.Label.value, self.__pageEntry.text() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | ) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | if indices: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | self.setValue(indices[0].row()) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | else: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | # reset |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | blocked = self.__pageEntry.blockSignals(True) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | self.__pageEntry.setText(self.__document.pageLabel(self.__value)) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | self.__pageEntry.blockSignals(blocked) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | @pyqtSlot() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | def __decrement(self): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | Private slot to decrement the current value. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | if self.__value > self.__minimum: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | self.setValue(self.__value - 1) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | @pyqtSlot() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | def __increment(self): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | Private slot to increment the current value. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | if self.__value < self.__maximum: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | self.setValue(self.__value + 1) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | @pyqtSlot() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | def __pageButtonTriggered(self): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | Private slot to handle the page button trigger. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | self.gotoPage.emit() |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | @pyqtSlot(QPdfDocument.Status) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | def __documentStatusChanged(self, status): |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | Private slot to handle a change of the document status. |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | @param status current document status |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | @type QPdfDocument.Status |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | """ |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | self.setEnabled(status == QPdfDocument.Status.Ready) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | if status == QPdfDocument.Status.Ready: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | numericalEntry = True |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | # test the first page |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | try: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | _ = int(self.__document.pageLabel(0)) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | except ValueError: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | numericalEntry = False |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | # test the last page |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | try: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | _ = int(self.__document.pageLabel(self.__document.pageCount() - 1)) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | except ValueError: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | numericalEntry = False |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | self.__pageEntry.setValidator( |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | QIntValidator(1, 99999) if numericalEntry else None |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | ) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | self.__pageLabel.setVisible(not numericalEntry) |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | elif status == QPdfDocument.Status.Null: |
69e183e4db6f
Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | self.__initialize() |