src/eric7/PdfViewer/PdfZoomSelector.py

branch
pdf_viewer
changeset 9700
b74a13a382a8
parent 9699
92dcd34d54e4
child 9705
7629a6f23b2e
--- 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()

eric ide

mercurial