int InputPatchEditor::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
{
    _id = QDialog::qt_metacall(_c, _id, _a);
    if (_id < 0)
        return _id;
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: reject(); break;
        case 1: accept(); break;
        case 2: slotMapCurrentItemChanged((*reinterpret_cast< QTreeWidgetItem*(*)>(_a[1]))); break;
        case 3: slotMapItemChanged((*reinterpret_cast< QTreeWidgetItem*(*)>(_a[1]))); break;
        case 4: slotConfigureInputClicked(); break;
        case 5: slotReconnectClicked(); break;
        case 6: slotFeedbackToggled((*reinterpret_cast< bool(*)>(_a[1]))); break;
        case 7: slotPluginConfigurationChanged((*reinterpret_cast< const QString(*)>(_a[1]))); break;
        case 8: slotProfileItemChanged((*reinterpret_cast< QTreeWidgetItem*(*)>(_a[1]))); break;
        case 9: slotAddProfileClicked(); break;
        case 10: slotRemoveProfileClicked(); break;
        case 11: slotEditProfileClicked(); break;
        default: ;
        }
        _id -= 12;
    }
    return _id;
}
void InputOutputPatchEditor::slotPluginConfigurationChanged(const QString& pluginName)
{
    QTreeWidgetItem* item = pluginItem(pluginName);
    if (item == NULL)
        return;

    /* Disable check state tracking while the item is being filled */
    disconnect(m_mapTree, SIGNAL(itemChanged(QTreeWidgetItem*,int)),
               this, SLOT(slotMapItemChanged(QTreeWidgetItem*, int)));

    /* Update the IO map */
    slotMapCurrentItemChanged(item);

    /* Enable check state tracking after the item has been filled */
    connect(m_mapTree, SIGNAL(itemChanged(QTreeWidgetItem*,int)),
            this, SLOT(slotMapItemChanged(QTreeWidgetItem*, int)));
}