def setCurrentAction(self, action):
        """
        Sets the current action for this widget that highlights the size
        for this toolbar.
        
        :param      action | <QAction>
        """
        if action == self._currentAction:
            return
        
        self._currentAction = action
        self.currentActionChanged.emit(action)
        
        labels   = self.actionLabels()
        anim_grp = QParallelAnimationGroup(self)
        max_size = self.maximumPixmapSize()
        min_size = self.minimumPixmapSize()
        
        if action:
            label = self.labelForAction(action)
            index = labels.index(label)
            
            # create the highlight effect
            palette = self.palette()
            effect = QGraphicsDropShadowEffect(label)
            effect.setXOffset(0)
            effect.setYOffset(0)
            effect.setBlurRadius(20)
            effect.setColor(QColor(40, 40, 40))
            label.setGraphicsEffect(effect)
            
            offset = self.padding()
            if self.position() in (XDockToolbar.Position.East,
                                   XDockToolbar.Position.West):
                self.resize(max_size.width() + offset, self.height())
            
            elif self.position() in (XDockToolbar.Position.North,
                                     XDockToolbar.Position.South):
                self.resize(self.width(), max_size.height() + offset)
            
            w  = max_size.width()
            h  = max_size.height()
            dw = (max_size.width() - min_size.width()) / 3
            dh = (max_size.height() - min_size.height()) / 3
            
            for i in range(4):
                before = index - i
                after  = index + i
                
                if 0 <= before and before < len(labels):
                    anim = XObjectAnimation(labels[before],
                                            'setPixmapSize',
                                            anim_grp)
                    
                    anim.setEasingCurve(self.easingCurve())
                    anim.setStartValue(labels[before].pixmapSize())
                    anim.setEndValue(QSize(w, h))
                    anim.setDuration(self.duration())
                    anim_grp.addAnimation(anim)
                    
                    if i:
                        labels[before].setGraphicsEffect(None)
                
                if after != before and 0 <= after and after < len(labels):
                    anim = XObjectAnimation(labels[after],
                                            'setPixmapSize',
                                            anim_grp)
                    
                    anim.setEasingCurve(self.easingCurve())
                    anim.setStartValue(labels[after].pixmapSize())
                    anim.setEndValue(QSize(w, h))
                    anim.setDuration(self.duration())
                    anim_grp.addAnimation(anim)
                    
                    if i:
                        labels[after].setGraphicsEffect(None)
            
                w -= dw
                h -= dh
        else:
            offset = self.padding()
            for label in self.actionLabels():
                # clear the graphics effect 
                label.setGraphicsEffect(None)
                
                # create the animation
                anim = XObjectAnimation(label, 'setPixmapSize', self)
                anim.setEasingCurve(self.easingCurve())
                anim.setStartValue(label.pixmapSize())
                anim.setEndValue(min_size)
                anim.setDuration(self.duration())
                anim_grp.addAnimation(anim)
            
            anim_grp.finished.connect(self.resizeToMinimum)
        
        anim_grp.start()
        self._animating = True
        anim_grp.finished.connect(anim_grp.deleteLater)
        anim_grp.finished.connect(self.__markAnimatingFinished)
        
        if self._currentAction:
            self._hoverTimer.start()
        else:
            self._hoverTimer.stop()
def setCurrentAction ( self , action ) : if action == self . _currentAction : return self . _currentAction = action self . currentActionChanged . emit ( action ) labels = self . actionLabels ( ) anim_grp = QParallelAnimationGroup ( self ) max_size = self . maximumPixmapSize ( ) min_size = self . minimumPixmapSize ( ) if action : label = self . labelForAction ( action ) index = labels . index ( label ) palette = self . palette ( ) effect = QGraphicsDropShadowEffect ( label ) effect . setXOffset ( 0 ) effect . setYOffset ( 0 ) effect . setBlurRadius ( 20 ) effect . setColor ( QColor ( 40 , 40 , 40 ) ) label . setGraphicsEffect ( effect ) offset = self . padding ( ) if self . position ( ) in ( XDockToolbar . Position . East , XDockToolbar . Position . West ) : self . resize ( max_size . width ( ) + offset , self . height ( ) ) elif self . position ( ) in ( XDockToolbar . Position . North , XDockToolbar . Position . South ) : self . resize ( self . width ( ) , max_size . height ( ) + offset ) w = max_size . width ( ) h = max_size . height ( ) dw = ( max_size . width ( ) - min_size . width ( ) ) / 3 dh = ( max_size . height ( ) - min_size . height ( ) ) / 3 for i in range ( 4 ) : before = index - i after = index + i if 0 <= before and before < len ( labels ) : anim = XObjectAnimation ( labels [ before ] , 'setPixmapSize' , anim_grp ) anim . setEasingCurve ( self . easingCurve ( ) ) anim . setStartValue ( labels [ before ] . pixmapSize ( ) ) anim . setEndValue ( QSize ( w , h ) ) anim . setDuration ( self . duration ( ) ) anim_grp . addAnimation ( anim ) if i : labels [ before ] . setGraphicsEffect ( None ) if after != before and 0 <= after and after < len ( labels ) : anim = XObjectAnimation ( labels [ after ] , 'setPixmapSize' , anim_grp ) anim . setEasingCurve ( self . easingCurve ( ) ) anim . setStartValue ( labels [ after ] . pixmapSize ( ) ) anim . setEndValue ( QSize ( w , h ) ) anim . setDuration ( self . duration ( ) ) anim_grp . addAnimation ( anim ) if i : labels [ after ] . setGraphicsEffect ( None ) w -= dw h -= dh else : offset = self . padding ( ) for label in self . actionLabels ( ) : label . setGraphicsEffect ( None ) anim = XObjectAnimation ( label , 'setPixmapSize' , self ) anim . setEasingCurve ( self . easingCurve ( ) ) anim . setStartValue ( label . pixmapSize ( ) ) anim . setEndValue ( min_size ) anim . setDuration ( self . duration ( ) ) anim_grp . addAnimation ( anim ) anim_grp . finished . connect ( self . resizeToMinimum ) anim_grp . start ( ) self . _animating = True anim_grp . finished . connect ( anim_grp . deleteLater ) anim_grp . finished . connect ( self . __markAnimatingFinished ) if self . _currentAction : self . _hoverTimer . start ( ) else : self . _hoverTimer . stop ( )
Sets the current action for this widget that highlights the size
        for this toolbar.
        
        :param      action | <QAction>