src/eric7/PdfViewer/PdfView.py

branch
pdf_viewer
changeset 9722
63135ab601e7
parent 9711
614bb8b0d175
child 10439
21c28b0f9e41
--- a/src/eric7/PdfViewer/PdfView.py	Fri Jan 20 17:31:29 2023 +0100
+++ b/src/eric7/PdfViewer/PdfView.py	Mon Jan 23 17:12:03 2023 +0100
@@ -13,10 +13,18 @@
 from dataclasses import dataclass
 
 from PyQt6.QtCore import (
-    QSize, Qt, pyqtSlot, QEvent, QSizeF, QRect, QPoint, QPointF, QRectF,
-    pyqtSignal
+    QEvent,
+    QPoint,
+    QPointF,
+    QRect,
+    QRectF,
+    QSize,
+    QSizeF,
+    Qt,
+    pyqtSignal,
+    pyqtSlot,
 )
-from PyQt6.QtGui import QGuiApplication, QPainter, QColor, QPen
+from PyQt6.QtGui import QColor, QGuiApplication, QPainter, QPen
 from PyQt6.QtPdf import QPdfDocument, QPdfLink
 from PyQt6.QtPdfWidgets import QPdfView
 from PyQt6.QtWidgets import QRubberBand
@@ -56,6 +64,8 @@
 class PdfView(QPdfView):
     """
     Class implementing a specialized PDF view.
+
+    @signal selectionAvailable(bool) emitted to indicate the availability of a selection
     """
 
     MarkerColors = {
@@ -177,9 +187,12 @@
                 pageSize = pageSize.scaled(
                     viewportSize, Qt.AspectRatioMode.KeepAspectRatio
                 )
-            zoomFactor = pageSize.width() / (
-                self.document().pagePointSize(curPage) * self.__screenResolution
-            ).width()
+            zoomFactor = (
+                pageSize.width()
+                / (
+                    self.document().pagePointSize(curPage) * self.__screenResolution
+                ).width()
+            )
             return zoomFactor
 
     @pyqtSlot()
@@ -297,11 +310,13 @@
                     )
                     factor = self.__zoomFactorForMode(self.zoomMode())
                     selectionSize = (
-                        QSizeF(translatedRubber.size()) / factor
+                        QSizeF(translatedRubber.size())
+                        / factor
                         / self.__screenResolution
                     )
                     selectionTopLeft = (
-                        QPointF(translatedRubber.topLeft()) / factor
+                        QPointF(translatedRubber.topLeft())
+                        / factor
                         / self.__screenResolution
                     )
                     selectionRect = QRectF(selectionTopLeft, selectionSize)
@@ -380,9 +395,9 @@
         for page in self.__markerGeometries:
             for markerGeom in self.__markerGeometries[page]:
                 if markerGeom.rectangle.intersects(self.__documentViewport):
-                    painter.setPen(QPen(
-                        PdfView.MarkerColors[markerGeom.markerType][0], 2
-                    ))
+                    painter.setPen(
+                        QPen(PdfView.MarkerColors[markerGeom.markerType][0], 2)
+                    )
                     painter.setBrush(PdfView.MarkerColors[markerGeom.markerType][1])
                     painter.drawRect(markerGeom.rectangle)
         painter.end()
@@ -398,7 +413,7 @@
         y = self.verticalScrollBar().value()
         width = self.viewport().width()
         height = self.viewport().height()
-        
+
         docViewport = QRect(x, y, width, height)
         if self.__documentViewport == docViewport:
             return
@@ -424,14 +439,14 @@
 
         document = self.document()
         margins = self.documentMargins()
-        
+
         if document is None or document.status() != QPdfDocument.Status.Ready:
             return
 
         pageCount = document.pageCount()
-        
+
         totalWidth = 0
-        
+
         startPage = (
             self.pageNavigator().currentPage()
             if self.pageMode() == QPdfView.PageMode.SinglePage
@@ -447,7 +462,8 @@
         for page in range(startPage, endPage):
             if self.zoomMode() == QPdfView.ZoomMode.Custom:
                 pageSize = QSizeF(
-                    document.pagePointSize(page) * self.__screenResolution
+                    document.pagePointSize(page)
+                    * self.__screenResolution
                     * self.zoomFactor()
                 ).toSize()
             elif self.zoomMode() == QPdfView.ZoomMode.FitToWidth:
@@ -459,9 +475,8 @@
                 ) / pageSize.width()
                 pageSize *= factor
             elif self.zoomMode() == QPdfView.ZoomMode.FitInView:
-                viewportSize = (
-                    self.__documentViewport.size()
-                    + QSize(-margins.left() - margins.right(), -self.pageSpacing())
+                viewportSize = self.__documentViewport.size() + QSize(
+                    -margins.left() - margins.right(), -self.pageSpacing()
                 )
                 pageSize = QSizeF(
                     document.pagePointSize(page) * self.__screenResolution
@@ -522,7 +537,8 @@
                     QSizeF(marker.rectangle.size()) * factor * self.__screenResolution
                 ).toSize()
                 markerTopLeft = (
-                    QPointF(marker.rectangle.topLeft()) * factor
+                    QPointF(marker.rectangle.topLeft())
+                    * factor
                     * self.__screenResolution
                 ).toPoint()
 
@@ -530,7 +546,7 @@
                 self.__markerGeometries[page].append(
                     PdfMarkerGeometry(
                         rectangle=markerGeometry.translated(offset),
-                        markerType=marker.markerType
+                        markerType=marker.markerType,
                     )
                 )
 
@@ -639,7 +655,8 @@
         """
         for page in self.__markers:
             markersList = [
-                m for m in self.__markers[page]
+                m
+                for m in self.__markers[page]
                 if m.markerType == PdfMarkerType.SELECTION
             ]
             if markersList:

eric ide

mercurial