'Intercept method calls and apply to both actions, except signals.'

def __getattribute__(self, name):

    attr = super(SpyderAction, self).__getattribute__(name)
    if (hasattr(attr, '__call__') and (name not in ['triggered', 'toggled', 'changed', 'hovered'])):
        def newfunc(*args, **kwargs):
            result = attr(*args, **kwargs)
            if (name not in ['setIcon']):
                action_no_icon = self.__dict__['_action_no_icon']
                attr_no_icon = super(QAction, action_no_icon).__getattribute__(name)
                attr_no_icon(*args, **kwargs)
            return result
        return newfunc
    else:
        return attr
