bool CGUIIncludes::LoadIncludes(const CStdString &includeFile) { // check to see if we already have this loaded if (HasIncludeFile(includeFile)) return true; CXBMCTinyXML doc; if (!doc.LoadFile(includeFile)) { CLog::Log(LOGINFO, "Error loading includes.xml file (%s): %s (row=%i, col=%i)", includeFile.c_str(), doc.ErrorDesc(), doc.ErrorRow(), doc.ErrorCol()); return false; } // success, load the tags if (LoadIncludesFromXML(doc.RootElement())) { m_files.push_back(includeFile); return true; } return false; }
bool CGUIIncludes::Load_Internal(const std::string &file) { // check to see if we already have this loaded if (HasLoaded(file)) return true; CXBMCTinyXML doc; if (!doc.LoadFile(file)) { CLog::Log(LOGINFO, "Error loading include file %s: %s (row: %i, col: %i)", file.c_str(), doc.ErrorDesc(), doc.ErrorRow(), doc.ErrorCol()); return false; } TiXmlElement *root = doc.RootElement(); if (!root || !StringUtils::EqualsNoCase(root->Value(), "includes")) { CLog::Log(LOGERROR, "Error loading include file %s: Root element <includes> required.", file.c_str()); return false; } // load components LoadDefaults(root); LoadConstants(root); LoadExpressions(root); LoadVariables(root); LoadIncludes(root); m_files.push_back(file); return true; }