Repaired print module
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|
||||||
|
|||||||
@@ -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])
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user