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(); }
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); } }