src/eric7/PdfViewer/PdfPageSelector.py

Sun, 15 Jan 2023 17:41:35 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 15 Jan 2023 17:41:35 +0100
branch
pdf_viewer
changeset 9700
b74a13a382a8
parent 9699
92dcd34d54e4
child 9722
63135ab601e7
permissions
-rw-r--r--

PDF Viewer
- finished 'Zoom' functions

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

eric ide

mercurial