eric6/Snapshot/SnapshotPreview.py

Sat, 10 Apr 2021 18:38:27 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 10 Apr 2021 18:38:27 +0200
changeset 8218
7c09585bd960
parent 8143
2c730d5fd177
child 8260
2161475d9639
permissions
-rw-r--r--

Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).

# -*- coding: utf-8 -*-

# Copyright (c) 2012 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module implementing the snapshot preview label.
"""

from PyQt5.QtCore import pyqtSignal, QPoint, Qt
from PyQt5.QtWidgets import QLabel, QApplication


class SnapshotPreview(QLabel):
    """
    Class implementing the snapshot preview label.
    
    @signal startDrag() emitted to indicate the start of a drag operation
    """
    startDrag = pyqtSignal()
    
    def __init__(self, parent=None):
        """
        Constructor
        
        @param parent reference to the parent widget (QWidget)
        """
        super().__init__(parent)
        
        self.setAlignment(Qt.AlignmentFlag.AlignHCenter |
                          Qt.AlignmentFlag.AlignCenter)
        self.setCursor(Qt.CursorShape.OpenHandCursor)
        
        self.__mouseClickPoint = QPoint(0, 0)
    
    def setPreview(self, preview):
        """
        Public slot to set the preview picture.
        
        @param preview preview picture to be shown (QPixmap)
        """
        if not preview.isNull():
            pixmap = preview.scaled(
                self.width(), self.height(),
                Qt.AspectRatioMode.KeepAspectRatio,
                Qt.TransformationMode.SmoothTransformation)
        else:
            pixmap = preview
        self.setPixmap(pixmap)
    
    def mousePressEvent(self, evt):
        """
        Protected method to handle mouse button presses.
        
        @param evt mouse button press event (QMouseEvent)
        """
        if evt.button() == Qt.MouseButton.LeftButton:
            self.__mouseClickPoint = evt.pos()
    
    def mouseReleaseEvent(self, evt):
        """
        Protected method to handle mouse button releases.
        
        @param evt mouse button release event (QMouseEvent)
        """
        self.__mouseClickPoint = QPoint(0, 0)
    
    def mouseMoveEvent(self, evt):
        """
        Protected method to handle mouse moves.
        
        @param evt mouse move event (QMouseEvent)
        """
        if (
            self.__mouseClickPoint != QPoint(0, 0) and
            (evt.pos() - self.__mouseClickPoint).manhattanLength() >
            QApplication.startDragDistance()
        ):
            self.__mouseClickPoint = QPoint(0, 0)
            self.startDrag.emit()

eric ide

mercurial