eric6/E5Graphics/E5GraphicsView.py

changeset 8295
3f5e8b0a338e
parent 8277
ea734702ae94
equal deleted inserted replaced
8294:cb4e5bbf3a2c 8295:3f5e8b0a338e
343 343
344 @param printer reference to a ready configured printer object 344 @param printer reference to a ready configured printer object
345 (QPrinter) 345 (QPrinter)
346 @param diagramName name of the diagram (string) 346 @param diagramName name of the diagram (string)
347 """ 347 """
348 painter = QPainter() 348 painter = QPainter(printer)
349 painter.begin(printer) 349
350 offsetX = 0
351 offsetY = 0
352 widthX = 0
353 heightY = 0
354 font = QFont("times", 10) 350 font = QFont("times", 10)
355 painter.setFont(font) 351 painter.setFont(font)
356 fm = painter.fontMetrics() 352 fm = painter.fontMetrics()
357 fontHeight = fm.lineSpacing() 353 fontHeight = fm.lineSpacing()
358 marginX = printer.pageRect().x() - printer.paperRect().x() 354 marginX = (
355 printer.pageLayout().paintRectPixels(printer.resolution()).x() -
356 printer.pageLayout().fullRectPixels(printer.resolution()).x()
357 )
359 marginX = ( 358 marginX = (
360 Preferences.getPrinter("LeftMargin") * 359 Preferences.getPrinter("LeftMargin") *
361 int(printer.resolution() / 2.54) - marginX 360 int(printer.resolution() / 2.54) - marginX
362 ) 361 )
363 marginY = printer.pageRect().y() - printer.paperRect().y() 362 marginY = (
363 printer.pageLayout().paintRectPixels(printer.resolution()).y() -
364 printer.pageLayout().fullRectPixels(printer.resolution()).y()
365 )
364 marginY = ( 366 marginY = (
365 Preferences.getPrinter("TopMargin") * 367 Preferences.getPrinter("TopMargin") *
366 int(printer.resolution() / 2.54) - marginY 368 int(printer.resolution() / 2.54) - marginY
367 ) 369 )
368 370
375 printer.height() - fontHeight - 4 - marginY - 377 printer.height() - fontHeight - 4 - marginY -
376 Preferences.getPrinter("BottomMargin") * 378 Preferences.getPrinter("BottomMargin") *
377 int(printer.resolution() / 2.54) 379 int(printer.resolution() / 2.54)
378 ) 380 )
379 381
380 border = self.border == 0 and 5 or self.border 382 self.scene().render(painter,
381 rect = self._getDiagramRect(border) 383 target=QRectF(marginX, marginY, width, height))
382 diagram = self.__getDiagram(rect) 384
383 385 # write a foot note
384 finishX = False 386 tc = QColor(50, 50, 50)
385 finishY = False 387 painter.setPen(tc)
386 page = 0 388 painter.drawRect(marginX, marginY, width, height)
387 pageX = 0 389 painter.drawLine(marginX, marginY + height + 2,
388 pageY = 1 390 marginX + width, marginY + height + 2)
389 while not finishX or not finishY: 391 painter.setFont(font)
390 if not finishX: 392 painter.drawText(marginX, marginY + height + 4, width,
391 offsetX = pageX * width 393 fontHeight, Qt.AlignmentFlag.AlignRight, diagramName)
392 pageX += 1
393 elif not finishY:
394 offsetY = pageY * height
395 offsetX = 0
396 pageY += 1
397 finishX = False
398 pageX = 1
399 if (width + offsetX) > diagram.width():
400 finishX = True
401 widthX = diagram.width() - offsetX
402 else:
403 widthX = width
404 if diagram.width() < width:
405 widthX = diagram.width()
406 finishX = True
407 offsetX = 0
408 if (height + offsetY) > diagram.height():
409 finishY = True
410 heightY = diagram.height() - offsetY
411 else:
412 heightY = height
413 if diagram.height() < height:
414 finishY = True
415 heightY = diagram.height()
416 offsetY = 0
417
418 painter.drawPixmap(marginX, marginY, diagram,
419 offsetX, offsetY, widthX, heightY)
420 # write a foot note
421 s = self.tr("{0}, Page {1}").format(diagramName, page + 1)
422 tc = QColor(50, 50, 50)
423 painter.setPen(tc)
424 painter.drawRect(marginX, marginY, width, height)
425 painter.drawLine(marginX, marginY + height + 2,
426 marginX + width, marginY + height + 2)
427 painter.setFont(font)
428 painter.drawText(marginX, marginY + height + 4, width,
429 fontHeight, Qt.AlignmentFlag.AlignRight, s)
430 if not finishX or not finishY:
431 printer.newPage()
432 page += 1
433 394
434 painter.end() 395 painter.end()
435 396
436 ########################################################################### 397 ###########################################################################
437 ## The methods below should be overridden by subclasses to get special 398 ## The methods below should be overridden by subclasses to get special

eric ide

mercurial