src/eric7/QScintilla/Printer.py

branch
eric7
changeset 9209
b99e7fd55fd3
parent 8881
54e42bc2437a
child 9221
bf71ee032bb4
equal deleted inserted replaced
9208:3fc8dfeb6ebe 9209:b99e7fd55fd3
1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2006 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
5
6 """
7 Module implementing the printer functionality.
8 """
9
10 from PyQt6.QtCore import QTime, QDate, Qt, QCoreApplication, QMarginsF
11 from PyQt6.QtGui import QColor, QPageLayout
12 from PyQt6.QtPrintSupport import QPrinter
13 from PyQt6.Qsci import QsciPrinter
14
15 import Preferences
16
17
18 class Printer(QsciPrinter):
19 """
20 Class implementing the QsciPrinter with a header.
21 """
22 def __init__(self, mode=QPrinter.PrinterMode.ScreenResolution):
23 """
24 Constructor
25
26 @param mode mode of the printer (QPrinter.PrinterMode)
27 """
28 super().__init__(mode)
29
30 self.setMagnification(Preferences.getPrinter("Magnification"))
31 if Preferences.getPrinter("ColorMode"):
32 self.setColorMode(QPrinter.ColorMode.Color)
33 else:
34 self.setColorMode(QPrinter.ColorMode.GrayScale)
35 if Preferences.getPrinter("FirstPageFirst"):
36 self.setPageOrder(QPrinter.PageOrder.FirstPageFirst)
37 else:
38 self.setPageOrder(QPrinter.PageOrder.LastPageFirst)
39 self.setPageMargins(QMarginsF(
40 Preferences.getPrinter("LeftMargin") * 10,
41 Preferences.getPrinter("TopMargin") * 10,
42 Preferences.getPrinter("RightMargin") * 10,
43 Preferences.getPrinter("BottomMargin") * 10),
44 QPageLayout.Unit.Millimeter
45 )
46 printerName = Preferences.getPrinter("PrinterName")
47 if printerName:
48 self.setPrinterName(printerName)
49 self.time = QTime.currentTime().toString(Qt.DateFormat.RFC2822Date)
50 self.date = QDate.currentDate().toString(Qt.DateFormat.RFC2822Date)
51 self.headerFont = Preferences.getPrinter("HeaderFont")
52
53 def formatPage(self, painter, drawing, area, pagenr):
54 """
55 Public method to generate a header line.
56
57 @param painter the paint canvas (QPainter)
58 @param drawing flag indicating that something should be drawn
59 @param area the drawing area (QRect)
60 @param pagenr the page number (int)
61 """
62 fn = self.docName()
63
64 header = QCoreApplication.translate(
65 'Printer', '{0} - Printed on {1}, {2} - Page {3}'
66 ).format(fn, self.date, self.time, pagenr)
67
68 painter.save()
69 painter.setFont(self.headerFont) # set our header font
70 painter.setPen(QColor(Qt.GlobalColor.black)) # set color
71 if drawing:
72 fm = painter.fontMetrics()
73 try:
74 fmWidth = fm.horizontalAdvance(header)
75 except AttributeError:
76 fmWidth = fm.width(header)
77 painter.drawText(
78 area.right() - fmWidth,
79 area.top() + painter.fontMetrics().ascent(), header)
80 area.setTop(area.top() + painter.fontMetrics().height() + 5)
81 painter.restore()

eric ide

mercurial