diff -r 69e183e4db6f -r 92dcd34d54e4 src/eric7/PdfViewer/PdfGoToDialog.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/PdfViewer/PdfGoToDialog.py Sat Jan 14 18:25:26 2023 +0100 @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" + +""" + +from PyQt6.QtCore import Qt +from PyQt6.QtWidgets import ( + QDialog, QDialogButtonBox, QSlider, QSpinBox, QHBoxLayout, QVBoxLayout +) + +class PdfGoToDialog(QDialog): + + + def __init__(self, curPage, pageCount, parent=None): + """ + Constructor + + @param curPage current page number (0 based) + @type int + @param pageCount number of pages in the document + @type int + @param parent reference to the parent widget (defaults to None) + @type QWidget (optional) + """ + super().__init__(parent) + + self.__layout = QVBoxLayout() + self.setLayout(self.__layout) + + self.__hLayout = QHBoxLayout() + self.__valueSlider = QSlider(Qt.Orientation.Horizontal) + self.__valueSlider.setTickPosition(QSlider.TickPosition.TicksBothSides) + self.__valueSlider.setSingleStep(1) + self.__valueSlider.setPageStep(10) + self.__valueSlider.setMinimum(1) + self.__valueSlider.setMaximum(pageCount) + self.__valueSlider.setValue(curPage + 1) + self.__hLayout.addWidget(self.__valueSlider) + self.__valueSpinBox = QSpinBox() + self.__valueSpinBox.setMinimum(1) + self.__valueSpinBox.setMaximum(pageCount) + self.__valueSpinBox.setValue(curPage + 1) + self.__valueSpinBox.setAlignment(Qt.AlignmentFlag.AlignCenter) + self.__hLayout.addWidget(self.__valueSpinBox) + self.__layout.addLayout(self.__hLayout) + + self.__buttonBox = QDialogButtonBox( + QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel, + Qt.Orientation.Horizontal, + ) + self.__layout.addWidget(self.__buttonBox) + + self.__valueSpinBox.setFocus(Qt.FocusReason.OtherFocusReason) + + # connect signals and slots + self.__buttonBox.accepted.connect(self.accept) + self.__buttonBox.rejected.connect(self.reject) + self.__valueSlider.valueChanged.connect(self.__valueSpinBox.setValue) + self.__valueSpinBox.valueChanged.connect(self.__valueSlider.setValue) + + def getPage(self): + """ + Public method to get the selected page. + + @return selected page (0 based) + @rtype int + """ + return self.__valueSpinBox.value() - 1