62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
from PyQt5 import QtCore, QtGui, QtWidgets
|
|
import logging
|
|
|
|
log = logging.getLogger('AVP.Gui.PreviewWindow')
|
|
|
|
|
|
class PreviewWindow(QtWidgets.QLabel):
|
|
'''
|
|
Paints the preview QLabel in MainWindow and maintains the aspect ratio
|
|
when the window is resized.
|
|
'''
|
|
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'):
|
|
return
|
|
pos = (event.x(), event.y())
|
|
size = (self.width(), self.height())
|
|
butt = event.button()
|
|
log.info('Click event for #%s: %s button %s' % (
|
|
i, pos, butt))
|
|
component.previewClickEvent(
|
|
pos, size, butt
|
|
)
|
|
|
|
@QtCore.pyqtSlot(str)
|
|
def threadError(self, msg):
|
|
self.parent.showMessage(
|
|
msg=msg,
|
|
icon='Critical',
|
|
parent=self
|
|
)
|
|
log.info('%', repr(self.parent))
|