MCPcopy Create free account
hub / github.com/NatronGitHub/Natron / restoreUserKnobsRecursive

Method restoreUserKnobsRecursive

Engine/NodeMain.cpp:325–653  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

323}
324
325void
326Node::Implementation::restoreUserKnobsRecursive(const std::list<KnobSerializationBasePtr>& knobs,
327 const KnobGroupPtr& group,
328 const KnobPagePtr& page)
329{
330 for (std::list<KnobSerializationBasePtr>::const_iterator it = knobs.begin(); it != knobs.end(); ++it) {
331 GroupKnobSerialization* isGrp = dynamic_cast<GroupKnobSerialization*>( it->get() );
332 KnobSerialization* isRegular = dynamic_cast<KnobSerialization*>( it->get() );
333 assert(isGrp || isRegular);
334
335 KnobIPtr found = _publicInterface->getKnobByName( (*it)->getName() );
336
337 if (isGrp) {
338 KnobGroupPtr grp;
339 if (!found) {
340 grp = AppManager::createKnob<KnobGroup>(effect.get(), isGrp->getLabel(), 1, false);
341 } else {
342 grp = std::dynamic_pointer_cast<KnobGroup>(found);
343 if (!grp) {
344 continue;
345 }
346 }
347 grp->setAsUserKnob(true);
348 grp->setName( (*it)->getName() );
349 if ( isGrp && isGrp->isSetAsTab() ) {
350 grp->setAsTab();
351 }
352 page->addKnob(grp);
353 if (group) {
354 group->addKnob(grp);
355 }
356 grp->setValue( isGrp->isOpened() );
357 restoreUserKnobsRecursive(isGrp->getChildren(), grp, page);
358 } else if (isRegular) {
359 assert( isRegular->isUserKnob() );
360 KnobIPtr sKnob = isRegular->getKnob();
361 KnobIPtr knob;
362 KnobInt* isInt = dynamic_cast<KnobInt*>( sKnob.get() );
363 KnobDouble* isDbl = dynamic_cast<KnobDouble*>( sKnob.get() );
364 KnobBool* isBool = dynamic_cast<KnobBool*>( sKnob.get() );
365 KnobChoice* isChoice = dynamic_cast<KnobChoice*>( sKnob.get() );
366 KnobColor* isColor = dynamic_cast<KnobColor*>( sKnob.get() );
367 KnobString* isStr = dynamic_cast<KnobString*>( sKnob.get() );
368 KnobFile* isFile = dynamic_cast<KnobFile*>( sKnob.get() );
369 KnobOutputFile* isOutFile = dynamic_cast<KnobOutputFile*>( sKnob.get() );
370 KnobPath* isPath = dynamic_cast<KnobPath*>( sKnob.get() );
371 KnobButton* isBtn = dynamic_cast<KnobButton*>( sKnob.get() );
372 KnobSeparator* isSep = dynamic_cast<KnobSeparator*>( sKnob.get() );
373 KnobParametric* isParametric = dynamic_cast<KnobParametric*>( sKnob.get() );
374
375 assert(isInt || isDbl || isBool || isChoice || isColor || isStr || isFile || isOutFile || isPath || isBtn || isSep || isParametric);
376
377 if (isInt) {
378 KnobIntPtr k;
379
380 if (!found) {
381 k = AppManager::createKnob<KnobInt>(effect.get(), isRegular->getLabel(),
382 sKnob->getDimension(), false);

Callers 1

restoreUserKnobsMethod · 0.80

Calls 15

getNameMethod · 0.80
setAsUserKnobMethod · 0.80
getExtraDataMethod · 0.80
populateChoicesMethod · 0.80
setAsLabelMethod · 0.80
setAsMultiLineMethod · 0.80
setUsesRichTextMethod · 0.80
setAsOutputImageFileMethod · 0.80

Tested by

no test coverage detected