diff options
Diffstat (limited to 'indra/integration_tests/llui_libtest/llui_libtest.cpp')
-rw-r--r-- | indra/integration_tests/llui_libtest/llui_libtest.cpp | 103 |
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; } |