Ejemplo n.º 1
0
void
KnobGui::onUnlinkActionTriggered()
{
    QAction* action = qobject_cast<QAction*>( sender() );

    if (!action) {
        return;
    }
    int dim = action->data().toInt();
    KnobPtr thisKnob = getKnob();
    int dims = thisKnob->getDimension();
    KnobPtr aliasMaster = thisKnob->getAliasMaster();
    if (aliasMaster) {
        thisKnob->setKnobAsAliasOfThis(aliasMaster, false);
    } else {
        thisKnob->beginChanges();
        for (int i = 0; i < dims; ++i) {
            if ( (dim == -1) || (i == dim) ) {
                std::pair<int, KnobPtr > other = thisKnob->getMaster(i);
                thisKnob->onKnobUnSlaved(i);
                onKnobSlavedChanged(i, false);
            }
        }
        thisKnob->endChanges();
    }
    getKnob()->getHolder()->getApp()->triggerAutoSave();
}
Ejemplo n.º 2
0
void
KnobGui::onRemoveAliasLinkActionTriggered()
{
    KnobPtr thisKnob = getKnob();
    KnobI::ListenerDimsMap listeners;

    thisKnob->getListeners(listeners);
    KnobPtr aliasMaster;
    KnobPtr listener;
    if ( !listeners.empty() ) {
        listener = listeners.begin()->first.lock();
        if (listener) {
            aliasMaster = listener->getAliasMaster();
        }
        if (aliasMaster != thisKnob) {
            aliasMaster.reset();
        }
    }
    if (aliasMaster && listener) {
        listener->setKnobAsAliasOfThis(aliasMaster, false);
    }
}