src/eric7/PdfViewer/PdfPageSelector.py

Sat, 23 Dec 2023 15:48:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 23 Dec 2023 15:48:12 +0100
branch
eric7
changeset 10439
21c28b0f9e41
parent 9722
63135ab601e7
child 11090
f5f5f5803935
permissions
-rw-r--r--

Updated copyright for 2024.

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
10439
21c28b0f9e41 Updated copyright for 2024.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9722
diff changeset
3 # Copyright (c) 2023 - 2024 Detlev Offenbach <detlev@die-offenbachs.de>
9698
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
9722
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
12 from PyQt6.QtCore import Qt, pyqtSignal, pyqtSlot
9698
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 (
9722
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
16 QHBoxLayout,
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
17 QLabel,
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
18 QLineEdit,
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
19 QSizePolicy,
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
20 QToolButton,
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
21 QWidget,
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 )
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 from eric7.EricGui import EricPixmapCache
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 class PdfPageSelector(QWidget):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 Class implementing a widget to select a PDF page to be shown.
9722
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
30
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
31 @signal valueChanged(int) emitted to signal the new value of the selector
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
32 @signal gotoPage() emitted to indicate the want to enter a page number via the
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
33 Go To dialog
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36 valueChanged = pyqtSignal(int)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 gotoPage = pyqtSignal()
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 def __init__(self, parent=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 Constructor
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 @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
44 @type QWidget (optional)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 super().__init__(parent)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 self.__document = None
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.__prevButton = QToolButton(self)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__prevButton.setIcon(EricPixmapCache.getIcon("1uparrow"))
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.__nextButton = QToolButton(self)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__nextButton.setIcon(EricPixmapCache.getIcon("1downarrow"))
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__pageButton = QToolButton()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.__pageButton.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextOnly)
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.__pageEntry = QLineEdit()
9700
b74a13a382a8 PDF Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9699
diff changeset
60 self.__pageEntry.setMaximumWidth(50)
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.__pageEntry.setMaxLength(10)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.__pageEntry.setAlignment(Qt.AlignmentFlag.AlignCenter)
9699
92dcd34d54e4 PDF Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9698
diff changeset
63 self.__pageEntry.setSizePolicy(
92dcd34d54e4 PDF Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9698
diff changeset
64 QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed
92dcd34d54e4 PDF Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9698
diff changeset
65 )
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.__pageLabel = QLabel()
9722
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
67
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__layout = QHBoxLayout()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.__layout.addWidget(self.__prevButton)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__layout.addWidget(self.__pageEntry)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.__layout.addWidget(self.__pageLabel)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 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
73 self.__layout.addWidget(self.__pageButton)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.__layout.addWidget(self.__nextButton)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.setLayout(self.__layout)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 # Setup signal/slot connections
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.__prevButton.clicked.connect(self.__decrement)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.__nextButton.clicked.connect(self.__increment)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 self.__pageButton.clicked.connect(self.__pageButtonTriggered)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.__pageEntry.editingFinished.connect(self.__pageEntered)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.__initialize()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 def __initialize(self):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 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
89 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 self.__value = -1
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 self.__minimum = 0
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 self.__maximum = 0
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.__prevButton.setEnabled(False)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 self.__nextButton.setEnabled(False)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 self.__pageEntry.clear()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 self.__pageLabel.clear()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.__pageButton.setText(" ")
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.setEnabled(False)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 def setDocument(self, document):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 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
105
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 @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
107 @type QPdfDocument
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 self.__document = document
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 self.__document.statusChanged.connect(self.__documentStatusChanged)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 @pyqtSlot(int)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 def setValue(self, value):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 Public slot to set the value.
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 Note: value is 0 based.
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 @param value value to be set
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 @type int
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 if value != self.__value:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 with contextlib.suppress(RuntimeError):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 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
125 self.__pageLabel.setText(str(value + 1))
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 self.__value = 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 self.__prevButton.setEnabled(value > self.__minimum)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 self.__nextButton.setEnabled(value < self.__maximum)
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 self.valueChanged.emit(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 value(self):
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 get the current 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 @return current value
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @rtype int
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 return self.__value
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142
9722
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
143 def setMaximum(self, maximum):
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 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
146
9722
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
147 Note: maximum is 0 based.
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148
9722
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
149 @param maximum maximum value to be set
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 @type int
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 """
9722
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
152 self.__maximum = maximum
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 self.__nextButton.setEnabled(self.__value < self.__maximum)
9722
63135ab601e7 Corrected some code formatting and style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9700
diff changeset
154 self.__pageButton.setText(str(maximum + 1))
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 def __pageEntered(self):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 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
160 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 model = self.__document.pageModel()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 start = model.index(0)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 indices = model.match(
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 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
165 )
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 if indices:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 self.setValue(indices[0].row())
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 else:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 # reset
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 blocked = self.__pageEntry.blockSignals(True)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 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
172 self.__pageEntry.blockSignals(blocked)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 def __decrement(self):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 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
178 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 if self.__value > self.__minimum:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 self.setValue(self.__value - 1)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 def __increment(self):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 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
186 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 if self.__value < self.__maximum:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 self.setValue(self.__value + 1)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 def __pageButtonTriggered(self):
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 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
194 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 self.gotoPage.emit()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 @pyqtSlot(QPdfDocument.Status)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 def __documentStatusChanged(self, status):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 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
201
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 @param status current document status
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 @type QPdfDocument.Status
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 self.setEnabled(status == QPdfDocument.Status.Ready)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 if status == QPdfDocument.Status.Ready:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 numericalEntry = True
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 # test the first page
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 try:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 _ = int(self.__document.pageLabel(0))
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 except ValueError:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 numericalEntry = False
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 # test the last page
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 try:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 _ = 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
216 except ValueError:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217 numericalEntry = False
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 self.__pageEntry.setValidator(
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219 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
220 )
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 self.__pageLabel.setVisible(not numericalEntry)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 elif status == QPdfDocument.Status.Null:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 self.__initialize()

eric ide

mercurial