summaryrefslogtreecommitdiff
path: root/src/silx/gui/widgets/PrintPreview.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/silx/gui/widgets/PrintPreview.py')
-rw-r--r--src/silx/gui/widgets/PrintPreview.py173
1 files changed, 101 insertions, 72 deletions
diff --git a/src/silx/gui/widgets/PrintPreview.py b/src/silx/gui/widgets/PrintPreview.py
index dd6af1f..285f12c 100644
--- a/src/silx/gui/widgets/PrintPreview.py
+++ b/src/silx/gui/widgets/PrintPreview.py
@@ -42,10 +42,9 @@ _logger = logging.getLogger(__name__)
class PrintPreviewDialog(qt.QDialog):
- """Print preview dialog widget.
- """
- def __init__(self, parent=None, printer=None):
+ """Print preview dialog widget."""
+ def __init__(self, parent=None, printer=None):
qt.QDialog.__init__(self, parent)
self.setWindowTitle("Print Preview")
self.setModal(False)
@@ -108,8 +107,7 @@ class PrintPreviewDialog(qt.QDialog):
cancelBut.setToolTip("Remove all items")
cancelBut.clicked.connect(self._clearAll)
- removeBut = qt.QPushButton("Remove",
- toolBar)
+ removeBut = qt.QPushButton("Remove", toolBar)
removeBut.setToolTip("Remove selected item (use left click to select)")
removeBut.clicked.connect(self._remove)
@@ -160,18 +158,17 @@ class PrintPreviewDialog(qt.QDialog):
self.targetLabel.setText("Undefined printer")
return
if self.printer.outputFileName():
- self.targetLabel.setText("File:" +
- self.printer.outputFileName())
+ self.targetLabel.setText("File:" + self.printer.outputFileName())
else:
- self.targetLabel.setText("Printer:" +
- self.printer.printerName())
+ self.targetLabel.setText("Printer:" + self.printer.printerName())
def _updatePrinter(self):
"""Resize :attr:`page`, :attr:`scene` and :attr:`view` to :attr:`printer`
width and height."""
printer = self.printer
- assert printer is not None, \
- "_updatePrinter should not be called unless a printer is defined"
+ assert (
+ printer is not None
+ ), "_updatePrinter should not be called unless a printer is defined"
if self.scene is None:
self.scene = qt.QGraphicsScene()
self.scene.setBackgroundBrush(qt.QColor(qt.Qt.lightGray))
@@ -204,9 +201,12 @@ class PrintPreviewDialog(qt.QDialog):
:param str comment: Comment displayed below the image
:param commentPosition: "CENTER" or "LEFT"
"""
- self.addPixmap(qt.QPixmap.fromImage(image),
- title=title, comment=comment,
- commentPosition=commentPosition)
+ self.addPixmap(
+ qt.QPixmap.fromImage(image),
+ title=title,
+ comment=comment,
+ commentPosition=commentPosition,
+ )
def addPixmap(self, pixmap, title=None, comment=None, commentPosition=None):
"""Add a pixmap to the print preview scene
@@ -223,14 +223,13 @@ class PrintPreviewDialog(qt.QDialog):
_logger.error("printer is not set, cannot add pixmap to page")
return
if title is None:
- title = ' ' * 88
+ title = " " * 88
if comment is None:
- comment = ' ' * 88
+ comment = " " * 88
if commentPosition is None:
commentPosition = "CENTER"
rectItem = qt.QGraphicsRectItem(self.page)
- rectItem.setRect(qt.QRectF(1, 1,
- pixmap.width(), pixmap.height()))
+ rectItem.setRect(qt.QRectF(1, 1, pixmap.width(), pixmap.height()))
pen = rectItem.pen()
color = qt.QColor(qt.Qt.red)
@@ -269,9 +268,15 @@ class PrintPreviewDialog(qt.QDialog):
rectItem.moveBy(20, 40)
- def addSvgItem(self, item, title=None,
- comment=None, commentPosition=None,
- viewBox=None, keepRatio=True):
+ def addSvgItem(
+ self,
+ item,
+ title=None,
+ comment=None,
+ commentPosition=None,
+ viewBox=None,
+ keepRatio=True,
+ ):
"""Add a SVG item to the scene.
:param QSvgRenderer item: SVG item to be added to the scene.
@@ -296,9 +301,9 @@ class PrintPreviewDialog(qt.QDialog):
return
if title is None:
- title = 50 * ' '
+ title = 50 * " "
if comment is None:
- comment = 80 * ' '
+ comment = 80 * " "
if commentPosition is None:
commentPosition = "CENTER"
@@ -319,8 +324,9 @@ class PrintPreviewDialog(qt.QDialog):
svgItem.setFlag(qt.QGraphicsItem.ItemIsMovable, True)
svgItem.setFlag(qt.QGraphicsItem.ItemIsFocusable, False)
- rectItemResizeRect = _GraphicsResizeRectItem(svgItem, self.scene,
- keepratio=keepRatio)
+ rectItemResizeRect = _GraphicsResizeRectItem(
+ svgItem, self.scene, keepratio=keepRatio
+ )
rectItemResizeRect.setZValue(2)
self._svgItems.append(item)
@@ -357,9 +363,13 @@ class PrintPreviewDialog(qt.QDialog):
if alignment == qt.Qt.AlignLeft:
deltax = 0
else:
- deltax = (svgItem.boundingRect().width() - commentItem.boundingRect().width()) / 2.
- commentItem.moveBy(svgItem.boundingRect().x() + deltax,
- svgItem.boundingRect().y() + svgItem.boundingRect().height())
+ deltax = (
+ svgItem.boundingRect().width() - commentItem.boundingRect().width()
+ ) / 2.0
+ commentItem.moveBy(
+ svgItem.boundingRect().x() + deltax,
+ svgItem.boundingRect().y() + svgItem.boundingRect().height(),
+ )
# Title
textItem = qt.QGraphicsTextItem(title, svgItem)
@@ -368,9 +378,12 @@ class PrintPreviewDialog(qt.QDialog):
textItem.setFlag(qt.QGraphicsItem.ItemIsMovable, True)
title_offset = 0.5 * textItem.boundingRect().width()
- textItem.moveBy(svgItem.boundingRect().x() +
- 0.5 * svgItem.boundingRect().width() - title_offset * scale,
- svgItem.boundingRect().y())
+ textItem.moveBy(
+ svgItem.boundingRect().x()
+ + 0.5 * svgItem.boundingRect().width()
+ - title_offset * scale,
+ svgItem.boundingRect().y(),
+ )
textItem.setScale(scale)
def setup(self):
@@ -387,7 +400,9 @@ class PrintPreviewDialog(qt.QDialog):
if self.printer.width() <= 0 or self.printer.height() <= 0:
self.message = qt.QMessageBox(self)
self.message.setIcon(qt.QMessageBox.Critical)
- self.message.setText("Unknown library error \non printer initialization")
+ self.message.setText(
+ "Unknown library error \non printer initialization"
+ )
self.message.setWindowTitle("Library Error")
self.message.setModal(0)
self.printer = None
@@ -412,8 +427,9 @@ class PrintPreviewDialog(qt.QDialog):
self.setup()
if self.printer is None:
self.hide()
- _logger.warning("Printer setup failed or was cancelled, " +
- "but printer is required.")
+ _logger.warning(
+ "Printer setup failed or was cancelled, " + "but printer is required."
+ )
return self.printer is not None
def setOutputFileName(self, name):
@@ -461,19 +477,27 @@ class PrintPreviewDialog(qt.QDialog):
_logger.error("Cannot initialize printer")
return
try:
- self.scene.render(painter, qt.QRectF(0, 0, printer.width(), printer.height()),
- qt.QRectF(self.page.rect().x(), self.page.rect().y(),
- self.page.rect().width(), self.page.rect().height()),
- qt.Qt.KeepAspectRatio)
+ self.scene.render(
+ painter,
+ qt.QRectF(0, 0, printer.width(), printer.height()),
+ qt.QRectF(
+ self.page.rect().x(),
+ self.page.rect().y(),
+ self.page.rect().width(),
+ self.page.rect().height(),
+ ),
+ qt.Qt.KeepAspectRatio,
+ )
painter.end()
self.hide()
self.accept()
self._toBeCleared = True
- except: # FIXME
+ except: # FIXME
painter.end()
- qt.QMessageBox.critical(self, "ERROR",
- 'Printing problem:\n %s' % sys.exc_info()[1])
- _logger.error('printing problem:\n %s' % sys.exc_info()[1])
+ qt.QMessageBox.critical(
+ self, "ERROR", "Printing problem:\n %s" % sys.exc_info()[1]
+ )
+ _logger.error("printing problem:\n %s" % sys.exc_info()[1])
return
def _zoomPlus(self):
@@ -501,8 +525,7 @@ class PrintPreviewDialog(qt.QDialog):
self._toBeCleared = False
def _remove(self):
- """Remove selected item in :attr:`scene`.
- """
+ """Remove selected item in :attr:`scene`."""
itemlist = self.scene.items()
# this loop is not efficient if there are many items ...
@@ -518,6 +541,7 @@ class SingletonPrintPreviewDialog(PrintPreviewDialog):
a single print preview dialog. This enables sending
multiple images to a single page to be printed.
"""
+
_instance = None
def __new__(self, *var, **kw):
@@ -530,6 +554,7 @@ class _GraphicsSvgRectItem(qt.QGraphicsRectItem):
""":class:`qt.QGraphicsRectItem` with an attached
:class:`qt.QSvgRenderer`, and with a painter redefined to render
the SVG item."""
+
def setSvgRenderer(self, renderer):
"""
@@ -543,6 +568,7 @@ class _GraphicsSvgRectItem(qt.QGraphicsRectItem):
class _GraphicsResizeRectItem(qt.QGraphicsRectItem):
"""Resizable QGraphicsRectItem."""
+
def __init__(self, parent=None, scene=None, keepratio=True):
qt.QGraphicsRectItem.__init__(self, parent)
rect = parent.boundingRect()
@@ -561,7 +587,7 @@ class _GraphicsResizeRectItem(qt.QGraphicsRectItem):
pen.setStyle(qt.Qt.NoPen)
self.setPen(pen)
self.setBrush(color)
- self.setFlag(self.ItemIsMovable, True)
+ self.setFlag(qt.QGraphicsItem.ItemIsMovable, True)
self.show()
def hoverEnterEvent(self, event):
@@ -602,10 +628,7 @@ class _GraphicsResizeRectItem(qt.QGraphicsRectItem):
self._h = rect.height()
self._ratio = self._w / self._h
self._newRect = qt.QGraphicsRectItem(parent)
- self._newRect.setRect(qt.QRectF(self._x,
- self._y,
- self._w,
- self._h))
+ self._newRect.setRect(qt.QRectF(self._x, self._y, self._w, self._h))
qt.QGraphicsRectItem.mousePressEvent(self, event)
def mouseMoveEvent(self, event):
@@ -616,20 +639,27 @@ class _GraphicsResizeRectItem(qt.QGraphicsRectItem):
r1 = (self._w + deltax) / self._w
r2 = (self._h + deltay) / self._h
if r1 < r2:
- self._newRect.setRect(qt.QRectF(self._x,
- self._y,
- self._w + deltax,
- (self._w + deltax) / self._ratio))
+ self._newRect.setRect(
+ qt.QRectF(
+ self._x,
+ self._y,
+ self._w + deltax,
+ (self._w + deltax) / self._ratio,
+ )
+ )
else:
- self._newRect.setRect(qt.QRectF(self._x,
- self._y,
- (self._h + deltay) * self._ratio,
- self._h + deltay))
+ self._newRect.setRect(
+ qt.QRectF(
+ self._x,
+ self._y,
+ (self._h + deltay) * self._ratio,
+ self._h + deltay,
+ )
+ )
else:
- self._newRect.setRect(qt.QRectF(self._x,
- self._y,
- self._w + deltax,
- self._h + deltay))
+ self._newRect.setRect(
+ qt.QRectF(self._x, self._y, self._w + deltax, self._h + deltay)
+ )
qt.QGraphicsRectItem.mouseMoveEvent(self, event)
def mouseReleaseEvent(self, event):
@@ -649,8 +679,7 @@ class _GraphicsResizeRectItem(qt.QGraphicsRectItem):
# apply the scale to the previous transformation matrix
previousTransform = parent.transform()
- parent.setTransform(
- previousTransform.scale(scalex, scaley))
+ parent.setTransform(previousTransform.scale(scalex, scaley))
self.scene().removeItem(self._newRect)
self._newRect = None
@@ -658,8 +687,7 @@ class _GraphicsResizeRectItem(qt.QGraphicsRectItem):
def main():
- """
- """
+ """ """
if len(sys.argv) < 2:
print("give an image file as parameter please.")
sys.exit(1)
@@ -678,19 +706,20 @@ def main():
if filename[-3:] == "svg":
item = qt.QSvgRenderer(filename, w.page)
- w.addSvgItem(item, title=filename,
- comment=comment, commentPosition="CENTER")
+ w.addSvgItem(item, title=filename, comment=comment, commentPosition="CENTER")
else:
- w.addPixmap(qt.QPixmap.fromImage(qt.QImage(filename)),
- title=filename,
- comment=comment,
- commentPosition="CENTER")
+ w.addPixmap(
+ qt.QPixmap.fromImage(qt.QImage(filename)),
+ title=filename,
+ comment=comment,
+ commentPosition="CENTER",
+ )
w.addImage(qt.QImage(filename), comment=comment, commentPosition="LEFT")
sys.exit(w.exec())
-if __name__ == '__main__':
+if __name__ == "__main__":
a = qt.QApplication(sys.argv)
main()
a.exec()