--- a/src/eric7/PdfViewer/PdfZoomSelector.py Sat Jan 14 18:25:26 2023 +0100 +++ b/src/eric7/PdfViewer/PdfZoomSelector.py Sun Jan 15 17:41:35 2023 +0100 @@ -22,6 +22,8 @@ zoomFactorChanged = pyqtSignal(float) zoomModeChanged = pyqtSignal(QPdfView.ZoomMode) + ZoomValues = (0.12, 0.25, 0.33, 0.5, 0.66, 0.75, 1.0, 1.25, 1.50, 2.0, 4.0, 8.0, 16.0, 25.0, 50.0) + def __init__(self, parent=None): """ Constructor @@ -34,27 +36,17 @@ self.setEditable(True) self.setInsertPolicy(QComboBox.InsertPolicy.NoInsert) - self.addItem(self.tr("Page Width")) - self.addItem(self.tr("Whole Page")) - self.addItem(self.tr("12%")) - self.addItem(self.tr("25%")) - self.addItem(self.tr("33%")) - self.addItem(self.tr("50%")) - self.addItem(self.tr("66%")) - self.addItem(self.tr("75%")) - self.addItem(self.tr("100%")) - self.addItem(self.tr("125%")) - self.addItem(self.tr("150%")) - self.addItem(self.tr("200%")) - self.addItem(self.tr("400%")) - self.addItem(self.tr("800%")) - self.addItem(self.tr("1600%")) - self.addItem(self.tr("2500%")) - self.addItem(self.tr("5000%")) + self.__pageWidthLabel = self.tr("Page Width") + self.__wholePageLabel = self.tr("Whole Page") + + self.addItem(self.__pageWidthLabel) + self.addItem(self.__wholePageLabel) + for val in PdfZoomSelector.ZoomValues: + self.addItem(self.tr("{0}%").format(int(val * 100))) self.lineEdit().setAlignment(Qt.AlignmentFlag.AlignCenter) - self.currentTextChanged.connect(self.__processText) + ##self.currentTextChanged.connect(self.__processText) self.lineEdit().editingFinished.connect(self.__editingFinished) @pyqtSlot() @@ -72,12 +64,12 @@ @param text text to be handled @type str """ - if text == self.tr("Page Width"): + if text == self.__pageWidthLabel: self.zoomModeChanged.emit(QPdfView.ZoomMode.FitToWidth) - elif text == self.tr("Whole Page"): + elif text == self.__wholePageLabel: self.zoomModeChanged.emit(QPdfView.ZoomMode.FitInView) else: - withoutPercent = text.replace("%", "") + withoutPercent = text.replace("%", "").replace("&", "") try: zoomLevel = int(withoutPercent) factor = zoomLevel / 100.0 @@ -93,6 +85,7 @@ Public slot to reset the zoom factor to 100%. """ self.setCurrentIndex(8) # index 8 is 100% + self.__editingFinished() @pyqtSlot(float) def setZoomFactor(self, zoomFactor): @@ -103,3 +96,21 @@ @type float """ self.setCurrentText(self.tr("{0}%").format(round(zoomFactor * 100))) + self.__editingFinished() + + @pyqtSlot(QPdfView.ZoomMode) + def setZoomMode(self, zoomMode): + """ + Public slot to set the zoom value iaw. the zoom mode. + + @param zoomMode current zoom mode + @type QPdfView.ZoomMode + """ + if zoomMode == QPdfView.ZoomMode.FitToWidth: + self.setCurrentIndex(0) # index 0 is 'Page Width' + elif zoomMode == QPdfView.ZoomMode.FitInView: + self.setCurrentIndex(1) # index 1 is 'Whole Page' + else: + # ignore Custom mode here + return + self.__editingFinished()