summaryrefslogtreecommitdiff
path: root/indra/llui/lluictrlfactory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/llui/lluictrlfactory.cpp')
-rw-r--r--indra/llui/lluictrlfactory.cpp296
1 files changed, 148 insertions, 148 deletions
diff --git a/indra/llui/lluictrlfactory.cpp b/indra/llui/lluictrlfactory.cpp
index dca777cc1f..a2a6d661ff 100644
--- a/indra/llui/lluictrlfactory.cpp
+++ b/indra/llui/lluictrlfactory.cpp
@@ -1,25 +1,25 @@
-/**
+/**
* @file lluictrlfactory.cpp
* @brief Factory class for creating UI controls
*
* $LicenseInfo:firstyear=2003&license=viewerlgpl$
* Second Life Viewer Source Code
* Copyright (C) 2010, Linden Research, Inc.
- *
+ *
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License only.
- *
+ *
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
+ *
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
* $/LicenseInfo$
*/
@@ -50,17 +50,17 @@
class LLUICtrlLocate : public LLUICtrl
{
public:
- struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
- {
- Params()
- {
- name = "locate";
- tab_stop = false;
- }
- };
-
- LLUICtrlLocate(const Params& p) : LLUICtrl(p) {}
- virtual void draw() { }
+ struct Params : public LLInitParam::Block<Params, LLUICtrl::Params>
+ {
+ Params()
+ {
+ name = "locate";
+ tab_stop = false;
+ }
+ };
+
+ LLUICtrlLocate(const Params& p) : LLUICtrl(p) {}
+ virtual void draw() { }
};
@@ -73,83 +73,83 @@ template class LLUICtrlFactory* LLSingleton<class LLUICtrlFactory>::getInstance(
// LLUICtrlFactory()
//-----------------------------------------------------------------------------
LLUICtrlFactory::LLUICtrlFactory()
- : mDummyPanel(NULL) // instantiated when first needed
+ : mDummyPanel(NULL) // instantiated when first needed
{
}
LLUICtrlFactory::~LLUICtrlFactory()
{
- // go ahead and leak mDummyPanel since this is static destructor time
- //delete mDummyPanel;
- //mDummyPanel = NULL;
+ // go ahead and leak mDummyPanel since this is static destructor time
+ //delete mDummyPanel;
+ //mDummyPanel = NULL;
}
void LLUICtrlFactory::loadWidgetTemplate(const std::string& widget_tag, LLInitParam::BaseBlock& block)
{
- std::string filename = gDirUtilp->add("widgets", widget_tag + ".xml");
- LLXMLNodePtr root_node;
- std::vector<std::string> search_paths =
- gDirUtilp->findSkinnedFilenames(LLDir::XUI, filename);
-
- if (search_paths.empty())
- {
- return;
- }
-
- // "en" version, the default-language version of the file.
- std::string base_filename = search_paths.front();
- if (!base_filename.empty())
- {
- LLUICtrlFactory::instance().pushFileName(base_filename);
-
- if (!LLXMLNode::getLayeredXMLNode(root_node, search_paths))
- {
- LL_WARNS() << "Couldn't parse widget from: " << base_filename << LL_ENDL;
- return;
- }
- LLXUIParser parser;
- parser.readXUI(root_node, block, base_filename);
- LLUICtrlFactory::instance().popFileName();
- }
+ std::string filename = gDirUtilp->add("widgets", widget_tag + ".xml");
+ LLXMLNodePtr root_node;
+ std::vector<std::string> search_paths =
+ gDirUtilp->findSkinnedFilenames(LLDir::XUI, filename);
+
+ if (search_paths.empty())
+ {
+ return;
+ }
+
+ // "en" version, the default-language version of the file.
+ std::string base_filename = search_paths.front();
+ if (!base_filename.empty())
+ {
+ LLUICtrlFactory::instance().pushFileName(base_filename);
+
+ if (!LLXMLNode::getLayeredXMLNode(root_node, search_paths))
+ {
+ LL_WARNS() << "Couldn't parse widget from: " << base_filename << LL_ENDL;
+ return;
+ }
+ LLXUIParser parser;
+ parser.readXUI(root_node, block, base_filename);
+ LLUICtrlFactory::instance().popFileName();
+ }
}
-//static
+//static
void LLUICtrlFactory::createChildren(LLView* viewp, LLXMLNodePtr node, const widget_registry_t& registry, LLXMLNodePtr output_node)
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI;
- 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");
- LL_WARNS() << child_name << " is not a valid child of " << node->getName()->mString << LL_ENDL;
- }
- else
- {
- LL_WARNS() << "Could not create widget named " << child_node->getName()->mString << LL_ENDL;
- }
- }
-
- if (outputChild && !outputChild->mChildren && outputChild->mAttributes.empty() && outputChild->getValue().empty())
- {
- output_node->deleteChild(outputChild);
- }
- }
+ 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");
+ LL_WARNS() << child_name << " is not a valid child of " << node->getName()->mString << LL_ENDL;
+ }
+ else
+ {
+ LL_WARNS() << "Could not create widget named " << child_node->getName()->mString << LL_ENDL;
+ }
+ }
+
+ if (outputChild && !outputChild->mChildren && outputChild->mAttributes.empty() && outputChild->getValue().empty())
+ {
+ output_node->deleteChild(outputChild);
+ }
+ }
}
@@ -160,16 +160,16 @@ bool LLUICtrlFactory::getLayeredXMLNode(const std::string &xui_filename, LLXMLNo
LLDir::ESkinConstraint constraint)
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI;
- std::vector<std::string> paths =
- gDirUtilp->findSkinnedFilenames(LLDir::XUI, xui_filename, constraint);
+ std::vector<std::string> paths =
+ gDirUtilp->findSkinnedFilenames(LLDir::XUI, xui_filename, constraint);
- if (paths.empty())
- {
- // sometimes whole path is passed in as filename
- paths.push_back(xui_filename);
- }
+ if (paths.empty())
+ {
+ // sometimes whole path is passed in as filename
+ paths.push_back(xui_filename);
+ }
- return LLXMLNode::getLayeredXMLNode(root, paths);
+ return LLXMLNode::getLayeredXMLNode(root, paths);
}
@@ -178,7 +178,7 @@ bool LLUICtrlFactory::getLayeredXMLNode(const std::string &xui_filename, LLXMLNo
//-----------------------------------------------------------------------------
S32 LLUICtrlFactory::saveToXML(LLView* viewp, const std::string& filename)
{
- return 0;
+ return 0;
}
//-----------------------------------------------------------------------------
@@ -187,93 +187,93 @@ S32 LLUICtrlFactory::saveToXML(LLView* viewp, const std::string& filename)
LLView *LLUICtrlFactory::createFromXML(LLXMLNodePtr node, LLView* parent, const std::string& filename, const widget_registry_t& registry, LLXMLNodePtr output_node)
{
LL_PROFILE_ZONE_SCOPED_CATEGORY_UI;
- std::string ctrl_type = node->getName()->mString;
- LLStringUtil::toLower(ctrl_type);
-
- const LLWidgetCreatorFunc* funcp = registry.getValue(ctrl_type);
- if (funcp == NULL)
- {
- return NULL;
- }
-
- if (parent == NULL)
- {
- if (mDummyPanel == NULL)
- {
- LLPanel::Params p;
- mDummyPanel = create<LLPanel>(p);
- }
- parent = mDummyPanel;
- }
- LLView *view = (*funcp)(node, parent, output_node);
-
- return view;
+ std::string ctrl_type = node->getName()->mString;
+ LLStringUtil::toLower(ctrl_type);
+
+ const LLWidgetCreatorFunc* funcp = registry.getValue(ctrl_type);
+ if (funcp == NULL)
+ {
+ return NULL;
+ }
+
+ if (parent == NULL)
+ {
+ if (mDummyPanel == NULL)
+ {
+ LLPanel::Params p;
+ mDummyPanel = create<LLPanel>(p);
+ }
+ parent = mDummyPanel;
+ }
+ LLView *view = (*funcp)(node, parent, output_node);
+
+ return view;
}
-std::string LLUICtrlFactory::getCurFileName()
-{
- return mFileNames.empty() ? "" : mFileNames.back();
+std::string LLUICtrlFactory::getCurFileName()
+{
+ return mFileNames.empty() ? "" : mFileNames.back();
}
-void LLUICtrlFactory::pushFileName(const std::string& name)
+void LLUICtrlFactory::pushFileName(const std::string& name)
{
- // Here we seem to be looking for the default language file ("en") rather
- // than the localized one, if any.
- mFileNames.push_back(gDirUtilp->findSkinnedFilenameBaseLang(LLDir::XUI, name));
+ // Here we seem to be looking for the default language file ("en") rather
+ // than the localized one, if any.
+ mFileNames.push_back(gDirUtilp->findSkinnedFilenameBaseLang(LLDir::XUI, name));
}
-void LLUICtrlFactory::popFileName()
-{
- mFileNames.pop_back();
+void LLUICtrlFactory::popFileName()
+{
+ mFileNames.pop_back();
}
//static
void LLUICtrlFactory::setCtrlParent(LLView* view, LLView* parent, S32 tab_group)
{
- if (tab_group == S32_MAX) tab_group = parent->getLastTabGroup();
- parent->addChild(view, tab_group);
+ if (tab_group == S32_MAX) tab_group = parent->getLastTabGroup();
+ parent->addChild(view, tab_group);
}
-//static
+//static
void LLUICtrlFactory::copyName(LLXMLNodePtr src, LLXMLNodePtr dest)
{
- dest->setName(src->getName()->mString);
+ dest->setName(src->getName()->mString);
}
template<typename T>
const LLInitParam::BaseBlock& get_empty_param_block()
{
- static typename T::Params params;
- return params;
+ static typename T::Params params;
+ return params;
}
// adds a widget and its param block to various registries
-//static
+//static
void LLUICtrlFactory::registerWidget(const std::type_info* widget_type, const std::type_info* param_block_type, const std::string& name)
{
- // associate parameter block type with template .xml file
- std::string* existing_name = LLWidgetNameRegistry::instance().getValue(param_block_type);
- if (existing_name != NULL)
- {
- if(*existing_name != name)
- {
- std::cerr << "Duplicate entry for T::Params, try creating empty param block in derived classes that inherit T::Params" << std::endl;
- // forcing crash here
- char* foo = 0;
- *foo = 1;
- }
- else
- {
- // widget already registered this name
- return;
- }
- }
-
- LLWidgetNameRegistry::instance().defaultRegistrar().add(param_block_type, name);
- //FIXME: comment this in when working on schema generation
- //LLWidgetTypeRegistry::instance().defaultRegistrar().add(tag, widget_type);
- //LLDefaultParamBlockRegistry::instance().defaultRegistrar().add(widget_type, &get_empty_param_block<T>);
+ // associate parameter block type with template .xml file
+ std::string* existing_name = LLWidgetNameRegistry::instance().getValue(param_block_type);
+ if (existing_name != NULL)
+ {
+ if(*existing_name != name)
+ {
+ std::cerr << "Duplicate entry for T::Params, try creating empty param block in derived classes that inherit T::Params" << std::endl;
+ // forcing crash here
+ char* foo = 0;
+ *foo = 1;
+ }
+ else
+ {
+ // widget already registered this name
+ return;
+ }
+ }
+
+ LLWidgetNameRegistry::instance().defaultRegistrar().add(param_block_type, name);
+ //FIXME: comment this in when working on schema generation
+ //LLWidgetTypeRegistry::instance().defaultRegistrar().add(tag, widget_type);
+ //LLDefaultParamBlockRegistry::instance().defaultRegistrar().add(widget_type, &get_empty_param_block<T>);
}