Ignore:
Timestamp:
03/16/12 18:27:37 (2 years ago)
Author:
Ales Erjavec <ales.erjavec@…>
Branch:
default
Message:

Reenabled the drop shadows in the canvas. It is still of by default.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Orange/OrangeCanvas/orngCanvasItems.py

    r9671 r10560  
    99WARNING = 1 
    1010 
    11 #def _graphicsEffect(item): 
    12 #    if hasattr(item, "graphicsEffect"): 
    13 #        return item.graphicsEffect() 
    14 #    else: 
    15 #        return None 
     11def getDropShadow(item): 
     12    if hasattr(item, "graphicsEffect"): 
     13        return item.graphicsEffect() 
     14    else: 
     15        return None 
     16     
     17def setDropShadow(self): 
     18    if qVersion() >= "4.6" and self.canvasDlg.settings["enableCanvasDropShadows"]: 
     19        effect = QGraphicsDropShadowEffect(self.scene()) 
     20        effect.setOffset(QPointF(0.3, 0.5)) 
     21        effect.setBlurRadius(5) 
     22        self.setGraphicsEffect(effect) 
    1623     
    1724class TempCanvasLine(QGraphicsPathItem): 
     
    2633        self.setPen(QPen(QColor(180, 180, 180), 3, Qt.SolidLine)) 
    2734         
    28 #        if qVersion() >= "4.6" and canvasDlg.settings["enableCanvasDropShadows"]: 
    29 #            effect = QGraphicsDropShadowEffect(self.scene()) 
    30 #            effect.setOffset(QPointF(0.0, 0.0)) 
    31 #            effect.setBlurRadius(7) 
    32 #            self.setGraphicsEffect(effect)         
    33          
     35        self.setDropShadow() 
     36     
     37    setDropShadow = setDropShadow 
     38    getDropShadow = getDropShadow 
     39     
    3440    def setStartWidget(self, widget): 
    3541        self.startWidget = widget 
     
    8894        self.hide() 
    8995        self.startWidget = None 
    90         self.endWidget = None  
     96        self.endWidget = None 
     97         
     98        self.prepareGeometryChange() 
     99         
     100        if self.getDropShadow(): 
     101            self.setGraphicsEffect(None) 
     102              
     103        for child in self.childItems(): 
     104            child.hide() 
     105            child.setParentItem(None) 
     106            self.scene().removeItem(child) 
     107             
     108        self.hide() 
    91109        self.scene().removeItem(self) 
    92110 
     
    120138        self.setAcceptHoverEvents(True) 
    121139        self.hoverState = False 
    122          
    123 #        if qVersion() >= "4.6" and canvasDlg.settings["enableCanvasDropShadows"]: 
    124 #            effect = QGraphicsDropShadowEffect(self.scene()) 
    125 #            effect.setOffset(QPointF(0.0, 0.0)) 
    126 #            effect.setBlurRadius(7) 
    127 #            self.setGraphicsEffect(effect) 
    128 #            self.prepareGeometryChange() 
    129140             
    130141        if scene is not None: 
     
    134145             
    135146        QObject.connect(self.outWidget.instance, SIGNAL("dynamicLinkEnabledChanged(PyQt_PyObject, bool)"), self.updateDynamicEnableState) 
    136  
     147         
     148        self.setDropShadow() 
     149         
     150    setDropShadow = setDropShadow 
     151    getDropShadow = getDropShadow 
     152     
    137153    def remove(self): 
    138154        self.hide() 
     
    140156        self.outWidget = None 
    141157        self.inWidget = None 
     158         
     159        self.prepareGeometryChange() 
     160         
     161        if self.getDropShadow(): 
     162            self.setGraphicsEffect(None) 
     163             
     164        for child in self.childItems(): 
     165            child.hide() 
     166            child.setParentItem(None) 
     167            self.scene().removeItem(child) 
     168             
     169        self.hide() 
    142170        self.scene().removeItem(self) 
     171        QApplication.instance().processEvents(QEventLoop.ExcludeUserInputEvents) 
    143172         
    144173    def getEnabled(self): 
     
    193222        return stroke.createStroke(self.path()) 
    194223     
    195 #    def boundingRect(self): 
    196 #        rect = QGraphicsPathItem.boundingRect(self) 
    197 #        if _graphicsEffect(self): 
    198 #            textRect = self.captionItem.boundingRect() ## Should work without this but for some reason if using graphics effects the text gets clipped 
    199 #            textRect.moveTo(self.captionItem.pos()) 
    200 #            return rect.united(textRect) 
    201 #        else: 
    202 #            return rect 
     224    def boundingRect(self): 
     225        rect = QGraphicsPathItem.boundingRect(self) 
     226        if self.getDropShadow(): 
     227            textRect = self.captionItem.boundingRect() ## Should work without this but for some reason if using graphics effects the text gets clipped 
     228            textRect.moveTo(self.captionItem.pos()) 
     229            return rect.united(textRect) 
     230        else: 
     231            return rect 
    203232 
    204233    def paint(self, painter, option, widget = None): 
     
    309338        self.setFlags(QGraphicsItem.ItemIsSelectable)# | QGraphicsItem.ItemIsMovable) 
    310339         
    311 #        if qVersion() >= "4.6" and self.canvasDlg.settings["enableCanvasDropShadows"]: 
    312 #            effect = QGraphicsDropShadowEffect() 
    313 #            effect.setOffset(QPointF(1.1, 3.1)) 
    314 #            effect.setBlurRadius(7) 
    315 #            self.setGraphicsEffect(effect) 
    316 #            self.prepareGeometryChange() 
    317              
    318340        if scene is not None: 
    319341            scene.addItem(self) 
    320  
     342             
     343        self.setDropShadow() 
     344 
     345    setDropShadow = setDropShadow 
     346    getDropShadow = getDropShadow 
     347     
    321348    def resetWidgetSize(self): 
    322349        size = self.canvasDlg.schemeIconSizeList[self.canvasDlg.settings['schemeIconSize']] 
     
    366393            self.instance.setEventHandler(None) 
    367394            self.instance.onDeleteWidget()      # this is a cleanup function that can take care of deleting some unused objects 
    368             try: 
    369                 import sip 
    370                 sip.delete(self.instance) 
    371             except Exception, ex: 
    372                 print >> sys.stderr, "Error deleting the widget: \n%s" % str(ex) 
     395             
     396            # Schedule the widget instance for deletion 
     397            self.instance.deleteLater() 
    373398            self.instance = None 
    374399             
    375             self.scene().removeItem(self) 
    376                  
    377  
     400        self.prepareGeometryChange() 
     401         
     402        if self.getDropShadow(): 
     403            self.setGraphicsEffect(None) 
     404         
     405        for child in self.childItems(): 
     406            child.hide() 
     407            child.setParentItem(None) 
     408            self.scene().removeItem(child) 
     409         
     410        self.hide() 
     411        self.scene().removeItem(self) 
     412         
    378413    def savePosition(self): 
    379414        self.oldPos = self.pos() 
     
    438473        rect = QRectF(QPointF(0, 0), self.widgetSize).adjusted(-11, -6, 11, 6)#.adjusted(-100, -100, 100, 100) #(-10-width, -4, +10+width, +25) 
    439474        rect.setTop(rect.top() - 20 - 21) ## Room for progress bar and warning, error, info icons 
    440 #        if _graphicsEffect(self): 
    441 #            textRect = self.captionItem.boundingRect() ## Should work without this but for some reason if using graphics effects the text gets clipped 
    442 #            textRect.moveTo(self.captionItem.pos())  
    443         return rect 
     475        if self.getDropShadow(): 
     476            textRect = self.captionItem.boundingRect() ## Should work without this but for some reason if using graphics effects the text gets clipped 
     477            textRect.moveTo(self.captionItem.pos())  
     478            return rect.united(textRect) 
     479        else: 
     480            return rect 
    444481 
    445482    # is mouse position inside the left signal channel 
Note: See TracChangeset for help on using the changeset viewer.