diff options
author | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-01-02 08:33:20 +0000 |
commit | 420b91db29485df39fd6e724e782c449158811cb (patch) | |
tree | b471a94563af914d3ed3edd3e856d21cb1b69945 /indra/newview/llfloaterabout.cpp |
Print done when done.
Diffstat (limited to 'indra/newview/llfloaterabout.cpp')
-rw-r--r-- | indra/newview/llfloaterabout.cpp | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/indra/newview/llfloaterabout.cpp b/indra/newview/llfloaterabout.cpp new file mode 100644 index 0000000000..d3c927a11c --- /dev/null +++ b/indra/newview/llfloaterabout.cpp @@ -0,0 +1,167 @@ +/** + * @file llfloaterabout.cpp + * @author James Cook + * @brief The about box from Help->About + * + * Copyright (c) 2001-$CurrentYear$, Linden Research, Inc. + * $License$ + */ + +#include "llviewerprecompiledheaders.h" + +#include "llfloaterabout.h" + +#include "llsys.h" +#include "llgl.h" +#include "llui.h" // for tr() +#include "v3dmath.h" + +#include "llviewertexteditor.h" +#include "llviewercontrol.h" +#include "llagent.h" +#include "llviewerstats.h" +#include "llviewerregion.h" +#include "llversion.h" +#include "llviewerbuild.h" +#include "llvieweruictrlfactory.h" +#include "viewer.h" // for gViewerDigest + +#include "llmozlib.h" +#include "llglheaders.h" + +extern LLCPUInfo gSysCPU; +extern LLMemoryInfo gSysMemory; +extern LLOSInfo gSysOS; +extern U32 gPacketsIn; + +///---------------------------------------------------------------------------- +/// Local function declarations, constants, enums, and typedefs +///---------------------------------------------------------------------------- + +LLFloaterAbout* LLFloaterAbout::sInstance = NULL; + +///---------------------------------------------------------------------------- +/// Class LLFloaterAbout +///---------------------------------------------------------------------------- + +// Default constructor +LLFloaterAbout::LLFloaterAbout() +: LLFloater("floater_about", "FloaterAboutRect", "") +{ + gUICtrlFactory->buildFloater(this, "floater_about.xml"); + + // Support for changing product name. + LLString title("About "); + title += gSecondLife; + setTitle(title); + + LLString support; + + // Version string + LLString version = gSecondLife + + llformat(" %d.%d.%d (%d) %s %s", + LL_VERSION_MAJOR, LL_VERSION_MINOR, LL_VERSION_PATCH, LL_VIEWER_BUILD, + __DATE__, __TIME__); + support.append(version); + support.append("\n\n"); + + // Position + LLViewerRegion* region = gAgent.getRegion(); + if (region) + { + //XUI:translate + const LLVector3d &pos = gAgent.getPositionGlobal(); + LLString pos_text = llformat("You are at %.1f, %.1f, %.1f ", + pos.mdV[VX], pos.mdV[VY], pos.mdV[VZ]); + support.append(pos_text); + + LLString region_text = llformat("in %s located at ", + gAgent.getRegion()->getName().c_str()); + support.append(region_text); + + char buffer[MAX_STRING]; + gAgent.getRegion()->getHost().getHostName(buffer, MAX_STRING); + support.append(buffer); + support.append(" ("); + gAgent.getRegion()->getHost().getString(buffer, MAX_STRING); + support.append(buffer); + support.append(")\n\n"); + } + + // CPU + support.append("CPU: "); + support.append( gSysCPU.getCPUStringTerse() ); + support.append("\n"); + + U32 memory = gSysMemory.getPhysicalMemory() / 1024 / 1024; + // For some reason, the reported amount of memory is always wrong by one meg + memory++; + + LLString mem_text = llformat("Memory: %u MB\n", memory ); + support.append(mem_text); + + support.append("OS Version: "); + support.append( gSysOS.getOSString().c_str() ); + support.append("\n"); + + support.append("Graphics Card Vendor: "); + support.append( (const char*) glGetString(GL_VENDOR) ); + support.append("\n"); + + support.append("Graphics Card: "); + support.append( (const char*) glGetString(GL_RENDERER) ); + support.append("\n"); + + support.append("OpenGL Version: "); + support.append( (const char*) glGetString(GL_VERSION) ); + support.append("\n"); + +#if LL_LIBXUL_ENABLED + support.append("LLMozLib Version: "); + support.append( (const char*) LLMozLib::getInstance()->getVersion().c_str() ); + support.append("\n"); +#endif // LL_LIBXUL_ENABLED + + if (gViewerStats + && gPacketsIn > 0) + { + LLString packet_loss = llformat("Packets Lost: %.0f/%.0f (%.1f%%)", + gViewerStats->mPacketsLostStat.getCurrent(), + F32(gPacketsIn), + 100.f*gViewerStats->mPacketsLostStat.getCurrent() / F32(gPacketsIn) ); + support.append(packet_loss); + support.append("\n"); + } + + // MD5 digest of executable + support.append("Viewer Digest: "); + char viewer_digest_string[UUID_STR_LENGTH]; + gViewerDigest.toString( viewer_digest_string ); + support.append(viewer_digest_string); + + // Fix views + childDisable("credits_editor"); + childDisable("support_editor"); + childSetText("support_editor", support); + + center(); + + sInstance = this; +} + +// Destroys the object +LLFloaterAbout::~LLFloaterAbout() +{ + sInstance = NULL; +} + +// static +void LLFloaterAbout::show(void*) +{ + if (!sInstance) + { + sInstance = new LLFloaterAbout(); + } + + sInstance->open(); +} |