summaryrefslogtreecommitdiff
path: root/indra/integration_tests/llui_libtest/llui_libtest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/integration_tests/llui_libtest/llui_libtest.cpp')
-rw-r--r--indra/integration_tests/llui_libtest/llui_libtest.cpp103
1 files changed, 64 insertions, 39 deletions
diff --git a/indra/integration_tests/llui_libtest/llui_libtest.cpp b/indra/integration_tests/llui_libtest/llui_libtest.cpp
index f8caa7990b..3d433fdfdc 100644
--- a/indra/integration_tests/llui_libtest/llui_libtest.cpp
+++ b/indra/integration_tests/llui_libtest/llui_libtest.cpp
@@ -41,6 +41,7 @@
#include "lldir.h"
#include "llerrorcontrol.h"
#include "llfloater.h"
+#include "llfontfreetype.h"
#include "llfontgl.h"
#include "lltrans.h"
#include "llui.h"
@@ -51,6 +52,11 @@
// *TODO: switch to using TUT
// *TODO: teach Parabuild about this program, run automatically after full builds
+// I believe these must be globals, not stack variables. JC
+LLControlGroup gSavedSettings("Global"); // saved at end of session
+LLControlGroup gSavedPerAccountSettings("PerAccount"); // saved at end of session
+LLControlGroup gWarningSettings("Warnings"); // persists ignored dialogs/warnings
+
// We can't create LLImageGL objects because we have no window or rendering
// context. Provide enough of an LLUIImage to test the LLUI library without
// an underlying image.
@@ -72,6 +78,8 @@ public:
}
};
+
+class LLTexture ;
// We need to supply dummy images
class TestImageProvider : public LLImageProviderInterface
{
@@ -92,68 +100,71 @@ public:
LLPointer<LLUIImage> makeImage()
{
- LLPointer<LLImageGL> image_gl;
- LLPointer<LLUIImage> image = new LLUIImage( std::string(), image_gl);
+ LLPointer<LLTexture> image_gl;
+ LLPointer<LLUIImage> image = new TestUIImage(); //LLUIImage( std::string(), image_gl);
+ mImageList.push_back(image);
return image;
}
+
+public:
+ // Unclear if we need this, hold on to one copy of each image we make
+ std::vector<LLPointer<LLUIImage> > mImageList;
};
+TestImageProvider gTestImageProvider;
static std::string get_xui_dir()
{
std::string delim = gDirUtilp->getDirDelimiter();
- return gDirUtilp->getAppRODataDir() + delim + std::string("skins") + delim + "default" + delim + "xui" + delim;
+ return gDirUtilp->getSkinBaseDir() + delim + "default" + delim + "xui" + delim;
}
-int main(int argc, char** argv)
+void init_llui()
{
- // Must init LLError for llerrs to actually cause errors.
- LLError::initForApplication(".");
-
// Font lookup needs directory support
- gDirUtilp->initAppDirs("SecondLife", "../../../newview");
+#if LL_DARWIN
+ const char* newview_path = "../../../../newview";
+#else
+ const char* newview_path = "../../../newview";
+#endif
+ gDirUtilp->initAppDirs("SecondLife", newview_path);
gDirUtilp->setSkinFolder("default");
+
+ // colors are no longer stored in a LLControlGroup file
+ LLUIColorTable::instance().loadFromSettings();
std::string config_filename = gDirUtilp->getExpandedFilename(
- LL_PATH_APP_SETTINGS, "settings.xml");
- LLControlGroup config_group("config");
- config_group.loadFromFile(config_filename);
-
- std::string color_filename = gDirUtilp->getExpandedFilename(
- LL_PATH_DEFAULT_SKIN, "colors.xml");
- LLControlGroup color_group("color");
- color_group.loadFromFile(color_filename);
-
- LLControlGroup floater_group("floater");
- LLControlGroup ignores_group("ignores");
+ LL_PATH_APP_SETTINGS, "settings.xml");
+ gSavedSettings.loadFromFile(config_filename);
+
+ // See LLAppViewer::init()
LLUI::settings_map_t settings;
- settings["config"] = &config_group;
- settings["color"] = &color_group;
- settings["floater"] = &floater_group;
- settings["ignores"] = &ignores_group;
-
+ settings["config"] = &gSavedSettings;
+ settings["ignores"] = &gWarningSettings;
+ settings["floater"] = &gSavedSettings;
+ settings["account"] = &gSavedPerAccountSettings;
+
// Don't use real images as we don't have a GL context
- TestImageProvider image_provider;
- LLUI::initClass(settings, &image_provider);
-
+ LLUI::initClass(settings, &gTestImageProvider);
+
const bool no_register_widgets = false;
LLWidgetReg::initClass( no_register_widgets );
-
+
// Unclear if this is needed
LLUI::setupPaths();
// Otherwise we get translation warnings when setting up floaters
// (tooltips for buttons)
std::set<std::string> default_args;
LLTrans::parseStrings("strings.xml", default_args);
-
+ LLTrans::parseLanguageStrings("language_settings.xml");
LLFontManager::initClass();
-
+
// Creating widgets apparently requires fonts to be initialized,
// otherwise it crashes.
LLFontGL::initClass(96.f, 1.f, 1.f,
- gDirUtilp->getAppRODataDir(),
- LLUI::getXUIPaths(),
- false ); // don't create gl textures
-
+ gDirUtilp->getAppRODataDir(),
+ LLUI::getXUIPaths(),
+ false ); // don't create gl textures
+
LLFloaterView::Params fvparams;
fvparams.name("Floater View");
fvparams.rect( LLRect(0,480,640,0) );
@@ -161,7 +172,10 @@ int main(int argc, char** argv)
fvparams.follows.flags(FOLLOWS_ALL);
fvparams.tab_stop(false);
gFloaterView = LLUICtrlFactory::create<LLFloaterView> (fvparams);
+}
+void export_test_floaters()
+{
// Convert all test floaters to new XML format
std::string delim = gDirUtilp->getDirDelimiter();
std::string xui_dir = get_xui_dir() + "en" + delim;
@@ -176,21 +190,32 @@ int main(int argc, char** argv)
llinfos << "Converting " << filename << llendl;
// Build a floater and output new attributes
LLXMLNodePtr output_node = new LLXMLNode();
- LLFloater* floater = new LLFloater();
+ LLFloater* floater = new LLFloater(LLSD());
LLUICtrlFactory::getInstance()->buildFloater(floater,
- filename,
- FALSE, // don't open floater
- output_node);
+ filename,
+ // FALSE, // don't open floater
+ output_node);
std::string out_filename = xui_dir + filename;
std::string::size_type extension_pos = out_filename.rfind(".xml");
out_filename.resize(extension_pos);
out_filename += "_new.xml";
-
+
llinfos << "Output: " << out_filename << llendl;
LLFILE* floater_file = LLFile::fopen(out_filename.c_str(), "w");
LLXMLNode::writeHeaderToFile(floater_file);
output_node->writeToFile(floater_file);
fclose(floater_file);
}
+}
+
+int main(int argc, char** argv)
+{
+ // Must init LLError for llerrs to actually cause errors.
+ LLError::initForApplication(".");
+
+ init_llui();
+
+ export_test_floaters();
+
return 0;
}