void KnobGui::onExprChanged(int dimension) { if (_imp->guiRemoved) { return; } KnobPtr knob = getKnob(); std::string exp = knob->getExpression(dimension); reflectExpressionState(dimension,!exp.empty()); if (exp.empty()) { reflectAnimationLevel(dimension, knob->getAnimationLevel(dimension)); } else { NodeSettingsPanel* isNodeSettings = dynamic_cast<NodeSettingsPanel*>(_imp->container); if (isNodeSettings) { NodeGuiPtr node = isNodeSettings->getNode(); if (node) { node->onKnobExpressionChanged(this); } } if (_imp->warningIndicator) { bool invalid = false; QString fullErrTooltip; int dims = knob->getDimension(); for (int i = 0; i < dims; ++i) { std::string err; if (!knob->isExpressionValid(i, &err)) { invalid = true; } if (dims > 1 && invalid) { fullErrTooltip += QString::fromUtf8("<p><b>"); fullErrTooltip += QString::fromUtf8(knob->getDimensionName(i).c_str()); fullErrTooltip += QString::fromUtf8("</b></p>"); } if (!err.empty()) { fullErrTooltip += QString::fromUtf8(err.c_str()); } } if (invalid) { QString toPrepend; toPrepend += QString::fromUtf8("<p>"); toPrepend += QObject::tr("Invalid expression(s), value returned is the underlying curve:"); toPrepend += QString::fromUtf8("</p>"); fullErrTooltip.prepend(toPrepend); setWarningValue(eKnobWarningExpressionInvalid, fullErrTooltip); } else { setWarningValue(eKnobWarningExpressionInvalid, QString()); } } onHelpChanged(); Q_EMIT expressionChanged(); } updateGUI(dimension); }
void KnobGui::onAnimationLevelChanged(ViewSpec /*idx*/, int dimension) { if (!_imp->customInteract) { KnobPtr knob = getKnob(); int dim = knob->getDimension(); for (int i = 0; i < dim; ++i) { if ( (i == dimension) || (dimension == -1) ) { reflectAnimationLevel( i, knob->getAnimationLevel(i) ); } } } }