Repaired print module

This commit is contained in:
Balthasar Reuter
2018-07-16 22:13:04 +02:00
parent f84fc20a62
commit 5b3934016e
4 changed files with 19 additions and 12 deletions

View File

@@ -30,6 +30,8 @@ lamp_pin = 4
[Printer] [Printer]
# Enable printing (True/False) # Enable printing (True/False)
enable = True enable = True
# Print to PDF (True/False) for debugging purposes
pdf = False
# Printer module to use (PyQt5) # Printer module to use (PyQt5)
module = PyQt5 module = PyQt5
# Paper width in mm # Paper width in mm

View File

@@ -33,7 +33,8 @@ class GuiPostprocessor:
module = config.get('Printer', 'module') module = config.get('Printer', 'module')
paper_size = (config.getInt('Printer', 'width'), paper_size = (config.getInt('Printer', 'width'),
config.getInt('Printer', 'height')) config.getInt('Printer', 'height'))
self._task_list.append(PrintPostprocess(module, paper_size)) pdf = config.getBool('Printer', 'pdf')
self._task_list.append(PrintPostprocess(module, paper_size, pdf))
def get(self, picture): def get(self, picture):
@@ -89,12 +90,12 @@ class PostprocessItem:
class PrintPostprocess(PostprocessTask): class PrintPostprocess(PostprocessTask):
def __init__(self, printer_module, paper_size, **kwargs): def __init__(self, printer_module, paper_size, is_pdf, **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
Printer = lookup_and_import(printer.modules, printer_module, 'printer') Printer = lookup_and_import(printer.modules, printer_module, 'printer')
self._printer = Printer(paper_size, True) self._printer = Printer(paper_size, is_pdf)
def get(self, picture): def get(self, picture):

View File

@@ -734,6 +734,10 @@ class Settings(QtWidgets.QFrame):
enable.setChecked(self._cfg.getBool('Printer', 'enable')) enable.setChecked(self._cfg.getBool('Printer', 'enable'))
self.add('Printer', 'enable', enable) self.add('Printer', 'enable', enable)
pdf = QtWidgets.QCheckBox()
pdf.setChecked(self._cfg.getBool('Printer', 'pdf'))
self.add('Printer', 'pdf', pdf)
module = self.createModuleComboBox(printer.modules, module = self.createModuleComboBox(printer.modules,
self._cfg.get('Printer', 'module')) self._cfg.get('Printer', 'module'))
self.add('Printer', 'module', module) self.add('Printer', 'module', module)
@@ -755,6 +759,7 @@ class Settings(QtWidgets.QFrame):
layout = QtWidgets.QFormLayout() layout = QtWidgets.QFormLayout()
layout.addRow('Enable printing:', enable) layout.addRow('Enable printing:', enable)
layout.addRow('Module:', module) layout.addRow('Module:', module)
layout.addRow('Print to PDF (for debugging):', pdf)
layout.addRow('Paper size [mm]:', lay_size) layout.addRow('Paper size [mm]:', lay_size)
widget = QtWidgets.QWidget() widget = QtWidgets.QWidget()
@@ -813,6 +818,8 @@ class Settings(QtWidgets.QFrame):
self._cfg.set('Printer', 'enable', self._cfg.set('Printer', 'enable',
str(self.get('Printer', 'enable').isChecked())) str(self.get('Printer', 'enable').isChecked()))
self._cfg.set('Printer', 'pdf',
str(self.get('Printer', 'pdf').isChecked()))
self._cfg.set('Printer', 'module', self._cfg.set('Printer', 'module',
printer.modules[self.get('Printer', printer.modules[self.get('Printer',
'module').currentIndex()][0]) 'module').currentIndex()][0])

View File

@@ -19,8 +19,6 @@
import logging import logging
from PIL import ImageQt
from PyQt5 import QtCore, QtGui from PyQt5 import QtCore, QtGui
from PyQt5.QtPrintSupport import QPrinter from PyQt5.QtPrintSupport import QPrinter
@@ -55,15 +53,14 @@ class PrinterPyQt5(Printer):
logging.info('Printing picture') logging.info('Printing picture')
img = ImageQt.ImageQt(picture) picture = picture.scaled(self._printer.pageRect().size(),
img = img.scaled(self._printer.pageRect().size(),
QtCore.Qt.KeepAspectRatio, QtCore.Qt.KeepAspectRatio,
QtCore.Qt.SmoothTransformation) QtCore.Qt.SmoothTransformation)
printable_size = self._printer.pageRect(QPrinter.DevicePixel) printable_size = self._printer.pageRect(QPrinter.DevicePixel)
origin = ((printable_size.width() - img.width()) // 2, origin = ((printable_size.width() - picture.width()) // 2,
(printable_size.height() - img.height()) // 2) (printable_size.height() - picture.height()) // 2)
painter = QtGui.QPainter(self._printer) painter = QtGui.QPainter(self._printer)
painter.drawImage(QtCore.QPoint(*origin), img) painter.drawImage(QtCore.QPoint(*origin), picture)
painter.end() painter.end()