// ------------------------------------------------------------------------------------------------ void CInterfaceElement::relativeBoolRead (CInterfaceProperty &rIP, const string &prop, const char *val, const string &defVal) { if (val == NULL) { rIP.readBool (defVal.c_str(), _Id+":"+prop); } else { sint32 decal = 0; if (val[0] == ':') decal = 1; if (NLGUI::CDBManager::getInstance()->getDbProp(val+decal, false) != NULL) { rIP.readBool (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.readBool (sTmp.c_str(), _Id+":"+prop); return; } pIEL = pIEL->getParent(); } rIP.readBool (val+decal, _Id+":"+prop); } } }