17 |
17 |
18 class Printer(QsciPrinter): |
18 class Printer(QsciPrinter): |
19 """ |
19 """ |
20 Class implementing the QsciPrinter with a header. |
20 Class implementing the QsciPrinter with a header. |
21 """ |
21 """ |
|
22 |
22 def __init__(self, mode=QPrinter.PrinterMode.ScreenResolution): |
23 def __init__(self, mode=QPrinter.PrinterMode.ScreenResolution): |
23 """ |
24 """ |
24 Constructor |
25 Constructor |
25 |
26 |
26 @param mode mode of the printer (QPrinter.PrinterMode) |
27 @param mode mode of the printer (QPrinter.PrinterMode) |
27 """ |
28 """ |
28 super().__init__(mode) |
29 super().__init__(mode) |
29 |
30 |
30 self.setMagnification(Preferences.getPrinter("Magnification")) |
31 self.setMagnification(Preferences.getPrinter("Magnification")) |
31 if Preferences.getPrinter("ColorMode"): |
32 if Preferences.getPrinter("ColorMode"): |
32 self.setColorMode(QPrinter.ColorMode.Color) |
33 self.setColorMode(QPrinter.ColorMode.Color) |
33 else: |
34 else: |
34 self.setColorMode(QPrinter.ColorMode.GrayScale) |
35 self.setColorMode(QPrinter.ColorMode.GrayScale) |
35 if Preferences.getPrinter("FirstPageFirst"): |
36 if Preferences.getPrinter("FirstPageFirst"): |
36 self.setPageOrder(QPrinter.PageOrder.FirstPageFirst) |
37 self.setPageOrder(QPrinter.PageOrder.FirstPageFirst) |
37 else: |
38 else: |
38 self.setPageOrder(QPrinter.PageOrder.LastPageFirst) |
39 self.setPageOrder(QPrinter.PageOrder.LastPageFirst) |
39 self.setPageMargins(QMarginsF( |
40 self.setPageMargins( |
40 Preferences.getPrinter("LeftMargin") * 10, |
41 QMarginsF( |
41 Preferences.getPrinter("TopMargin") * 10, |
42 Preferences.getPrinter("LeftMargin") * 10, |
42 Preferences.getPrinter("RightMargin") * 10, |
43 Preferences.getPrinter("TopMargin") * 10, |
43 Preferences.getPrinter("BottomMargin") * 10), |
44 Preferences.getPrinter("RightMargin") * 10, |
44 QPageLayout.Unit.Millimeter |
45 Preferences.getPrinter("BottomMargin") * 10, |
|
46 ), |
|
47 QPageLayout.Unit.Millimeter, |
45 ) |
48 ) |
46 printerName = Preferences.getPrinter("PrinterName") |
49 printerName = Preferences.getPrinter("PrinterName") |
47 if printerName: |
50 if printerName: |
48 self.setPrinterName(printerName) |
51 self.setPrinterName(printerName) |
49 self.time = QTime.currentTime().toString(Qt.DateFormat.RFC2822Date) |
52 self.time = QTime.currentTime().toString(Qt.DateFormat.RFC2822Date) |
50 self.date = QDate.currentDate().toString(Qt.DateFormat.RFC2822Date) |
53 self.date = QDate.currentDate().toString(Qt.DateFormat.RFC2822Date) |
51 self.headerFont = Preferences.getPrinter("HeaderFont") |
54 self.headerFont = Preferences.getPrinter("HeaderFont") |
52 |
55 |
53 def formatPage(self, painter, drawing, area, pagenr): |
56 def formatPage(self, painter, drawing, area, pagenr): |
54 """ |
57 """ |
55 Public method to generate a header line. |
58 Public method to generate a header line. |
56 |
59 |
57 @param painter the paint canvas (QPainter) |
60 @param painter the paint canvas (QPainter) |
58 @param drawing flag indicating that something should be drawn |
61 @param drawing flag indicating that something should be drawn |
59 @param area the drawing area (QRect) |
62 @param area the drawing area (QRect) |
60 @param pagenr the page number (int) |
63 @param pagenr the page number (int) |
61 """ |
64 """ |
62 fn = self.docName() |
65 fn = self.docName() |
63 |
66 |
64 header = QCoreApplication.translate( |
67 header = QCoreApplication.translate( |
65 'Printer', '{0} - Printed on {1}, {2} - Page {3}' |
68 "Printer", "{0} - Printed on {1}, {2} - Page {3}" |
66 ).format(fn, self.date, self.time, pagenr) |
69 ).format(fn, self.date, self.time, pagenr) |
67 |
70 |
68 painter.save() |
71 painter.save() |
69 painter.setFont(self.headerFont) # set our header font |
72 painter.setFont(self.headerFont) # set our header font |
70 painter.setPen(QColor(Qt.GlobalColor.black)) # set color |
73 painter.setPen(QColor(Qt.GlobalColor.black)) # set color |
71 if drawing: |
74 if drawing: |
72 fm = painter.fontMetrics() |
75 fm = painter.fontMetrics() |
73 try: |
76 try: |
74 fmWidth = fm.horizontalAdvance(header) |
77 fmWidth = fm.horizontalAdvance(header) |
75 except AttributeError: |
78 except AttributeError: |
76 fmWidth = fm.width(header) |
79 fmWidth = fm.width(header) |
77 painter.drawText( |
80 painter.drawText( |
78 area.right() - fmWidth, |
81 area.right() - fmWidth, |
79 area.top() + painter.fontMetrics().ascent(), header) |
82 area.top() + painter.fontMetrics().ascent(), |
|
83 header, |
|
84 ) |
80 area.setTop(area.top() + painter.fontMetrics().height() + 5) |
85 area.setTop(area.top() + painter.fontMetrics().height() + 5) |
81 painter.restore() |
86 painter.restore() |