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

Method restoreUserKnobsRecursive

Engine/Node.cpp:2104–2432  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2102}
2103
2104void
2105Node::Implementation::restoreUserKnobsRecursive(const std::list<boost::shared_ptr<KnobSerializationBase> >& knobs,
2106 const boost::shared_ptr<KnobGroup>& group,
2107 const boost::shared_ptr<KnobPage>& page)
2108{
2109 for (std::list<boost::shared_ptr<KnobSerializationBase> >::const_iterator it = knobs.begin(); it != knobs.end(); ++it) {
2110 GroupKnobSerialization* isGrp = dynamic_cast<GroupKnobSerialization*>( it->get() );
2111 KnobSerialization* isRegular = dynamic_cast<KnobSerialization*>( it->get() );
2112 assert(isGrp || isRegular);
2113
2114 KnobPtr found = _publicInterface->getKnobByName( (*it)->getName() );
2115
2116 if (isGrp) {
2117 boost::shared_ptr<KnobGroup> grp;
2118 if (!found) {
2119 grp = AppManager::createKnob<KnobGroup>(effect.get(), isGrp->getLabel(), 1, false);
2120 } else {
2121 grp = boost::dynamic_pointer_cast<KnobGroup>(found);
2122 if (!grp) {
2123 continue;
2124 }
2125 }
2126 grp->setAsUserKnob(true);
2127 grp->setName( (*it)->getName() );
2128 if ( isGrp && isGrp->isSetAsTab() ) {
2129 grp->setAsTab();
2130 }
2131 page->addKnob(grp);
2132 if (group) {
2133 group->addKnob(grp);
2134 }
2135 grp->setValue( isGrp->isOpened() );
2136 restoreUserKnobsRecursive(isGrp->getChildren(), grp, page);
2137 } else if (isRegular) {
2138 assert( isRegular->isUserKnob() );
2139 KnobPtr sKnob = isRegular->getKnob();
2140 KnobPtr knob;
2141 KnobInt* isInt = dynamic_cast<KnobInt*>( sKnob.get() );
2142 KnobDouble* isDbl = dynamic_cast<KnobDouble*>( sKnob.get() );
2143 KnobBool* isBool = dynamic_cast<KnobBool*>( sKnob.get() );
2144 KnobChoice* isChoice = dynamic_cast<KnobChoice*>( sKnob.get() );
2145 KnobColor* isColor = dynamic_cast<KnobColor*>( sKnob.get() );
2146 KnobString* isStr = dynamic_cast<KnobString*>( sKnob.get() );
2147 KnobFile* isFile = dynamic_cast<KnobFile*>( sKnob.get() );
2148 KnobOutputFile* isOutFile = dynamic_cast<KnobOutputFile*>( sKnob.get() );
2149 KnobPath* isPath = dynamic_cast<KnobPath*>( sKnob.get() );
2150 KnobButton* isBtn = dynamic_cast<KnobButton*>( sKnob.get() );
2151 KnobSeparator* isSep = dynamic_cast<KnobSeparator*>( sKnob.get() );
2152 KnobParametric* isParametric = dynamic_cast<KnobParametric*>( sKnob.get() );
2153
2154 assert(isInt || isDbl || isBool || isChoice || isColor || isStr || isFile || isOutFile || isPath || isBtn || isSep || isParametric);
2155
2156 if (isInt) {
2157 boost::shared_ptr<KnobInt> k;
2158
2159 if (!found) {
2160 k = AppManager::createKnob<KnobInt>(effect.get(), isRegular->getLabel(),
2161 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