src/eric7/PdfViewer/PdfPageSelector.py

Sat, 14 Jan 2023 18:25:26 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 14 Jan 2023 18:25:26 +0100
branch
pdf_viewer
changeset 9699
92dcd34d54e4
parent 9698
69e183e4db6f
child 9700
b74a13a382a8
permissions
-rw-r--r--

PDF Viewer
- finished 'Go to' functions
- started with '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
92dcd34d54e4 PDF Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9698
diff changeset
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()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__pageEntry.setMaxLength(10)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__pageEntry.setAlignment(Qt.AlignmentFlag.AlignCenter)
9699
92dcd34d54e4 PDF Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9698
diff changeset
53 self.__pageEntry.setSizePolicy(
92dcd34d54e4 PDF Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9698
diff changeset
54 QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Fixed
92dcd34d54e4 PDF Viewer
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9698
diff changeset
55 )
9698
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__pageLabel = QLabel()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.__layout = QHBoxLayout()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.__layout.addWidget(self.__prevButton)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.__layout.addWidget(self.__pageEntry)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.__layout.addWidget(self.__pageLabel)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 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
63 self.__layout.addWidget(self.__pageButton)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.__layout.addWidget(self.__nextButton)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.setLayout(self.__layout)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 # Setup signal/slot connections
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.__prevButton.clicked.connect(self.__decrement)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70 self.__nextButton.clicked.connect(self.__increment)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.__pageButton.clicked.connect(self.__pageButtonTriggered)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 self.__pageEntry.editingFinished.connect(self.__pageEntered)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
74 self.__initialize()
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 def __initialize(self):
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 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
79 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.__value = -1
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 self.__minimum = 0
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.__maximum = 0
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.__prevButton.setEnabled(False)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.__nextButton.setEnabled(False)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.__pageEntry.clear()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__pageLabel.clear()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.__pageButton.setText(" ")
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.setEnabled(False)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 def setDocument(self, document):
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 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
95
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 @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
97 @type QPdfDocument
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self.__document = document
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.__document.statusChanged.connect(self.__documentStatusChanged)
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 @pyqtSlot(int)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 def setValue(self, value):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 Public slot to set the value.
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 Note: value is 0 based.
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 @param value value to be set
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 @type int
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 if value != self.__value:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 with contextlib.suppress(RuntimeError):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 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
115 self.__pageLabel.setText(str(value + 1))
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 self.__value = value
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 self.__prevButton.setEnabled(value > self.__minimum)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 self.__nextButton.setEnabled(value < self.__maximum)
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 self.valueChanged.emit(value)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 def value(self):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 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
127
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 @return current value
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 @rtype int
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 return self.__value
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 def setMaximum(self, max):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 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
136
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 Note: max is 0 based.
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 @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
140 @type int
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 self.__maximum = max
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 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
144 self.__pageButton.setText(str(max + 1))
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 def __pageEntered(self):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 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
150 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 model = self.__document.pageModel()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 start = model.index(0)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 indices = model.match(
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 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
155 )
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 if indices:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.setValue(indices[0].row())
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 else:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 # reset
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160 blocked = self.__pageEntry.blockSignals(True)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 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
162 self.__pageEntry.blockSignals(blocked)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 def __decrement(self):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 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
168 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 if self.__value > self.__minimum:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 self.setValue(self.__value - 1)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 def __increment(self):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 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
176 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 if self.__value < self.__maximum:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 self.setValue(self.__value + 1)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 def __pageButtonTriggered(self):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 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
184 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 self.gotoPage.emit()
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 @pyqtSlot(QPdfDocument.Status)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 def __documentStatusChanged(self, status):
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 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
191
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 @param status current document status
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 @type QPdfDocument.Status
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.setEnabled(status == QPdfDocument.Status.Ready)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 if status == QPdfDocument.Status.Ready:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 numericalEntry = True
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 # test the first page
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 try:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 _ = int(self.__document.pageLabel(0))
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 except ValueError:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 numericalEntry = False
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 # test the last page
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 try:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 _ = 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
206 except ValueError:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 numericalEntry = False
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 self.__pageEntry.setValidator(
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 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
210 )
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 self.__pageLabel.setVisible(not numericalEntry)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 elif status == QPdfDocument.Status.Null:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213 self.__initialize()

eric ide

mercurial