Skip to content

Commit

Permalink
canvas nodeitem: flashing errors, warnings in canvas
Browse files Browse the repository at this point in the history
  • Loading branch information
irgolic committed May 16, 2019
1 parent 2e655ab commit 6ce0213
Showing 1 changed file with 24 additions and 3 deletions.
27 changes: 24 additions & 3 deletions Orange/canvas/canvas/items/nodeitem.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@
QPainterPathStroker
)
from AnyQt.QtCore import (
Qt, QEvent, QPointF, QRectF, QRect, QSize, QTime, QTimer, QPropertyAnimation
)
Qt, QEvent, QPointF, QRectF, QRect, QSize, QTime, QTimer, QPropertyAnimation,
QEasingCurve)
from AnyQt.QtCore import pyqtSignal as Signal, pyqtProperty as Property

from .graphicspathobject import GraphicsPathObject
Expand Down Expand Up @@ -587,7 +587,7 @@ def standard_icon(standard_pixmap):
return style.standardIcon(standard_pixmap)


class GraphicsIconItem(QGraphicsItem):
class GraphicsIconItem(QGraphicsWidget):
"""
A graphics item displaying an :class:`QIcon`.
"""
Expand All @@ -608,6 +608,15 @@ def __init__(self, parent=None, icon=None, iconSize=None, **kwargs):
self.__iconSize = QSize(iconSize)
self.__icon = QIcon(icon)

self._opacity = 1
self.anim = QPropertyAnimation(self, b"opacity")
self.anim.setDuration(350)
self.anim.setStartValue(1)
self.anim.setKeyValueAt(0.5, 0)
self.anim.setEndValue(1)
self.anim.setEasingCurve(QEasingCurve.OutQuad)
self.anim.setLoopCount(2)

def setIcon(self, icon):
"""
Set the icon (:class:`QIcon`).
Expand All @@ -616,6 +625,15 @@ def setIcon(self, icon):
self.__icon = QIcon(icon)
self.update()

def getOpacity(self):
return self._opacity

def setOpacity(self, o):
self._opacity = o
self.update()

opacity = Property(float, fget=getOpacity, fset=setOpacity)

def icon(self):
"""
Return the icon (:class:`QIcon`).
Expand Down Expand Up @@ -673,6 +691,7 @@ def paint(self, painter, option, widget=None):
QPainter.SmoothPixmapTransform,
self.__transformationMode == Qt.SmoothTransformation
)
painter.setOpacity(self._opacity)
self.__icon.paint(painter, target, Qt.AlignCenter, mode)


Expand Down Expand Up @@ -1227,6 +1246,8 @@ def __updateMessages(self):
messages = [self.__error, self.__warning, self.__info]
for message, item in zip(messages, items):
item.setVisible(bool(message))
if bool(message):
item.anim.start(QPropertyAnimation.KeepWhenStopped)
item.setToolTip(message or "")

shown = [item for item in items if item.isVisible()]
Expand Down

0 comments on commit 6ce0213

Please sign in to comment.