'Process new signals for the OWBaseWidget.'

def process_signals_for_widget(self, node, widget, signals):

    if sip.isdeleted(widget):
        log.critical('Widget    %r    was    deleted.    Cannot    process    signals', widget)
        return
    app = QCoreApplication.instance()
    for signal in signals:
        link = signal.link
        value = signal.value
        if link.is_dynamic():
            link.dynamic_enabled = can_enable_dynamic(link, value)
            if (not link.dynamic_enabled):
                value = None
        handler = link.sink_channel.handler
        if handler.startswith('self.'):
            handler = handler.split('.', 1)[1]
        handler = getattr(widget, handler)
        if link.sink_channel.single:
            args = (value,)
        else:
            args = (value, signal.id)
        log.debug('Process    signals:    calling    %s.%s    (from    %s    with    id:%s)', type(widget).__name__, handler.__name__, link, signal.id)
        app.setOverrideCursor(Qt.WaitCursor)
        try:
            handler(*args)
        except Exception:
            sys.excepthook(*sys.exc_info())
            log.exception("Error    calling    '%s'    of    '%s'", handler.__name__, node.title)
        finally:
            app.restoreOverrideCursor()
    app.setOverrideCursor(Qt.WaitCursor)
    try:
        widget.handleNewSignals()
    except Exception:
        sys.excepthook(*sys.exc_info())
        log.exception("Error    calling    'handleNewSignals()'    of    '%s'", node.title)
    finally:
        app.restoreOverrideCursor()
