diff options
| author | tassaron | 2017-08-14 16:39:53 -0400 |
|---|---|---|
| committer | tassaron | 2017-08-14 16:39:53 -0400 |
| commit | a327bec4e42cc572fb84e559025e888a4a20edd3 (patch) | |
| tree | 2b98cec6f27eda23389e1ec25b0e5cc0432de7f4 /src/gui/preview_win.py | |
| parent | 39d6a4e5af94a8aa612a009bbe235715b84e7abc (diff) | |
organizing GUImode-specific code
Diffstat (limited to 'src/gui/preview_win.py')
| -rw-r--r-- | src/gui/preview_win.py | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/gui/preview_win.py b/src/gui/preview_win.py new file mode 100644 index 0000000..40c19c6 --- /dev/null +++ b/src/gui/preview_win.py @@ -0,0 +1,62 @@ +from PyQt5 import QtCore, QtGui, QtWidgets +import logging + + +class PreviewWindow(QtWidgets.QLabel): + ''' + Paints the preview QLabel in MainWindow and maintains the aspect ratio + when the window is resized. + ''' + log = logging.getLogger('AVP.PreviewWindow') + + def __init__(self, parent, img): + super(PreviewWindow, self).__init__() + self.parent = parent + self.setFrameStyle(QtWidgets.QFrame.StyledPanel) + self.pixmap = QtGui.QPixmap(img) + + def paintEvent(self, event): + size = self.size() + painter = QtGui.QPainter(self) + point = QtCore.QPoint(0, 0) + scaledPix = self.pixmap.scaled( + size, + QtCore.Qt.KeepAspectRatio, + transformMode=QtCore.Qt.SmoothTransformation) + + # start painting the label from left upper corner + point.setX((size.width() - scaledPix.width())/2) + point.setY((size.height() - scaledPix.height())/2) + painter.drawPixmap(point, scaledPix) + + def changePixmap(self, img): + self.pixmap = QtGui.QPixmap(img) + self.repaint() + + def mousePressEvent(self, event): + if self.parent.encoding: + return + + i = self.parent.window.listWidget_componentList.currentRow() + if i >= 0: + component = self.parent.core.selectedComponents[i] + if not hasattr(component, 'previewClickEvent'): + self.log.info('Ignored click event') + return + pos = (event.x(), event.y()) + size = (self.width(), self.height()) + butt = event.button() + self.log.info('Click event for #%s: %s button %s' % ( + i, pos, butt)) + component.previewClickEvent( + pos, size, butt + ) + self.parent.core.updateComponent(i) + + @QtCore.pyqtSlot(str) + def threadError(self, msg): + self.parent.showMessage( + msg=msg, + icon='Critical', + parent=self + ) |
