eric6/E5Graphics/E5GraphicsView.py

changeset 8295
3f5e8b0a338e
parent 8277
ea734702ae94
--- a/eric6/E5Graphics/E5GraphicsView.py	Thu May 06 19:46:00 2021 +0200
+++ b/eric6/E5Graphics/E5GraphicsView.py	Sat May 08 18:34:08 2021 +0200
@@ -345,22 +345,24 @@
             (QPrinter)
         @param diagramName name of the diagram (string)
         """
-        painter = QPainter()
-        painter.begin(printer)
-        offsetX = 0
-        offsetY = 0
-        widthX = 0
-        heightY = 0
+        painter = QPainter(printer)
+        
         font = QFont("times", 10)
         painter.setFont(font)
         fm = painter.fontMetrics()
         fontHeight = fm.lineSpacing()
-        marginX = printer.pageRect().x() - printer.paperRect().x()
+        marginX = (
+            printer.pageLayout().paintRectPixels(printer.resolution()).x() -
+            printer.pageLayout().fullRectPixels(printer.resolution()).x()
+        )
         marginX = (
             Preferences.getPrinter("LeftMargin") *
             int(printer.resolution() / 2.54) - marginX
         )
-        marginY = printer.pageRect().y() - printer.paperRect().y()
+        marginY = (
+            printer.pageLayout().paintRectPixels(printer.resolution()).y() -
+            printer.pageLayout().fullRectPixels(printer.resolution()).y()
+        )
         marginY = (
             Preferences.getPrinter("TopMargin") *
             int(printer.resolution() / 2.54) - marginY
@@ -377,59 +379,18 @@
             int(printer.resolution() / 2.54)
         )
         
-        border = self.border == 0 and 5 or self.border
-        rect = self._getDiagramRect(border)
-        diagram = self.__getDiagram(rect)
+        self.scene().render(painter,
+                            target=QRectF(marginX, marginY, width, height))
         
-        finishX = False
-        finishY = False
-        page = 0
-        pageX = 0
-        pageY = 1
-        while not finishX or not finishY:
-            if not finishX:
-                offsetX = pageX * width
-                pageX += 1
-            elif not finishY:
-                offsetY = pageY * height
-                offsetX = 0
-                pageY += 1
-                finishX = False
-                pageX = 1
-            if (width + offsetX) > diagram.width():
-                finishX = True
-                widthX = diagram.width() - offsetX
-            else:
-                widthX = width
-            if diagram.width() < width:
-                widthX = diagram.width()
-                finishX = True
-                offsetX = 0
-            if (height + offsetY) > diagram.height():
-                finishY = True
-                heightY = diagram.height() - offsetY
-            else:
-                heightY = height
-            if diagram.height() < height:
-                finishY = True
-                heightY = diagram.height()
-                offsetY = 0
-            
-            painter.drawPixmap(marginX, marginY, diagram,
-                               offsetX, offsetY, widthX, heightY)
-            # write a foot note
-            s = self.tr("{0}, Page {1}").format(diagramName, page + 1)
-            tc = QColor(50, 50, 50)
-            painter.setPen(tc)
-            painter.drawRect(marginX, marginY, width, height)
-            painter.drawLine(marginX, marginY + height + 2,
-                             marginX + width, marginY + height + 2)
-            painter.setFont(font)
-            painter.drawText(marginX, marginY + height + 4, width,
-                             fontHeight, Qt.AlignmentFlag.AlignRight, s)
-            if not finishX or not finishY:
-                printer.newPage()
-                page += 1
+        # write a foot note
+        tc = QColor(50, 50, 50)
+        painter.setPen(tc)
+        painter.drawRect(marginX, marginY, width, height)
+        painter.drawLine(marginX, marginY + height + 2,
+                         marginX + width, marginY + height + 2)
+        painter.setFont(font)
+        painter.drawText(marginX, marginY + height + 4, width,
+                         fontHeight, Qt.AlignmentFlag.AlignRight, diagramName)
         
         painter.end()
     

eric ide

mercurial