Changeset 11172:b9add0151621 in orange


Ignore:
Timestamp:
11/06/12 13:48:32 (18 months ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Compatibility fixes for PyQt4 < 4.9

Location:
Orange/OrangeCanvas/canvas
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/canvas/items/annotationitem.py

    r11161 r11172  
    99 
    1010from PyQt4.QtCore import ( 
    11     Qt, QSizeF, QRectF, QLineF, QEvent 
     11    Qt, QSizeF, QRectF, QLineF, QEvent, qVersion 
    1212) 
    1313 
     
    2424    def __init__(self, parent=None, **kwargs): 
    2525        QGraphicsWidget.__init__(self, parent, **kwargs) 
     26 
     27    if qVersion() < "4.7": 
     28        geometryChanged = Signal() 
     29 
     30        def setGeometry(self, rect): 
     31            QGraphicsWidget.setGeometry(self, rect) 
     32            self.geometryChanged.emit() 
    2633 
    2734 
  • Orange/OrangeCanvas/canvas/items/controlpoints.py

    r11161 r11172  
    88 
    99from .graphicspathobject import GraphicsPathObject 
     10from .utils import toGraphicsObjectIfPossible 
    1011 
    1112log = logging.getLogger(__name__) 
     
    210211    def sceneEventFilter(self, obj, event): 
    211212        try: 
     213            obj = toGraphicsObjectIfPossible(obj) 
    212214            if isinstance(obj, ControlPoint): 
    213215                etype = event.type() 
     
    366368    def sceneEventFilter(self, obj, event): 
    367369        try: 
     370            obj = toGraphicsObjectIfPossible(obj) 
    368371            if isinstance(obj, ControlPoint): 
    369372                etype = event.type() 
  • Orange/OrangeCanvas/canvas/items/utils.py

    r11102 r11172  
    11import numpy 
    22 
    3 from PyQt4.QtGui import QColor, QRadialGradient 
     3from PyQt4.QtGui import QColor, QRadialGradient, QGraphicsItem 
    44 
    55 
     
    4141    gradient.setCoordinateMode(QRadialGradient.ObjectBoundingMode) 
    4242    return gradient 
     43 
     44 
     45def toGraphicsObjectIfPossible(item): 
     46    """Return the item as a QGraphicsObject if possible. 
     47 
     48    This function is intended as a workaround for a problem with older 
     49    versions of PyQt (< 4.9), where methods returning 'QGraphicsItem *' 
     50    lose the type of the QGraphicsObject subclasses and instead return 
     51    generic QGraphicsItem wrappers. 
     52 
     53    """ 
     54    obj = item.toGraphicsObject() 
     55    return item if obj is None else obj 
  • Orange/OrangeCanvas/canvas/scene.py

    r11169 r11172  
    2020 
    2121from . import items 
     22from .items.utils import toGraphicsObjectIfPossible 
    2223 
    2324log = logging.getLogger(__name__) 
     
    573574        item = self.__item_for_annotation[annot] 
    574575        if isinstance(annot, scheme.SchemeTextAnnotation): 
    575             item.setGeometry(*annot.rect) 
     576            item.setGeometry(QRectF(*annot.rect)) 
    576577        elif isinstance(annot, scheme.SchemeArrowAnnotation): 
    577578            p1 = item.mapFromScene(QPointF(*annot.start_pos)) 
     
    590591 
    591592    if PYQT_VERSION_STR < "4.9": 
    592         # For QGraphicsObject subclasses items/itemAt returns a QGraphicsItem 
    593         # wrapper instance and not the actual class instance. 
    594         def _toGraphicsObjectIfPossible(self, item): 
    595             """Return the item instance as a QGraphicsObject (or subclass) 
    596             if possible, otherwise return item unmodified. 
    597  
    598             """ 
    599             graphicsObject = item.toGraphicsObject() 
    600             if graphicsObject is not None: 
    601                 return graphicsObject 
    602             else: 
    603                 return item 
    604  
     593        # For QGraphicsObject subclasses items, itemAt ... return a 
     594        # QGraphicsItem wrapper instance and not the actual class instance. 
    605595        def itemAt(self, *args, **kwargs): 
    606596            item = QGraphicsScene.itemAt(self, *args, **kwargs) 
    607             return self._toGraphicsObjectIfPossible(item) 
     597            return toGraphicsObjectIfPossible(item) 
    608598 
    609599        def items(self, *args, **kwargs): 
    610600            items = QGraphicsScene.items(self, *args, **kwargs) 
    611             return map(self._toGraphicsObjectIfPossible, items) 
     601            return map(toGraphicsObjectIfPossible, items) 
     602 
     603        def selectedItems(self, *args, **kwargs): 
     604            return map(toGraphicsObjectIfPossible, 
     605                       QGraphicsScene.selectedItems(self, *args, **kwargs)) 
     606 
     607        def collidingItems(self, *args, **kwargs): 
     608            return map(toGraphicsObjectIfPossible, 
     609                       QGraphicsScene.collidingItems(self, *args, **kwargs)) 
     610 
     611        def focusItem(self, *args, **kwargs): 
     612            item = QGraphicsScene.focusItem(self, *args, **kwargs) 
     613            return toGraphicsObjectIfPossible(item) 
     614 
     615        def mouseGrabberItem(self, *args, **kwargs): 
     616            item = QGraphicsScene.mouseGrabberItem(self, *args, **kwargs) 
     617            return toGraphicsObjectIfPossible(item) 
    612618 
    613619    def mousePressEvent(self, event): 
Note: See TracChangeset for help on using the changeset viewer.