本文整理汇总了C++中LLXMLNodePtr::isNull方法的典型用法代码示例。如果您正苦于以下问题:C++ LLXMLNodePtr::isNull方法的具体用法?C++ LLXMLNodePtr::isNull怎么用?C++ LLXMLNodePtr::isNull使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LLXMLNodePtr
的用法示例。
在下文中一共展示了LLXMLNodePtr::isNull方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: parseStrings
//static
bool LLUITrans::parseStrings(const std::string& xml_filename)
{
LLXMLNodePtr root;
BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
if (!success || root.isNull() || !root->hasName( "strings" ))
{
llwarns << "Problem reading strings: " << xml_filename << llendl;
return false;
}
for (LLXMLNode* string = root->getFirstChild();
string != NULL; string = string->getNextSibling())
{
if (!string->hasName("string"))
{
continue;
}
std::string string_name;
if (! string->getAttributeString("name", string_name))
{
llwarns << "Unable to parse string with no name" << llendl;
continue;
}
LLUITransTemplate xml_template(string_name, string->getTextContents());
sStringTemplates[xml_template.mName] = xml_template;
}
return true;
}
示例2: loadTemplates
bool LLNotificationTemplates::loadTemplates()
{
LL_INFOS() << "Reading notifications template" << LL_ENDL;
// Passing findSkinnedFilenames(constraint=LLDir::ALL_SKINS) makes it
// output all relevant pathnames instead of just the ones from the most
// specific skin.
std::vector<std::string> search_paths =
gDirUtilp->findSkinnedFilenames(LLDir::XUI, "notifications.xml", LLDir::ALL_SKINS);
std::string base_filename = search_paths.front();
LLXMLNodePtr root;
BOOL success = LLXMLNode::getLayeredXMLNode(root, search_paths);
if (!success || root.isNull() || !root->hasName( "notifications" ))
{
LL_ERRS() << "Problem reading XML from UI Notifications file: " << base_filename << LL_ENDL;
return false;
}
clearTemplates();
for (LLXMLNodePtr item = root->getFirstChild();
item.notNull(); item = item->getNextSibling())
{
if (item->hasName("global"))
{
std::string global_name;
if (item->getAttributeString("name", global_name))
{
mGlobalStrings[global_name] = item->getTextContents();
}
continue;
}
if (item->hasName("template"))
{
// store an xml template; templates must have a single node (can contain
// other nodes)
std::string name;
item->getAttributeString("name", name);
LLXMLNodePtr ptr = item->getFirstChild();
mXmlTemplates[name] = ptr;
continue;
}
if (!item->hasName("notification"))
{
LL_WARNS() << "Unexpected entity " << item->getName()->mString <<
" found in notifications.xml [language=]" << LLUI::getLanguage() << LL_ENDL;
continue;
}
}
return true;
}
示例3: loadTemplates
bool LLNotificationTemplates::loadTemplates()
{
const std::string xml_filename = "notifications.xml";
LLXMLNodePtr root;
BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
if (!success || root.isNull() || !root->hasName( "notifications" ))
{
llerrs << "Problem reading UI Notifications file: " << xml_filename << llendl;
return false;
}
clearTemplates();
for (LLXMLNodePtr item = root->getFirstChild();
item.notNull(); item = item->getNextSibling())
{
if (item->hasName("global"))
{
std::string global_name;
if (item->getAttributeString("name", global_name))
{
mGlobalStrings[global_name] = item->getTextContents();
}
continue;
}
if (item->hasName("template"))
{
// store an xml template; templates must have a single node (can contain
// other nodes)
std::string name;
item->getAttributeString("name", name);
LLXMLNodePtr ptr = item->getFirstChild();
mXmlTemplates[name] = ptr;
continue;
}
if (!item->hasName("notification"))
{
llwarns << "Unexpected entity " << item->getName()->mString <<
" found in " << xml_filename << llendl;
continue;
}
}
return true;
}
示例4: parseStrings
//static
bool LLTrans::parseStrings(const std::string& xml_filename, const std::set<std::string>& default_args)
{
LLXMLNodePtr root;
BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
if (!success || root.isNull() || !root->hasName( "strings" ))
{
LL_ERRS() << "Problem reading strings: " << xml_filename << LL_ENDL;
return false;
}
sDefaultArgs.clear();
for (LLXMLNode* string = root->getFirstChild();
string != NULL; string = string->getNextSibling())
{
if (!string->hasName("string"))
{
continue;
}
std::string string_name;
if (! string->getAttributeString("name", string_name))
{
LL_WARNS() << "Unable to parse string with no name" << LL_ENDL;
continue;
}
std::string contents;
//value is used for strings with preceeding spaces. If not present, fall back to getTextContents()
if(!string->getAttributeString("value",contents))
contents=string->getTextContents();
LLTransTemplate xml_template(string_name, contents);
sStringTemplates[xml_template.mName] = xml_template;
std::set<std::string>::const_iterator iter = default_args.find(xml_template.mName);
if (iter != default_args.end())
{
std::string name = *iter;
if (name[0] != '[')
name = llformat("[%s]",name.c_str());
sDefaultArgs[name] = xml_template.mText;
}
}
return true;
}
示例5: readXUI
void LLXUIParser::readXUI(LLXMLNodePtr node, LLInitParam::BaseBlock& block, const std::string& filename, bool silent)
{
LLFastTimer timer(FTM_PARSE_XUI);
mNameStack.clear();
mCurFileName = filename;
mCurReadDepth = 0;
setParseSilently(silent);
if (node.isNull())
{
parserWarning("Invalid node");
}
else
{
readXUIImpl(node, std::string(node->getName()->mString), block);
}
}
示例6: initViewerVersion
bool ViewerVersion::initViewerVersion()
{
std::string file_path = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "viewerversion.xml");
if (!gDirUtilp->fileExists(file_path))
{
llwarns << "Unable to find viewerversion.xml in app_settings folder" << llendl;
return false;
}
else
{
LLXMLNodePtr root;
if (!LLXMLNode::parseFile(file_path, root, NULL))
{
llwarns << "Unable to parse version file: " << file_path << llendl;
return false;
}
if (root.isNull()) // shouldn't ever happen
{
llwarns << "Error while trying to read viewerversion.xml" << llendl;
return false;
}
LLXMLNodePtr child_nodep = root->getFirstChild();
while (child_nodep.notNull())
{
child_nodep->getAttributeS32("version_major", sVersionMajor);
child_nodep->getAttributeS32("version_minor", sVersionMinor);
child_nodep->getAttributeS32("version_patch", sVersionPatch);
child_nodep->getAttributeString("version_test", sVersionTest);
child_nodep = child_nodep->getNextSibling();
}
llinfos << "Version set to: " << sVersionMajor << "." << sVersionMinor << "." << sVersionPatch << " " << sVersionTest << llendl;
return true;
}
}
示例7: parseFontInfo
bool LLFontRegistry::parseFontInfo(const std::string& xml_filename)
{
bool success = false; // Succeed if we find and read at least one XUI file
const string_vec_t xml_paths = gDirUtilp->findSkinnedFilenames(LLDir::XUI, xml_filename);
if (xml_paths.empty())
{
// We didn't even find one single XUI file
return false;
}
for (string_vec_t::const_iterator path_it = xml_paths.begin();
path_it != xml_paths.end();
++path_it)
{
LLXMLNodePtr root;
bool parsed_file = LLXMLNode::parseFile(*path_it, root, NULL);
if (!parsed_file)
continue;
if ( root.isNull() || ! root->hasName( "fonts" ) )
{
LL_WARNS() << "Bad font info file: " << *path_it << LL_ENDL;
continue;
}
std::string root_name;
root->getAttributeString("name",root_name);
if (root->hasName("fonts"))
{
// Expect a collection of children consisting of "font" or "font_size" entries
bool init_succ = init_from_xml(this, root);
success = success || init_succ;
}
}
//if (success)
// dump();
return success;
}
示例8: createChildren
//static
void LLUICtrlFactory::createChildren(LLView* viewp, LLXMLNodePtr node, const widget_registry_t& registry, LLXMLNodePtr output_node)
{
LLFastTimer ft(FTM_CREATE_CHILDREN);
if (node.isNull()) return;
for (LLXMLNodePtr child_node = node->getFirstChild(); child_node.notNull(); child_node = child_node->getNextSibling())
{
LLXMLNodePtr outputChild;
if (output_node)
{
outputChild = output_node->createChild("", FALSE);
}
if (!instance().createFromXML(child_node, viewp, LLStringUtil::null, registry, outputChild))
{
// child_node is not a valid child for the current parent
std::string child_name = std::string(child_node->getName()->mString);
if (LLDefaultChildRegistry::instance().getValue(child_name))
{
// This means that the registry assocaited with the parent widget does not have an entry
// for the child widget
// You might need to add something like:
// static ParentWidgetRegistry::Register<ChildWidgetType> register("child_widget_name");
llwarns << child_name << " is not a valid child of " << node->getName()->mString << llendl;
}
else
{
llwarns << "Could not create widget named " << child_node->getName()->mString << llendl;
}
}
if (outputChild && !outputChild->mChildren && outputChild->mAttributes.empty() && outputChild->getValue().empty())
{
output_node->deleteChild(outputChild);
}
}
}
示例9: parseFontInfo
bool LLFontRegistry::parseFontInfo(const std::string& xml_filename)
{
bool success = false; // Succeed if we find at least one XUI file
const string_vec_t& xml_paths = mXUIPaths;
for (string_vec_t::const_iterator path_it = xml_paths.begin();
path_it != xml_paths.end();
++path_it)
{
LLXMLNodePtr root;
std::string full_filename = gDirUtilp->findSkinnedFilename(*path_it, xml_filename);
bool parsed_file = LLXMLNode::parseFile(full_filename, root, NULL);
if (!parsed_file)
continue;
if ( root.isNull() || ! root->hasName( "fonts" ) )
{
llwarns << "Bad font info file: "
<< full_filename << llendl;
continue;
}
std::string root_name;
root->getAttributeString("name",root_name);
if (root->hasName("fonts"))
{
// Expect a collection of children consisting of "font" or "font_size" entries
bool init_succ = initFromXML(root);
success = success || init_succ;
}
}
//if (success)
// dump();
return success;
}
示例10: parseMIMETypes
// static
bool LLMIMETypes::parseMIMETypes(const std::string& xml_filename)
{
LLXMLNodePtr root;
bool success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
if (!success)
{
// If fails, check if we can read the file from the app_settings folder
std::string settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, xml_filename);
success = LLUICtrlFactory::getLayeredXMLNode(settings_filename, root);
#if LL_WINDOWS
// On the windows dev builds, unpackaged, the mime_types.xml file will be located in
// indra/build-vc**/newview/<config>/app_settings.
if (!success)
{
settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_EXECUTABLE, "app_settings", xml_filename);
success = LLUICtrlFactory::getLayeredXMLNode(settings_filename, root);
}
#endif
}
if ( ! success || root.isNull() || ! root->hasName( "mimetypes" ) )
{
llwarns << "Unable to read MIME type file: "
<< xml_filename << llendl;
return false;
}
for (LLXMLNode* node = root->getFirstChild();
node != NULL;
node = node->getNextSibling())
{
if (node->hasName("defaultlabel"))
{
sDefaultLabel = node->getTextContents();
}
else if (node->hasName("defaultwidget"))
{
sDefaultWidgetType = node->getTextContents();
}
else if (node->hasName("defaultimpl"))
{
sDefaultImpl = node->getTextContents();
}
else if (node->hasName("mimetype") || node->hasName("scheme"))
{
std::string mime_type;
node->getAttributeString("name", mime_type);
LLMIMEInfo info;
for (LLXMLNode* child = node->getFirstChild();
child != NULL;
child = child->getNextSibling())
{
if (child->hasName("label"))
{
info.mLabel = child->getTextContents();
}
else if (child->hasName("widgettype"))
{
info.mWidgetType = child->getTextContents();
}
else if (child->hasName("impl"))
{
info.mImpl = child->getTextContents();
}
}
sMap[mime_type] = info;
}
else if (node->hasName("widgetset"))
{
std::string set_name;
node->getAttributeString("name", set_name);
LLMIMEWidgetSet info;
for (LLXMLNode* child = node->getFirstChild();
child != NULL;
child = child->getNextSibling())
{
if (child->hasName("label"))
{
info.mLabel = child->getTextContents();
}
if (child->hasName("icon"))
{
info.mIcon = child->getTextContents();
}
if (child->hasName("default_type"))
{
info.mDefaultMimeType = child->getTextContents();
}
if (child->hasName("tooltip"))
{
info.mToolTip = child->getTextContents();
}
if (child->hasName("playtip"))
{
info.mPlayTip = child->getTextContents();
}
if (child->hasName("allow_resize"))
//.........这里部分代码省略.........
示例11: loadTemplates
bool LLNotifications::loadTemplates()
{
const std::string xml_filename = "notifications.xml";
LLXMLNodePtr root;
BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
if (!success || root.isNull() || !root->hasName( "notifications" ))
{
llerrs << "Problem reading UI Notifications file: " << xml_filename << llendl;
return false;
}
clearTemplates();
for (LLXMLNodePtr item = root->getFirstChild();
item.notNull(); item = item->getNextSibling())
{
// we do this FIRST so that item can be changed if we
// encounter a usetemplate -- we just replace the
// current xml node and keep processing
item = checkForXMLTemplate(item);
if (item->hasName("global"))
{
std::string global_name;
if (item->getAttributeString("name", global_name))
{
mGlobalStrings[global_name] = item->getTextContents();
}
continue;
}
if (item->hasName("template"))
{
// store an xml template; templates must have a single node (can contain
// other nodes)
std::string name;
item->getAttributeString("name", name);
LLXMLNodePtr ptr = item->getFirstChild();
mXmlTemplates[name] = ptr;
continue;
}
if (!item->hasName("notification"))
{
llwarns << "Unexpected entity " << item->getName()->mString <<
" found in " << xml_filename << llendl;
continue;
}
// now we know we have a notification entry, so let's build it
LLNotificationTemplatePtr pTemplate(new LLNotificationTemplate());
if (!item->getAttributeString("name", pTemplate->mName))
{
llwarns << "Unable to parse notification with no name" << llendl;
continue;
}
//llinfos << "Parsing " << pTemplate->mName << llendl;
pTemplate->mMessage = item->getTextContents();
pTemplate->mDefaultFunctor = pTemplate->mName;
item->getAttributeString("type", pTemplate->mType);
item->getAttributeString("icon", pTemplate->mIcon);
item->getAttributeString("label", pTemplate->mLabel);
item->getAttributeU32("duration", pTemplate->mExpireSeconds);
item->getAttributeU32("expireOption", pTemplate->mExpireOption);
std::string priority;
item->getAttributeString("priority", priority);
pTemplate->mPriority = NOTIFICATION_PRIORITY_NORMAL;
if (!priority.empty())
{
if (priority == "low") pTemplate->mPriority = NOTIFICATION_PRIORITY_LOW;
if (priority == "normal") pTemplate->mPriority = NOTIFICATION_PRIORITY_NORMAL;
if (priority == "high") pTemplate->mPriority = NOTIFICATION_PRIORITY_HIGH;
if (priority == "critical") pTemplate->mPriority = NOTIFICATION_PRIORITY_CRITICAL;
}
item->getAttributeString("functor", pTemplate->mDefaultFunctor);
BOOL persist = false;
item->getAttributeBOOL("persist", persist);
pTemplate->mPersist = persist;
std::string sound;
item->getAttributeString("sound", sound);
if (!sound.empty())
{
// TODO: test for bad sound effect name / missing effect
pTemplate->mSoundEffect = LLUUID(LLUI::sConfigGroup->getString(sound.c_str()));
}
for (LLXMLNodePtr child = item->getFirstChild();
!child.isNull(); child = child->getNextSibling())
{
child = checkForXMLTemplate(child);
//.........这里部分代码省略.........
示例12: loadNotifications
bool LLNotifications::loadNotifications()
{
LL_INFOS() << "Reading notifications template" << LL_ENDL;
// Passing findSkinnedFilenames(constraint=LLDir::ALL_SKINS) makes it
// output all relevant pathnames instead of just the ones from the most
// specific skin.
std::vector<std::string> search_paths =
gDirUtilp->findSkinnedFilenames(LLDir::XUI, "notifications.xml", LLDir::ALL_SKINS);
std::string base_filename = search_paths.front();
LLXMLNodePtr root;
BOOL success = LLXMLNode::getLayeredXMLNode(root, search_paths);
if (!success || root.isNull() || !root->hasName( "notifications" ))
{
LL_ERRS() << "Problem reading XML from UI Notifications file: " << base_filename << LL_ENDL;
return false;
}
for (LLXMLNodePtr item = root->getFirstChild();
item.notNull(); item = item->getNextSibling())
{
// we do this FIRST so that item can be changed if we
// encounter a usetemplate -- we just replace the
// current xml node and keep processing
item = LLNotificationTemplates::instance().checkForXMLTemplate(item);
if (!item->hasName("notification"))
continue;
// now we know we have a notification entry, so let's build it
LLNotificationTemplatePtr pTemplate(new LLNotificationTemplate());
if (!item->getAttributeString("name", pTemplate->mName))
{
LL_WARNS() << "Unable to parse notification with no name" << LL_ENDL;
continue;
}
//LL_INFOS() << "Parsing " << pTemplate->mName << LL_ENDL;
pTemplate->mMessage = item->getTextContents();
pTemplate->mDefaultFunctor = pTemplate->mName;
item->getAttributeString("type", pTemplate->mType);
item->getAttributeString("icon", pTemplate->mIcon);
item->getAttributeString("label", pTemplate->mLabel);
item->getAttributeU32("duration", pTemplate->mExpireSeconds);
item->getAttributeU32("expireOption", pTemplate->mExpireOption);
std::string priority;
item->getAttributeString("priority", priority);
pTemplate->mPriority = NOTIFICATION_PRIORITY_NORMAL;
if (!priority.empty())
{
if (priority == "low") pTemplate->mPriority = NOTIFICATION_PRIORITY_LOW;
if (priority == "normal") pTemplate->mPriority = NOTIFICATION_PRIORITY_NORMAL;
if (priority == "high") pTemplate->mPriority = NOTIFICATION_PRIORITY_HIGH;
if (priority == "critical") pTemplate->mPriority = NOTIFICATION_PRIORITY_CRITICAL;
}
item->getAttributeString("functor", pTemplate->mDefaultFunctor);
BOOL persist = false;
item->getAttributeBOOL("persist", persist);
pTemplate->mPersist = persist;
std::string sound;
item->getAttributeString("sound", sound);
if (!sound.empty())
{
// TODO: test for bad sound effect name / missing effect
pTemplate->mSoundEffect = LLUUID(LLUI::sConfigGroup->findString(sound.c_str()));
}
for (LLXMLNodePtr child = item->getFirstChild();
!child.isNull(); child = child->getNextSibling())
{
child = LLNotificationTemplates::instance().checkForXMLTemplate(child);
// <url>
if (child->hasName("url"))
{
pTemplate->mURL = child->getTextContents();
child->getAttributeU32("option", pTemplate->mURLOption);
}
if (child->hasName("unique"))
{
pTemplate->mUnique = true;
for (LLXMLNodePtr formitem = child->getFirstChild();
!formitem.isNull(); formitem = formitem->getNextSibling())
{
if (formitem->hasName("context"))
{
std::string key;
formitem->getAttributeString("key", key);
pTemplate->mUniqueContext.push_back(key);
//LL_WARNS() << "adding " << key << " to unique context" << LL_ENDL;
}
else
//.........这里部分代码省略.........
示例13: initClass
// Checked: 2010-03-09 (RLVa-1.2.0a) | Added: RLVa-1.1.0h
void RlvStrings::initClass()
{
static bool fInitialized = false;
if (!fInitialized)
{
LLXMLNodePtr xmlRoot;
if ( (!LLUICtrlFactory::getLayeredXMLNode("rlva_strings.xml", xmlRoot)) || (xmlRoot.isNull()) || (!xmlRoot->hasName("rlva_strings")) )
{
RLV_ERRS << "Problem reading RLVa string XML file" << RLV_ENDL;
return;
}
for (LLXMLNode* pNode = xmlRoot->getFirstChild(); pNode != NULL; pNode = pNode->getNextSibling())
{
if (pNode->hasName("strings"))
{
std::string strName;
for (LLXMLNode* pStringNode = pNode->getFirstChild(); pStringNode != NULL; pStringNode = pStringNode->getNextSibling())
{
if ( (!pStringNode->hasName("string")) || (!pStringNode->getAttributeString("name", strName)) )
continue;
m_StringMap[strName] = pStringNode->getTextContents();
}
}
else if (pNode->hasName("anonyms"))
{
for (LLXMLNode* pAnonymNode = pNode->getFirstChild(); pAnonymNode != NULL; pAnonymNode = pAnonymNode->getNextSibling())
{
if (!pAnonymNode->hasName("anonym"))
continue;
m_Anonyms.push_back(pAnonymNode->getTextContents());
}
}
#ifdef RLV_EXTENSION_NOTIFY_BEHAVIOUR
else if (pNode->hasName("behaviour-notifications"))
{
std::string strBhvr, strType; ERlvBehaviour eBhvr;
for (LLXMLNode* pNotifyNode = pNode->getFirstChild(); pNotifyNode != NULL; pNotifyNode = pNotifyNode->getNextSibling())
{
if ( (!pNotifyNode->hasName("notification")) || (!pNotifyNode->getAttributeString("type", strType)) ||
(!pNotifyNode->getAttributeString("behaviour", strBhvr)) ||
((eBhvr = RlvCommand::getBehaviourFromString(strBhvr)) == RLV_BHVR_UNKNOWN) )
{
continue;
}
if ("add" == strType)
m_BhvrAddMap.insert(std::pair<ERlvBehaviour, std::string>(eBhvr, pNotifyNode->getTextContents()));
else if ("rem" == strType)
m_BhvrRemMap.insert(std::pair<ERlvBehaviour, std::string>(eBhvr, pNotifyNode->getTextContents()));
}
}
#endif // RLV_EXTENSION_NOTIFY_BEHAVIOUR
}
if ( (m_StringMap.empty()) || (m_Anonyms.empty()) )
{
RLV_ERRS << "Problem parsing RLVa string XML file" << RLV_ENDL;
return;
}
fInitialized = true;
}
}
示例14: parseNotify
//static
bool LLNotifyBox::parseNotify(const std::string& xml_filename)
{
LLXMLNodePtr root;
BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
if (!success || root.isNull() || !root->hasName( "notifications" ))
{
llerrs << "Problem reading UI Notify file: " << xml_filename << llendl;
return false;
}
for (LLXMLNode* notify = root->getFirstChild();
notify != NULL; notify = notify->getNextSibling())
{
if (!notify->hasName("notify"))
{
continue;
}
BOOL unique = FALSE;
notify->getAttributeBOOL("unique", unique);
F32 duration = gSavedSettings.getF32("NotifyTipDuration");
notify->getAttributeF32("duration", duration);
LLPointer<LLNotifyBoxTemplate> xml_template = new LLNotifyBoxTemplate(unique, duration);
// label=
std::string notify_name;
if (notify->getAttributeString("name", notify_name))
{
xml_template->mLabel = notify_name;
}
else
{
llwarns << "Unable to parse notify with no name" << llendl;
continue;
}
// modal=
BOOL tip;
if (notify->getAttributeBOOL("tip", tip))
{
xml_template->mIsTip = tip;
}
// parse a bool attribute named "caution" to determine
// whether this notification gets cautionary special handling
BOOL caution = FALSE;
if (notify->getAttributeBOOL("caution", caution))
{
if (xml_template)
{
xml_template->mIsCaution = caution;
}
}
S32 btn_idx = 0;
for (LLXMLNode* child = notify->getFirstChild();
child != NULL; child = child->getNextSibling())
{
// <message>
if (child->hasName("message"))
{
xml_template->mMessage = child->getTextContents();
}
// <option>
if (child->hasName("option"))
{
std::string label = child->getValue();
BOOL is_default = FALSE;
child->getAttributeBOOL("default", is_default);
std::string ignore_text;
if (!child->getAttributeString("ignore", ignore_text))
{
ignore_text = label;
}
xml_template->addOption(label, is_default);
btn_idx++;
}
}
//*TODO:translate
if (xml_template->mOptions.empty())
{
xml_template->addOption("OK", FALSE);
}
sNotifyTemplates[xml_template->mLabel] = xml_template;
}
return true;
}
示例15: parseAlerts
//static
bool LLAlertDialog::parseAlerts(const LLString& xml_filename, LLControlGroup* settings, BOOL settings_only)
{
LLXMLNodePtr root;
BOOL success = LLUICtrlFactory::getLayeredXMLNode(xml_filename, root);
if (!success || root.isNull() || !root->hasName( "alerts" ))
{
llerrs << "Problem reading UI Alerts file: " << xml_filename << llendl;
return false;
}
BOOL add_settings = FALSE;
if (settings)
{
sSettings = settings;
add_settings = TRUE;
}
llassert(sSettings);
for (LLXMLNode* alert = root->getFirstChild();
alert != NULL; alert = alert->getNextSibling())
{
if (alert->hasName("global"))
{
LLString global_name;
if (alert->getAttributeString("name", global_name))
{
if (global_name == "skipnexttime")
{
sStringSkipNextTime = alert->getTextContents();
}
else if (global_name == "alwayschoose")
{
sStringAlwaysChoose = alert->getTextContents();
}
}
continue;
}
if (!alert->hasName("alert"))
{
continue;
}
LLAlertDialogTemplate* xml_template = settings_only ? NULL : new LLAlertDialogTemplate;
// name=
LLString alert_name;
if (alert->getAttributeString("name", alert_name))
{
if (xml_template)
{
xml_template->mLabel = alert_name;
}
}
else
{
llwarns << "Unable to parse alert with no name" << llendl;
delete xml_template;
continue;
}
// title=
LLString title;
if (alert->getAttributeString("title", title))
{
if (xml_template)
{
xml_template->mTitle = title;
}
}
// modal=
BOOL modal;
if (alert->getAttributeBOOL("modal", modal))
{
if (xml_template)
{
xml_template->mModal = modal;
}
}
// caution=
BOOL caution;
if (alert->getAttributeBOOL("caution", caution))
{
if (xml_template)
{
xml_template->mCaution = caution;
}
}
// unique=
BOOL unique;
if (alert->getAttributeBOOL("unique", unique))
{
if (xml_template)
{
xml_template->mUnique = unique;
}
}
S32 default_option = 0;
//.........这里部分代码省略.........