本文整理汇总了C++中CInterfaceElement::getParent方法的典型用法代码示例。如果您正苦于以下问题:C++ CInterfaceElement::getParent方法的具体用法?C++ CInterfaceElement::getParent怎么用?C++ CInterfaceElement::getParent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CInterfaceElement
的用法示例。
在下文中一共展示了CInterfaceElement::getParent方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: invalidateContent
// ***************************************************************************
void CInterfaceElement::invalidateContent()
{
CInterfaceElement *elm = this;
while (elm)
{
// Call back
elm->onInvalidateContent();
// Get the parent
elm = elm->getParent();
}
}
示例2: getParentContainer
// ------------------------------------------------------------------------------------------------
CInterfaceGroup* CInterfaceElement::getParentContainer()
{
CInterfaceElement *parent = this;
while (parent)
{
CInterfaceGroup *gc = dynamic_cast< CInterfaceGroup* >( parent );
if( ( gc != NULL ) && gc->isGroupContainer() )
return gc;
parent = parent->getParent();
}
return NULL;
}
示例3:
// ------------------------------------------------------------------------------------------------
void CInterfaceElement::relativeSInt32Read (CInterfaceProperty &rIP, const string &prop, const char *val,
const string &defVal)
{
if (val == NULL)
{
rIP.readSInt32 (defVal.c_str(), _Id+":"+prop);
}
else
{
if ( isdigit(*val) || *val=='-')
{
rIP.readSInt32 (val, _Id+":"+prop);
return;
}
sint32 decal = 0;
if (val[0] == ':')
decal = 1;
if (NLGUI::CDBManager::getInstance()->getDbProp(val+decal, false) != NULL)
{
rIP.readSInt32 (val+decal, _Id+":"+prop);
return;
}
else
{
string sTmp;
CInterfaceElement *pIEL = this;
while (pIEL != NULL)
{
sTmp = pIEL->getId()+":"+string(val+decal);
if (NLGUI::CDBManager::getInstance()->getDbProp(sTmp, false) != NULL)
{
rIP.readSInt32 (sTmp.c_str(), _Id+":"+prop);
return;
}
pIEL = pIEL->getParent();
}
rIP.readSInt32 (val+decal, _Id+":"+prop);
}
}
}
示例4: execute
virtual void execute (CCtrlBase *pCaller, const string &Params)
{
CInterfaceManager *pIM = CInterfaceManager::getInstance();
string dblink = getParam (Params, "dblink");
string property = getParam (Params, "target_property");
string propertyToEval = getParam (Params, "target");
string expr = getParam (Params, "value");
//nlinfo("set %s %s %s %s", dblink.c_str(), property.c_str(), propertyToEval.c_str(), expr.c_str());
CInterfaceExprValue value;
if (CInterfaceExpr::eval(expr, value, NULL))
{
if (!dblink.empty())
{
// Do not allow Write on SERVER: or LOCAL:
static const std::string dbServer= "SERVER:";
static const std::string dbLocal= "LOCAL:";
static const std::string dbLocalR2= "LOCAL:R2";
if( (0==dblink.compare(0, dbServer.size(), dbServer)) ||
(0==dblink.compare(0, dbLocal.size(), dbLocal))
)
{
if (0!=dblink.compare(0, dbLocalR2.size(), dbLocalR2))
{
//nlwarning("You are not allowed to write on 'SERVER:...' or 'LOCAL:...' database");
nlstop;
return;
}
}
string dblinkeval;
CInterfaceExpr::unpackDBentry(dblink.c_str(), NULL, dblinkeval);
if (!value.toInteger())
{
nlwarning("<CAHSet:execute> expression doesn't evaluate to a numerical value");
}
CInterfaceProperty ip;
if (!value.toInteger())
{
nlwarning("<CAHSet:execute> expression doesn't evaluate to a numerical value");
}
if (ip.link (dblinkeval.c_str()))
{
ip.setSInt64(value.getInteger());
}
}
if (!propertyToEval.empty())
{
CInterfaceExprValue res;
if (!CInterfaceExpr::eval(propertyToEval, res, NULL)) return;
res.toString();
property = res.getString();
}
if (!property.empty())
{
std::vector<CInterfaceLink::CTargetInfo> targets;
// find first enclosing group
CCtrlBase *currCtrl = pCaller;
CInterfaceGroup *ig = NULL;
while (currCtrl)
{
ig = dynamic_cast<CInterfaceGroup *>(currCtrl);
if (ig != NULL) break;
currCtrl = currCtrl->getParent();
}
if (ig == NULL)
{
string elt = property.substr(0,property.rfind(':'));
CInterfaceElement *pIE = pIM->getElementFromId(elt);
ig = dynamic_cast<CInterfaceGroup*>(pIE);
if (ig == NULL && pIE != NULL)
ig = pIE->getParent();
}
if (ig != NULL)
{
CInterfaceParser::splitLinkTargets(property, ig, targets);
for(uint k = 0; k < targets.size(); ++k)
{
if (targets[k].Elem) targets[k].affect(value);
}
}
}
}
else
{
nlwarning("<CAHSet::execute> Couldn't evaluate expression to affect, expr = %s", expr.c_str());
}
}