src/eric7/PdfViewer/PdfPageSelector.py

Fri, 13 Jan 2023 18:20:54 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 13 Jan 2023 18:20:54 +0100
branch
pdf_viewer
changeset 9698
69e183e4db6f
child 9699
92dcd34d54e4
permissions
-rw-r--r--

Continued implementing a PDF viewer tool (page navigation).

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 (
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16 QToolButton, QHBoxLayout, QWidget, QLabel, QLineEdit
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)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.__pageLabel = QLabel()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.__layout = QHBoxLayout()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__layout.addWidget(self.__prevButton)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.__layout.addWidget(self.__pageEntry)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.__layout.addWidget(self.__pageLabel)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 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
60 self.__layout.addWidget(self.__pageButton)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.__layout.addWidget(self.__nextButton)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.setLayout(self.__layout)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 # Setup signal/slot connections
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66 self.__prevButton.clicked.connect(self.__decrement)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 self.__nextButton.clicked.connect(self.__increment)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 self.__pageButton.clicked.connect(self.__pageButtonTriggered)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
69 self.__pageEntry.editingFinished.connect(self.__pageEntered)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 self.__initialize()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 def __initialize(self):
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 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
76 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 self.__value = -1
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 self.__minimum = 0
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 self.__maximum = 0
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.__prevButton.setEnabled(False)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 self.__nextButton.setEnabled(False)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.__pageEntry.clear()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.__pageLabel.clear()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.__pageButton.setText(" ")
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.setEnabled(False)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89 def setDocument(self, document):
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 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
92
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 @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
94 @type QPdfDocument
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 self.__document = document
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 self.__document.statusChanged.connect(self.__documentStatusChanged)
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 @pyqtSlot(int)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 def setValue(self, value):
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 Public slot to set the value.
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 Note: value is 0 based.
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 value value to be set
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 @type int
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 if value != self.__value:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 with contextlib.suppress(RuntimeError):
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 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
112 self.__pageLabel.setText(str(value + 1))
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.__value = value
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.__prevButton.setEnabled(value > self.__minimum)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 self.__nextButton.setEnabled(value < self.__maximum)
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.valueChanged.emit(value)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 def value(self):
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 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
124
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 @return current value
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 @rtype int
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 self.__value
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 def setMaximum(self, max):
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 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
133
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 Note: max is 0 based.
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 @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
137 @type int
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 self.__maximum = max
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 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
141 self.__pageButton.setText(str(max + 1))
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 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 def __pageEntered(self):
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 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
147 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 model = self.__document.pageModel()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 start = model.index(0)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 indices = model.match(
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 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
152 )
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 if indices:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 self.setValue(indices[0].row())
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 else:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156 # reset
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 blocked = self.__pageEntry.blockSignals(True)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 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
159 self.__pageEntry.blockSignals(blocked)
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 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 def __decrement(self):
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 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
165 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 if self.__value > self.__minimum:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 self.setValue(self.__value - 1)
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 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 def __increment(self):
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 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
173 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 if self.__value < self.__maximum:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 self.setValue(self.__value + 1)
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 @pyqtSlot()
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 def __pageButtonTriggered(self):
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 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
181 """
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 self.gotoPage.emit()
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 @pyqtSlot(QPdfDocument.Status)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 def __documentStatusChanged(self, status):
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 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
188
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 @param status current document status
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 @type QPdfDocument.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 self.setEnabled(status == QPdfDocument.Status.Ready)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 if status == QPdfDocument.Status.Ready:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 numericalEntry = True
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 # test the first page
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 try:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 _ = int(self.__document.pageLabel(0))
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 except ValueError:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 numericalEntry = False
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 # test the last page
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 try:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 _ = 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
203 except ValueError:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 numericalEntry = False
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 self.__pageEntry.setValidator(
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 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
207 )
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 self.__pageLabel.setVisible(not numericalEntry)
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209 elif status == QPdfDocument.Status.Null:
69e183e4db6f Continued implementing a PDF viewer tool (page navigation).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 self.__initialize()

eric ide

mercurial