From 1a44e5b3e93c80bc09ae5ea0a3f600658d51324e Mon Sep 17 00:00:00 2001
From: Thickbrick Sleaford <thickbrick.sleaford@gmail.com>
Date: Wed, 15 Jun 2011 21:19:12 +0300
Subject: FIX STORM-1325 Retry bake uploads in case of upload failure

---
 indra/newview/llassetuploadresponders.cpp |  2 +-
 indra/newview/llassetuploadresponders.h   |  1 +
 indra/newview/lltexlayer.cpp              | 87 +++++++++++++++++++++----------
 indra/newview/lltexlayer.h                |  6 ++-
 4 files changed, 66 insertions(+), 30 deletions(-)

diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp
index c08771c5e7..e1d3de8409 100644
--- a/indra/newview/llassetuploadresponders.cpp
+++ b/indra/newview/llassetuploadresponders.cpp
@@ -449,7 +449,7 @@ void LLSendTexLayerResponder::uploadComplete(const LLSD& content)
 	std::string result = content["state"];
 	LLUUID new_id = content["new_asset"];
 
-	llinfos << "result: " << result << "new_id:" << new_id << llendl;
+	llinfos << "result: " << result << " new_id: " << new_id << llendl;
 	if (result == "complete"
 		&& mBakedUploadData != NULL)
 	{	// Invoke 
diff --git a/indra/newview/llassetuploadresponders.h b/indra/newview/llassetuploadresponders.h
index 70871b62e2..381b919c4a 100644
--- a/indra/newview/llassetuploadresponders.h
+++ b/indra/newview/llassetuploadresponders.h
@@ -112,6 +112,7 @@ private:
 struct LLBakedUploadData;
 class LLSendTexLayerResponder : public LLAssetUploadResponder
 {
+	LOG_CLASS(LLSendTexLayerResponder);
 public:
 	LLSendTexLayerResponder(const LLSD& post_data,
 							const LLUUID& vfile_id,
diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp
index 500c2a7b86..bd41aa64f0 100644
--- a/indra/newview/lltexlayer.cpp
+++ b/indra/newview/lltexlayer.cpp
@@ -51,6 +51,9 @@
 
 using namespace LLVOAvatarDefines;
 
+static const S32 BAKE_UPLOAD_ATTEMPTS = 7;
+static const F32 BAKE_UPLOAD_RETRY_DELAY = 2.f; // actual delay grows by power of 2 each attempt
+
 class LLTexLayerInfo
 {
 	friend class LLTexLayer;
@@ -93,11 +96,13 @@ private:
 //-----------------------------------------------------------------------------
 LLBakedUploadData::LLBakedUploadData(const LLVOAvatarSelf* avatar,
 									 LLTexLayerSet* layerset,
-									 const LLUUID& id) : 
+									 const LLUUID& id,
+									 bool highest_res) :
 	mAvatar(avatar),
 	mTexLayerSet(layerset),
 	mID(id),
-	mStartTime(LLFrameTimer::getTotalTime())		// Record starting time
+	mStartTime(LLFrameTimer::getTotalTime()),		// Record starting time
+	mIsHighestRes(highest_res)
 { 
 }
 
@@ -116,6 +121,7 @@ LLTexLayerSetBuffer::LLTexLayerSetBuffer(LLTexLayerSet* const owner,
 	mUploadPending(FALSE), // Not used for any logic here, just to sync sending of updates
 	mNeedsUpload(FALSE),
 	mNumLowresUploads(0),
+	mUploadFailCount(0),
 	mNeedsUpdate(TRUE),
 	mNumLowresUpdates(0),
 	mTexLayerSet(owner)
@@ -204,6 +210,7 @@ void LLTexLayerSetBuffer::cancelUpload()
 	mNeedsUpload = FALSE;
 	mUploadPending = FALSE;
 	mNeedsUploadTimer.pause();
+	mUploadRetryTimer.reset();
 }
 
 void LLTexLayerSetBuffer::pushProjection() const
@@ -356,25 +363,38 @@ BOOL LLTexLayerSetBuffer::isReadyToUpload() const
 	if (!gAgentQueryManager.hasNoPendingQueries()) return FALSE; // Can't upload if there are pending queries.
 	if (isAgentAvatarValid() && !gAgentAvatarp->isUsingBakedTextures()) return FALSE; // Don't upload if avatar is using composites.
 
-	// If we requested an upload and have the final LOD ready, then upload.
-	if (mTexLayerSet->isLocalTextureDataFinal()) return TRUE;
-
-	// Upload if we've hit a timeout.  Upload is a pretty expensive process so we need to make sure
-	// we aren't doing uploads too frequently.
-	const U32 texture_timeout = gSavedSettings.getU32("AvatarBakedTextureUploadTimeout");
-	if (texture_timeout != 0)
+	BOOL ready = FALSE;
+	if (mTexLayerSet->isLocalTextureDataFinal())
+	{
+		// If we requested an upload and have the final LOD ready, upload (or wait a while if this is a retry)
+		if (mUploadFailCount == 0)
+		{
+			ready = TRUE;
+		}
+		else
+		{
+			ready = mUploadRetryTimer.getElapsedTimeF32() >= BAKE_UPLOAD_RETRY_DELAY * (1 << (mUploadFailCount - 1));
+		}
+	}
+	else
 	{
-		// The timeout period increases exponentially between every lowres upload in order to prevent
-		// spamming the server with frequent uploads.
-		const U32 texture_timeout_threshold = texture_timeout*(1 << mNumLowresUploads);
+		// Upload if we've hit a timeout.  Upload is a pretty expensive process so we need to make sure
+		// we aren't doing uploads too frequently.
+		const U32 texture_timeout = gSavedSettings.getU32("AvatarBakedTextureUploadTimeout");
+		if (texture_timeout != 0)
+		{
+			// The timeout period increases exponentially between every lowres upload in order to prevent
+			// spamming the server with frequent uploads.
+			const U32 texture_timeout_threshold = texture_timeout*(1 << mNumLowresUploads);
 
-		// If we hit our timeout and have textures available at even lower resolution, then upload.
-		const BOOL is_upload_textures_timeout = mNeedsUploadTimer.getElapsedTimeF32() >= texture_timeout_threshold;
-		const BOOL has_lower_lod = mTexLayerSet->isLocalTextureDataAvailable();
-		if (has_lower_lod && is_upload_textures_timeout) return TRUE; 
+			// If we hit our timeout and have textures available at even lower resolution, then upload.
+			const BOOL is_upload_textures_timeout = mNeedsUploadTimer.getElapsedTimeF32() >= texture_timeout_threshold;
+			const BOOL has_lower_lod = mTexLayerSet->isLocalTextureDataAvailable();
+			ready = has_lower_lod && is_upload_textures_timeout;
+		}
 	}
 
-	return FALSE;
+	return ready;
 }
 
 BOOL LLTexLayerSetBuffer::isReadyToUpdate() const
@@ -482,17 +502,20 @@ void LLTexLayerSetBuffer::doUpload()
 			
 			if (valid)
 			{
+				const bool highest_lod = mTexLayerSet->isLocalTextureDataFinal();
 				// Baked_upload_data is owned by the responder and deleted after the request completes.
 				LLBakedUploadData* baked_upload_data = new LLBakedUploadData(gAgentAvatarp, 
 																			 this->mTexLayerSet, 
-																			 asset_id);
+																			 asset_id,
+																			 highest_lod);
 				// upload ID is used to avoid overlaps, e.g. when the user rapidly makes two changes outside of Face Edit.
 				mUploadID = asset_id;
 
 				// Upload the image
 				const std::string url = gAgent.getRegion()->getCapability("UploadBakedTexture");
 				if(!url.empty()
-					&& !LLPipeline::sForceOldBakedUpload) // toggle debug setting UploadBakedTexOld to change between the new caps method and old method
+					&& !LLPipeline::sForceOldBakedUpload // toggle debug setting UploadBakedTexOld to change between the new caps method and old method
+					&& (mUploadFailCount < (BAKE_UPLOAD_ATTEMPTS - 1))) // Try last ditch attempt via asset store if cap upload is failing.
 				{
 					LLSD body = LLSD::emptyMap();
 					// The responder will call LLTexLayerSetBuffer::onTextureUploadComplete()
@@ -511,7 +534,6 @@ void LLTexLayerSetBuffer::doUpload()
 					llinfos << "Baked texture upload via Asset Store." <<  llendl;
 				}
 
-				const BOOL highest_lod = mTexLayerSet->isLocalTextureDataFinal();	
 				if (highest_lod)
 				{
 					// Sending the final LOD for the baked texture.  All done, pause 
@@ -603,14 +625,15 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 {
 	LLBakedUploadData* baked_upload_data = (LLBakedUploadData*)userdata;
 
-	if ((result == 0) &&
-		isAgentAvatarValid() &&
+	if (isAgentAvatarValid() &&
 		!gAgentAvatarp->isDead() &&
 		(baked_upload_data->mAvatar == gAgentAvatarp) && // Sanity check: only the user's avatar should be uploading textures.
 		(baked_upload_data->mTexLayerSet->hasComposite()))
 	{
 		LLTexLayerSetBuffer* layerset_buffer = baked_upload_data->mTexLayerSet->getComposite();
-			
+		S32 failures = layerset_buffer->mUploadFailCount;
+		layerset_buffer->mUploadFailCount = 0;
+
 		if (layerset_buffer->mUploadID.isNull())
 		{
 			// The upload got canceled, we should be in the
@@ -626,20 +649,28 @@ void LLTexLayerSetBuffer::onTextureUploadComplete(const LLUUID& uuid,
 		{
 			// This is the upload we're currently waiting for.
 			layerset_buffer->mUploadID.setNull();
+			const std::string name(baked_upload_data->mTexLayerSet->getBodyRegionName());
+			const std::string resolution = baked_upload_data->mIsHighestRes ? " full res " : " low res ";
 			if (result >= 0)
 			{
-				layerset_buffer->mUploadPending = FALSE;
+				layerset_buffer->mUploadPending = FALSE; // Allows sending of AgentSetAppearance later
 				LLVOAvatarDefines::ETextureIndex baked_te = gAgentAvatarp->getBakedTE(layerset_buffer->mTexLayerSet);
 				// Update baked texture info with the new UUID
 				U64 now = LLFrameTimer::getTotalTime();		// Record starting time
-				llinfos << "Baked texture upload took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl;
+				llinfos << "Baked" << resolution << "texture upload for " << name << " took " << (S32)((now - baked_upload_data->mStartTime) / 1000) << " ms" << llendl;
 				gAgentAvatarp->setNewBakedTexture(baked_te, uuid);
 			}
 			else
 			{	
-				// Avatar appearance is changing, ignore the upload results
-				llinfos << "Baked upload failed. Reason: " << result << llendl;
-				// *FIX: retry upload after n seconds, asset server could be busy
+				++failures;
+				S32 max_attempts = baked_upload_data->mIsHighestRes ? BAKE_UPLOAD_ATTEMPTS : 1; // only retry final bakes
+				llwarns << "Baked" << resolution << "texture upload for " << name << " failed (attempt " << failures << "/" << max_attempts << ")" << llendl;
+				if (failures < max_attempts)
+				{
+					layerset_buffer->mUploadFailCount = failures;
+					layerset_buffer->mUploadRetryTimer.start();
+					layerset_buffer->requestUpload();
+				}
 			}
 		}
 		else
diff --git a/indra/newview/lltexlayer.h b/indra/newview/lltexlayer.h
index 2d710d2dce..85dadb213c 100644
--- a/indra/newview/lltexlayer.h
+++ b/indra/newview/lltexlayer.h
@@ -312,6 +312,8 @@ private:
 	BOOL					mUploadPending; 				// Whether we have received back the new baked textures
 	LLUUID					mUploadID; 						// The current upload process (null if none).
 	LLFrameTimer    		mNeedsUploadTimer; 				// Tracks time since upload was requested and performed.
+	S32						mUploadFailCount;				// Number of consecutive upload failures
+	LLFrameTimer    		mUploadRetryTimer; 				// Tracks time since last upload failure.
 
 	//--------------------------------------------------------------------
 	// Updates
@@ -363,12 +365,14 @@ struct LLBakedUploadData
 {
 	LLBakedUploadData(const LLVOAvatarSelf* avatar, 
 					  LLTexLayerSet* layerset, 
-					  const LLUUID& id);
+					  const LLUUID& id,
+					  bool highest_res);
 	~LLBakedUploadData() {}
 	const LLUUID				mID;
 	const LLVOAvatarSelf*		mAvatar; // note: backlink only; don't LLPointer 
 	LLTexLayerSet*				mTexLayerSet;
    	const U64					mStartTime;	// for measuring baked texture upload time
+   	const bool					mIsHighestRes; // whether this is a "final" bake, or intermediate low res
 };
 
 #endif  // LL_LLTEXLAYER_H
-- 
cgit v1.2.3


From 1f15f91d18a37fda5b13ca329aac39d8f01e7790 Mon Sep 17 00:00:00 2001
From: Thickbrick Sleaford <thickbrick.sleaford@gmail.com>
Date: Mon, 20 Jun 2011 16:44:48 +0300
Subject: contributions.txt for STORM-1325

---
 doc/contributions.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index daaffe2dee..d41ee7b24d 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -824,6 +824,7 @@ Thickbrick Sleaford
 	VWR-24420
 	STORM-956
 	STORM-1147
+	STORM-1325
 Thraxis Epsilon
 	SVC-371
 	VWR-383
-- 
cgit v1.2.3


From 0488142b93b6a5cc804a98e28e5dedc28cd4ea54 Mon Sep 17 00:00:00 2001
From: Boroondas Gupte <hg@boroon.dasgupta.ch>
Date: Tue, 21 Jun 2011 00:09:17 +0200
Subject: OPEN-99: use -march=pentium3 for 32-bit builds only

---
 doc/contributions.txt       | 1 +
 indra/cmake/00-Common.cmake | 5 ++++-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index 5f209a6675..5baaf6d12e 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -148,6 +148,7 @@ Blakar Ogre
 blino Nakamura
 	VWR-17
 Boroondas Gupte
+	OPEN-99
 	SNOW-278
 	VWR-233
 	WEB-262
diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake
index 2cc8fa5e5f..d9e1dd9afb 100644
--- a/indra/cmake/00-Common.cmake
+++ b/indra/cmake/00-Common.cmake
@@ -169,7 +169,10 @@ if (LINUX)
     add_definitions(-fvisibility=hidden)
     # don't catch SIGCHLD in our base application class for the viewer - some of our 3rd party libs may need their *own* SIGCHLD handler to work.  Sigh!  The viewer doesn't need to catch SIGCHLD anyway.
     add_definitions(-DLL_IGNORE_SIGCHLD)
-    add_definitions(-march=pentium3 -mfpmath=sse -ftree-vectorize)
+    if (WORD_SIZE EQUAL 32)
+      add_definitions(-march=pentium3)
+    endif (WORD_SIZE EQUAL 32)
+    add_definitions(-mfpmath=sse -ftree-vectorize)
     if (NOT STANDALONE)
       # this stops us requiring a really recent glibc at runtime
       add_definitions(-fno-stack-protector)
-- 
cgit v1.2.3


From 0ec4d813ebfd80f82bb2b84e993f7a192e3fddb5 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Thu, 23 Jun 2011 14:50:28 -0400
Subject: Log enriched memory info for Mac too. Add Mac logic to
 LLMemoryInfo::stream(): run vm_stat and log its output. Add comments with Mac
 and Linux suggestions to LLMemoryInfo::getAvailableMemoryKB(), responding to
 comment: //do not know how to collect available memory info for other
 systems.

---
 indra/llcommon/llsys.cpp | 106 +++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 99 insertions(+), 7 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index e8616a9be6..4190c91fd8 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -1,6 +1,6 @@
 /** 
  * @file llsys.cpp
- * @brief Impelementation of the basic system query functions.
+ * @brief Implementation of the basic system query functions.
  *
  * $LicenseInfo:firstyear=2002&license=viewerlgpl$
  * Second Life Viewer Source Code
@@ -697,6 +697,76 @@ void LLMemoryInfo::getAvailableMemoryKB(U32& avail_physical_mem_kb, U32& avail_v
 	avail_physical_mem_kb = (U32)(state.ullAvailPhys/1024) ;
 	avail_virtual_mem_kb = (U32)(state.ullAvailVirtual/1024) ;
 
+#elif LL_DARWIN
+	// Run vm_stat and filter output, scaling for page size:
+	// $ vm_stat
+	// Mach Virtual Memory Statistics: (page size of 4096 bytes)
+	// Pages free:                   462078.
+	// Pages active:                 142010.
+	// Pages inactive:               220007.
+	// Pages wired down:             159552.
+	// "Translation faults":      220825184.
+	// Pages copy-on-write:         2104153.
+	// Pages zero filled:         167034876.
+	// Pages reactivated:             65153.
+	// Pageins:                     2097212.
+	// Pageouts:                      41759.
+	// Object cache: 841598 hits of 7629869 lookups (11% hit rate)
+	avail_physical_mem_kb = -1 ;
+	avail_virtual_mem_kb = -1 ;
+
+#elif LL_LINUX
+	// Read selected lines from MEMINFO_FILE:
+	// $ cat /proc/meminfo
+	// MemTotal:        4108424 kB
+	// MemFree:         1244064 kB
+	// Buffers:           85164 kB
+	// Cached:          1990264 kB
+	// SwapCached:            0 kB
+	// Active:          1176648 kB
+	// Inactive:        1427532 kB
+	// Active(anon):     529152 kB
+	// Inactive(anon):    15924 kB
+	// Active(file):     647496 kB
+	// Inactive(file):  1411608 kB
+	// Unevictable:          16 kB
+	// Mlocked:              16 kB
+	// HighTotal:       3266316 kB
+	// HighFree:         721308 kB
+	// LowTotal:         842108 kB
+	// LowFree:          522756 kB
+	// SwapTotal:       6384632 kB
+	// SwapFree:        6384632 kB
+	// Dirty:                28 kB
+	// Writeback:             0 kB
+	// AnonPages:        528820 kB
+	// Mapped:            89472 kB
+	// Shmem:             16324 kB
+	// Slab:             159624 kB
+	// SReclaimable:     145168 kB
+	// SUnreclaim:        14456 kB
+	// KernelStack:        2560 kB
+	// PageTables:         5560 kB
+	// NFS_Unstable:          0 kB
+	// Bounce:                0 kB
+	// WritebackTmp:          0 kB
+	// CommitLimit:     8438844 kB
+	// Committed_AS:    1271596 kB
+	// VmallocTotal:     122880 kB
+	// VmallocUsed:       65252 kB
+	// VmallocChunk:      52356 kB
+	// HardwareCorrupted:     0 kB
+	// HugePages_Total:       0
+	// HugePages_Free:        0
+	// HugePages_Rsvd:        0
+	// HugePages_Surp:        0
+	// Hugepagesize:       2048 kB
+	// DirectMap4k:      434168 kB
+	// DirectMap2M:      477184 kB
+	// (could also run 'free', but easier to read a file than run a program)
+	avail_physical_mem_kb = -1 ;
+	avail_virtual_mem_kb = -1 ;
+
 #else
 	//do not know how to collect available memory info for other systems.
 	//leave it blank here for now.
@@ -720,6 +790,7 @@ void LLMemoryInfo::stream(std::ostream& s) const
 	s << "Avail page KB:      " << (U32)(state.ullAvailPageFile/1024) << std::endl;
 	s << "Total Virtual KB:   " << (U32)(state.ullTotalVirtual/1024) << std::endl;
 	s << "Avail Virtual KB:   " << (U32)(state.ullAvailVirtual/1024) << std::endl;
+
 #elif LL_DARWIN
 	uint64_t phys = 0;
 
@@ -731,22 +802,39 @@ void LLMemoryInfo::stream(std::ostream& s) const
 	}
 	else
 	{
-		s << "Unable to collect memory information";
+		s << "Unable to collect hw.memsize memory information" << std::endl;
+	}
+
+	FILE* pout = popen("vm_stat 2>&1", "r");
+	if (! pout)
+	{
+		s << "Unable to collect vm_stat memory information" << std::endl;
 	}
+	else
+	{
+		// Here 'pout' is vm_stat's stdout. Copy it to output stream.
+		char line[100];
+		while (fgets(line, sizeof(line), pout))
+		{
+			s << line;
+		}
+		fclose(pout);
+	}
+
 #elif LL_SOLARIS
         U64 phys = 0;
 
         phys = (U64)(sysconf(_SC_PHYS_PAGES)) * (U64)(sysconf(_SC_PAGESIZE)/1024);
 
         s << "Total Physical KB:  " << phys << std::endl;
-#else
-	// *NOTE: This works on linux. What will it do on other systems?
+
+#elif LL_LINUX
 	LLFILE* meminfo = LLFile::fopen(MEMINFO_FILE,"rb");
 	if(meminfo)
 	{
 		char line[MAX_STRING];		/* Flawfinder: ignore */
-		memset(line, 0, MAX_STRING);
-		while(fgets(line, MAX_STRING, meminfo))
+		memset(line, 0, sizeof(line));
+		while(fgets(line, sizeof(line), meminfo))
 		{
 			line[strlen(line)-1] = ' ';		 /*Flawfinder: ignore*/
 			s << line;
@@ -755,8 +843,12 @@ void LLMemoryInfo::stream(std::ostream& s) const
 	}
 	else
 	{
-		s << "Unable to collect memory information";
+		s << "Unable to collect memory information" << std::endl;
 	}
+
+#else
+	s << "Unknown system; unable to collect memory information" << std::endl;
+
 #endif
 }
 
-- 
cgit v1.2.3


From 2619f3db1f781489b9efab0c5ed26c526b013158 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Fri, 24 Jun 2011 10:46:38 -0400
Subject: CHOP-753: add timestamp and <mem> marker to memory stats log lines

---
 indra/llcommon/llsys.cpp | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 4190c91fd8..015a24cf23 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -36,6 +36,7 @@
 #endif
 
 #include "llprocessor.h"
+#include "llerrorcontrol.h"
 
 #if LL_WINDOWS
 #	define WIN32_LEAN_AND_MEAN
@@ -778,18 +779,24 @@ void LLMemoryInfo::getAvailableMemoryKB(U32& avail_physical_mem_kb, U32& avail_v
 
 void LLMemoryInfo::stream(std::ostream& s) const
 {
+	// We want these memory stats to be easy to grep from the log, along with
+	// the timestamp. So preface each line with the timestamp and a
+	// distinctive marker. Without that, we'd have to search the log for the
+	// introducer line, then read subsequent lines, etc...
+	std::string pfx(LLError::utcTime() + " <mem> ");
+
 #if LL_WINDOWS
 	MEMORYSTATUSEX state;
 	state.dwLength = sizeof(state);
 	GlobalMemoryStatusEx(&state);
 
-	s << "Percent Memory use: " << (U32)state.dwMemoryLoad << '%' << std::endl;
-	s << "Total Physical KB:  " << (U32)(state.ullTotalPhys/1024) << std::endl;
-	s << "Avail Physical KB:  " << (U32)(state.ullAvailPhys/1024) << std::endl;
-	s << "Total page KB:      " << (U32)(state.ullTotalPageFile/1024) << std::endl;
-	s << "Avail page KB:      " << (U32)(state.ullAvailPageFile/1024) << std::endl;
-	s << "Total Virtual KB:   " << (U32)(state.ullTotalVirtual/1024) << std::endl;
-	s << "Avail Virtual KB:   " << (U32)(state.ullAvailVirtual/1024) << std::endl;
+	s << pfx << "Percent Memory use: " << (U32)state.dwMemoryLoad << '%' << std::endl;
+	s << pfx << "Total Physical KB:  " << (U32)(state.ullTotalPhys/1024) << std::endl;
+	s << pfx << "Avail Physical KB:  " << (U32)(state.ullAvailPhys/1024) << std::endl;
+	s << pfx << "Total page KB:      " << (U32)(state.ullTotalPageFile/1024) << std::endl;
+	s << pfx << "Avail page KB:      " << (U32)(state.ullAvailPageFile/1024) << std::endl;
+	s << pfx << "Total Virtual KB:   " << (U32)(state.ullTotalVirtual/1024) << std::endl;
+	s << pfx << "Avail Virtual KB:   " << (U32)(state.ullAvailVirtual/1024) << std::endl;
 
 #elif LL_DARWIN
 	uint64_t phys = 0;
@@ -798,7 +805,7 @@ void LLMemoryInfo::stream(std::ostream& s) const
 	
 	if(sysctlbyname("hw.memsize", &phys, &len, NULL, 0) == 0)
 	{
-		s << "Total Physical KB:  " << phys/1024 << std::endl;
+		s << pfx << "Total Physical KB:  " << phys/1024 << std::endl;
 	}
 	else
 	{
@@ -816,7 +823,7 @@ void LLMemoryInfo::stream(std::ostream& s) const
 		char line[100];
 		while (fgets(line, sizeof(line), pout))
 		{
-			s << line;
+			s << pfx << line;
 		}
 		fclose(pout);
 	}
@@ -826,7 +833,7 @@ void LLMemoryInfo::stream(std::ostream& s) const
 
         phys = (U64)(sysconf(_SC_PHYS_PAGES)) * (U64)(sysconf(_SC_PAGESIZE)/1024);
 
-        s << "Total Physical KB:  " << phys << std::endl;
+        s << pfx << "Total Physical KB:  " << phys << std::endl;
 
 #elif LL_LINUX
 	LLFILE* meminfo = LLFile::fopen(MEMINFO_FILE,"rb");
@@ -837,7 +844,7 @@ void LLMemoryInfo::stream(std::ostream& s) const
 		while(fgets(line, sizeof(line), meminfo))
 		{
 			line[strlen(line)-1] = ' ';		 /*Flawfinder: ignore*/
-			s << line;
+			s << pfx << line;
 		}
 		fclose(meminfo);
 	}
-- 
cgit v1.2.3


From abb8a7018d0fc7a52aa35f4be1cec372719e4eda Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 28 Jun 2011 08:21:49 -0400
Subject: CHOP-753: Log LLMemoryInfo whenever framerate hits a new low.
 Introduce FrameWatcher, a static object that hooks into the LLEventPump named
 "mainloop" to get a call every frame. Track framerate over a defined sample
 time (20 seconds atm); track minimum and log LLMemoryInfo every time we hit a
 new minimum.

---
 indra/llcommon/llsys.cpp | 106 +++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 106 insertions(+)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 015a24cf23..92fdf4f327 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -37,6 +37,9 @@
 
 #include "llprocessor.h"
 #include "llerrorcontrol.h"
+#include "llevents.h"
+#include "lltimer.h"
+#include <boost/bind.hpp>
 
 #if LL_WINDOWS
 #	define WIN32_LEAN_AND_MEAN
@@ -71,6 +74,10 @@ extern int errno;
 static const S32 CPUINFO_BUFFER_SIZE = 16383;
 LLCPUInfo gSysCPU;
 
+// Don't log memory info any more often than this. It also serves as our
+// framerate sample size.
+static const F32 MEM_INFO_THROTTLE = 20;
+
 #if LL_WINDOWS
 #ifndef DLLVERSIONINFO
 typedef struct _DllVersionInfo
@@ -877,6 +884,105 @@ std::ostream& operator<<(std::ostream& s, const LLMemoryInfo& info)
 	return s;
 }
 
+class FrameWatcher
+{
+public:
+    FrameWatcher():
+        // Hooking onto the "mainloop" event pump gets us one call per frame.
+        mConnection(LLEventPumps::instance()
+                    .obtain("mainloop")
+                    .listen("FrameWatcher", boost::bind(&FrameWatcher::tick, this, _1))),
+        // Initializing mSampleStart to an invalid timestamp alerts us to skip
+        // trying to compute framerate on the first call.
+        mSampleStart(-1),
+        // Initializing mSampleEnd to 0 ensures that we treat the first call
+        // as the completion of a sample window.
+        mSampleEnd(0),
+        mFrames(0),
+        // Initializing to F32_MAX means that the first real frame will become
+        // the slowest ever, which sounds like a good idea.
+        mSlowest(F32_MAX),
+        mDesc("startup")
+    {}
+
+    bool tick(const LLSD&)
+    {
+        F32 timestamp(mTimer.getElapsedTimeF32());
+
+        // Count this frame in the interval just completed.
+        ++mFrames;
+
+        // Have we finished a sample window yet?
+        if (timestamp < mSampleEnd)
+        {
+            // no, just keep waiting
+            return false;
+        }
+
+        // Set up for next sample window. Capture values for previous frame in
+        // local variables and reset data members.
+        U32 frames(mFrames);
+        F32 sampleStart(mSampleStart);
+        // No frames yet in next window
+        mFrames = 0;
+        // which starts right now
+        mSampleStart = timestamp;
+        // and ends MEM_INFO_THROTTLE seconds in the future
+        mSampleEnd = mSampleStart + MEM_INFO_THROTTLE;
+
+        // On the very first call, that's all we can do, no framerate
+        // computation is possible.
+        if (sampleStart < 0)
+        {
+            return false;
+        }
+
+        // How long did this actually take? As framerate slows, the duration
+        // of the frame we just finished could push us WELL beyond our desired
+        // sample window size.
+        F32 elapsed(timestamp - sampleStart);
+        F32 framerate(frames/elapsed);
+
+        // We're especially interested in memory as framerate drops. Only log
+        // when framerate is lower than ever before. (Should always be true
+        // for the end of the very first sample window.)
+        if (framerate >= mSlowest)
+        {
+            return false;
+        }
+        // Congratulations, we've hit a new low.  :-P
+        mSlowest = framerate;
+
+        LL_INFOS("FrameWatcher") << mDesc << " framerate "
+                                 << std::fixed << std::setprecision(1) << framerate << '\n'
+                                 << LLMemoryInfo() << LL_ENDL;
+        mDesc = "new lowest";
+
+        return false;
+    }
+
+private:
+    // Storing the connection in an LLTempBoundListener ensures it will be
+    // disconnected when we're destroyed.
+    LLTempBoundListener mConnection;
+    // Track elapsed time
+    LLTimer mTimer;
+    // Some of what you see here is in fact redundant with functionality you
+    // can get from LLTimer. Unfortunately the LLTimer API is missing the
+    // feature we need: has at least the stated interval elapsed, and if so,
+    // exactly how long has passed? So we have to do it by hand, sigh.
+    // Time at start, end of sample window
+    F32 mSampleStart, mSampleEnd;
+    // Frames this sample window
+    U32 mFrames;
+    // Slowest framerate EVAR
+    F32 mSlowest;
+    // Description of next notable framerate
+    std::string mDesc;
+};
+
+static FrameWatcher sFrameWatcher;
+
 BOOL gunzip_file(const std::string& srcfile, const std::string& dstfile)
 {
 	std::string tmpfile;
-- 
cgit v1.2.3


From 57c230b73ea171d310ad3c132624a8fdd6751b0e Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 28 Jun 2011 08:58:10 -0400
Subject: CHOP-753: suppress VS fatal warning 4355

---
 indra/llcommon/llsys.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 92fdf4f327..156c78b1e8 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -24,6 +24,10 @@
  * $/LicenseInfo$
  */
 
+#if LL_WINDOWS
+#pragma warning (disable : 4355) // 'this' used in initializer list: yes, intentionally
+#endif
+
 #include "linden_common.h"
 
 #include "llsys.h"
-- 
cgit v1.2.3


From 26be53aede499182252bb797e798611169ea0553 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 28 Jun 2011 16:01:16 -0400
Subject: CHOP-753: Introduce a sliding window of framerate samples. The
 trouble with remembering the slowest-ever framerate is that framerate drops
 dramatically on login, then typically bounces back to something reasonable
 during the session. So the session-normal framerate has to drop pretty
 dramatically before it falls below the original login framerate. To address
 this, only remember the last ~10 minutes of framerates, and log memory stats
 every time a new framerate is slower than the previous 10 minutes.

---
 indra/llcommon/llsys.cpp | 70 +++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 57 insertions(+), 13 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 156c78b1e8..ccd6f261b7 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -44,6 +44,7 @@
 #include "llevents.h"
 #include "lltimer.h"
 #include <boost/bind.hpp>
+#include <boost/circular_buffer.hpp>
 
 #if LL_WINDOWS
 #	define WIN32_LEAN_AND_MEAN
@@ -81,6 +82,11 @@ LLCPUInfo gSysCPU;
 // Don't log memory info any more often than this. It also serves as our
 // framerate sample size.
 static const F32 MEM_INFO_THROTTLE = 20;
+// Sliding window of samples. We intentionally limit the length of time we
+// remember "the slowest" framerate because framerate is very slow at login.
+// If we only triggered FrameWatcher logging when the session framerate
+// dropped below the login framerate, we'd have very little additional data.
+static const F32 MEM_INFO_WINDOW = 10*60;
 
 #if LL_WINDOWS
 #ifndef DLLVERSIONINFO
@@ -903,10 +909,13 @@ public:
         // as the completion of a sample window.
         mSampleEnd(0),
         mFrames(0),
+        // Both MEM_INFO_WINDOW and MEM_INFO_THROTTLE are in seconds. We need
+        // the number of integer MEM_INFO_THROTTLE sample slots that will fit
+        // in MEM_INFO_WINDOW. Round up.
+        mSamples(int((MEM_INFO_WINDOW / MEM_INFO_THROTTLE) + 0.7)),
         // Initializing to F32_MAX means that the first real frame will become
         // the slowest ever, which sounds like a good idea.
-        mSlowest(F32_MAX),
-        mDesc("startup")
+        mSlowest(F32_MAX)
     {}
 
     bool tick(const LLSD&)
@@ -947,20 +956,54 @@ public:
         F32 elapsed(timestamp - sampleStart);
         F32 framerate(frames/elapsed);
 
+        // Remember previous slowest framerate because we're just about to
+        // update it.
+        F32 slowest(mSlowest);
+        // Remember previous number of samples.
+        boost::circular_buffer<F32>::size_type prevSize(mSamples.size());
+
+        // Capture new framerate in our samples buffer. Once the buffer is
+        // full (after MEM_INFO_WINDOW seconds), this will displace the oldest
+        // sample. ("So they all rolled over, and one fell out...")
+        mSamples.push_back(framerate);
+
+        // Calculate the new minimum framerate. I know of no way to update a
+        // rolling minimum without ever rescanning the buffer. But since there
+        // are only a few tens of items in this buffer, rescanning it is
+        // probably cheaper (and certainly easier to reason about) than
+        // attempting to optimize away some of the scans.
+        mSlowest = framerate;       // pick an arbitrary entry to start
+        for (boost::circular_buffer<F32>::const_iterator si(mSamples.begin()), send(mSamples.end());
+             si != send; ++si)
+        {
+            if (*si < mSlowest)
+            {
+                mSlowest = *si;
+            }
+        }
+
         // We're especially interested in memory as framerate drops. Only log
-        // when framerate is lower than ever before. (Should always be true
-        // for the end of the very first sample window.)
-        if (framerate >= mSlowest)
+        // when framerate drops below the slowest framerate we remember.
+        // (Should always be true for the end of the very first sample
+        // window.)
+        if (framerate >= slowest)
         {
             return false;
         }
         // Congratulations, we've hit a new low.  :-P
-        mSlowest = framerate;
 
-        LL_INFOS("FrameWatcher") << mDesc << " framerate "
-                                 << std::fixed << std::setprecision(1) << framerate << '\n'
-                                 << LLMemoryInfo() << LL_ENDL;
-        mDesc = "new lowest";
+        LL_INFOS("FrameWatcher") << ' ';
+        if (! prevSize)
+        {
+            LL_CONT << "initial framerate ";
+        }
+        else
+        {
+            LL_CONT << "slowest framerate for last " << int(prevSize * MEM_INFO_THROTTLE)
+                    << " seconds ";
+        }
+        LL_CONT << std::fixed << std::setprecision(1) << framerate << '\n'
+                << LLMemoryInfo() << LL_ENDL;
 
         return false;
     }
@@ -979,12 +1022,13 @@ private:
     F32 mSampleStart, mSampleEnd;
     // Frames this sample window
     U32 mFrames;
-    // Slowest framerate EVAR
+    // Sliding window of framerate samples
+    boost::circular_buffer<F32> mSamples;
+    // Slowest framerate in mSamples
     F32 mSlowest;
-    // Description of next notable framerate
-    std::string mDesc;
 };
 
+// Need an instance of FrameWatcher before it does any good
 static FrameWatcher sFrameWatcher;
 
 BOOL gunzip_file(const std::string& srcfile, const std::string& dstfile)
-- 
cgit v1.2.3


From 1262f710b548100e4522866341febba3d7cf535d Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 28 Jun 2011 23:09:00 -0400
Subject: CHOP-753: Report Linux memory stats 1/line, like other platforms.
 Previous code deliberately flowed the different lines from MEMINFO_FILE
 together on a single line, which seems pointless to me, since we want to be
 able to grep the viewer log to recognize individual stats. Also replace
 classic-C LLFILE* machinery used to read MEMINFO_FILE with std::ifstream and
 std::getline().

---
 indra/llcommon/llsys.cpp | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index ccd6f261b7..f0f98f5bf6 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -853,17 +853,14 @@ void LLMemoryInfo::stream(std::ostream& s) const
         s << pfx << "Total Physical KB:  " << phys << std::endl;
 
 #elif LL_LINUX
-	LLFILE* meminfo = LLFile::fopen(MEMINFO_FILE,"rb");
-	if(meminfo)
+	std::ifstream meminfo(MEMINFO_FILE);
+	if (meminfo.is_open())
 	{
-		char line[MAX_STRING];		/* Flawfinder: ignore */
-		memset(line, 0, sizeof(line));
-		while(fgets(line, sizeof(line), meminfo))
+		std::string line;
+		while (std::getline(meminfo, line))
 		{
-			line[strlen(line)-1] = ' ';		 /*Flawfinder: ignore*/
-			s << pfx << line;
+			s << pfx << line << '\n';
 		}
-		fclose(meminfo);
 	}
 	else
 	{
-- 
cgit v1.2.3


From 68c8248fb9450cc9adb41f53f0d2f03d5fd4124e Mon Sep 17 00:00:00 2001
From: Jonathan Yap <none@none>
Date: Wed, 29 Jun 2011 10:28:06 -0400
Subject: STORM-1459 "Wearing Tab" - Add ability to copy displayed inventory
 names to clipboard

---
 doc/contributions.txt                              |  2 ++
 indra/newview/llpanelwearing.cpp                   | 26 ++++++++++++++++++++++
 indra/newview/llpanelwearing.h                     |  1 +
 .../skins/default/xui/en/panel_outfits_wearing.xml | 11 ++++++++-
 4 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index 256c39eb9e..b253a7662d 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -449,6 +449,7 @@ Jonathan Yap
 	STORM-1313
 	STORM-899
 	STORM-1273
+	STORM-1459
 Kage Pixel
 	VWR-11
 Ken March
@@ -690,6 +691,7 @@ Robin Cornelius
 	STORM-1019
 	STORM-1095
 	STORM-1128
+	STORM-1459
 	VWR-2488
 	VWR-9557
 	VWR-10579
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index 911a9e5dda..e0109675a6 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -38,6 +38,8 @@
 #include "llsidetray.h"
 #include "llviewermenu.h"
 #include "llwearableitemslist.h"
+#include "llsdserialize.h"
+#include "llclipboard.h"
 
 // Context menu and Gear menu helper.
 static void edit_outfit()
@@ -182,6 +184,7 @@ BOOL LLPanelWearing::postBuild()
 {
 	mCOFItemsList = getChild<LLWearableItemsList>("cof_items_list");
 	mCOFItemsList->setRightMouseDownCallback(boost::bind(&LLPanelWearing::onWearableItemsListRightClick, this, _1, _2, _3));
+	childSetAction("copy_to_clipboard", boost::bind(&LLPanelWearing::copyToClipboard, this));
 
 	LLMenuButton* menu_gear_btn = getChild<LLMenuButton>("options_gear_btn");
 
@@ -280,4 +283,27 @@ void LLPanelWearing::getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const
 	mCOFItemsList->getSelectedUUIDs(selected_uuids);
 }
 
+void LLPanelWearing::copyToClipboard()
+{
+	std::string text;
+	bool need_cr = false;
+	std::vector<LLSD> data;
+	mCOFItemsList->getValues(data);
+	for(std::vector<LLSD>::iterator iter = data.begin(); iter != data.end(); iter++)
+	{
+		LLSD uuid = (*iter);
+		LLViewerInventoryItem* item = gInventory.getItem(uuid);
+		if (!need_cr)
+		{
+			text += item->getName();
+			need_cr = true;
+		}
+		else
+		{
+			text += "\n" + item->getName();
+		}
+	}
+	gClipboard.copyFromString(utf8str_to_wstring(text));
+}
+
 // EOF
diff --git a/indra/newview/llpanelwearing.h b/indra/newview/llpanelwearing.h
index 157b2c4c5f..4c9f5ed079 100644
--- a/indra/newview/llpanelwearing.h
+++ b/indra/newview/llpanelwearing.h
@@ -66,6 +66,7 @@ public:
 
 private:
 	void onWearableItemsListRightClick(LLUICtrl* ctrl, S32 x, S32 y);
+	void copyToClipboard();
 
 	LLInventoryCategoriesObserver* 	mCategoriesObserver;
 	LLWearableItemsList* 			mCOFItemsList;
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
index d85b778db2..eef499184c 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
@@ -42,6 +42,15 @@
          tool_tip="Show additional options"
          top="1"
          width="31" />
+        <button
+         follows="bottom|left|right"
+         height="25"
+         layout="topleft"
+         left_pad="1"
+         name="copy_to_clipboard"
+         label="Send to clipboard"
+         tool_tip="Send current outfit names to clipboard"
+         width="150" />
         <icon
          follows="bottom|left|right"
          height="25"
@@ -49,6 +58,6 @@
          layout="topleft"
          left_pad="1"
          name="dummy_icon"
-         width="274" />
+         width="123" />
     </panel>
 </panel>
-- 
cgit v1.2.3


From a6475e379e972776761a9d69b76fcbb392959a26 Mon Sep 17 00:00:00 2001
From: Jonathan Yap <none@none>
Date: Wed, 29 Jun 2011 15:12:21 -0400
Subject: STORM-1459 "Wearing Tab" - Add ability to copy displayed inventory
 names to clipboard Made changes with input from Oz & Vadim

---
 doc/contributions.txt                                |  1 +
 indra/newview/llpanelwearing.cpp                     | 20 +++++++++-----------
 indra/newview/llpanelwearing.h                       |  3 ++-
 .../skins/default/xui/en/menu_wearing_gear.xml       |  7 +++++++
 .../skins/default/xui/en/panel_outfits_wearing.xml   | 11 +----------
 5 files changed, 20 insertions(+), 22 deletions(-)

diff --git a/doc/contributions.txt b/doc/contributions.txt
index b253a7662d..5114aa53dd 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -103,6 +103,7 @@ Ales Beaumont
 Alexandrea Fride
     STORM-255
 	STORM-960
+	STORM-1459
 Alissa Sabre
 	VWR-81
 	VWR-83
diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index e0109675a6..c2f39524c4 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -60,6 +60,7 @@ public:
 
 		registrar.add("Gear.Edit", boost::bind(&edit_outfit));
 		registrar.add("Gear.TakeOff", boost::bind(&LLWearingGearMenu::onTakeOff, this));
+		registrar.add("Gear.Copy", boost::bind(&LLPanelWearing::copyToClipboard, mPanelWearing));
 
 		enable_registrar.add("Gear.OnEnable", boost::bind(&LLPanelWearing::isActionEnabled, mPanelWearing, _2));
 
@@ -184,7 +185,6 @@ BOOL LLPanelWearing::postBuild()
 {
 	mCOFItemsList = getChild<LLWearableItemsList>("cof_items_list");
 	mCOFItemsList->setRightMouseDownCallback(boost::bind(&LLPanelWearing::onWearableItemsListRightClick, this, _1, _2, _3));
-	childSetAction("copy_to_clipboard", boost::bind(&LLPanelWearing::copyToClipboard, this));
 
 	LLMenuButton* menu_gear_btn = getChild<LLMenuButton>("options_gear_btn");
 
@@ -286,24 +286,22 @@ void LLPanelWearing::getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const
 void LLPanelWearing::copyToClipboard()
 {
 	std::string text;
-	bool need_cr = false;
 	std::vector<LLSD> data;
 	mCOFItemsList->getValues(data);
-	for(std::vector<LLSD>::iterator iter = data.begin(); iter != data.end(); iter++)
+
+	for(std::vector<LLSD>::const_iterator iter = data.begin(); iter != data.end();)
 	{
 		LLSD uuid = (*iter);
 		LLViewerInventoryItem* item = gInventory.getItem(uuid);
-		if (!need_cr)
-		{
-			text += item->getName();
-			need_cr = true;
-		}
-		else
+
+		iter++;
+		if (item != NULL)
 		{
-			text += "\n" + item->getName();
+			// Append a CR to all but the last line
+			text += iter != data.end() ? item->getName() + "\n" : item->getName();
 		}
 	}
+
 	gClipboard.copyFromString(utf8str_to_wstring(text));
 }
-
 // EOF
diff --git a/indra/newview/llpanelwearing.h b/indra/newview/llpanelwearing.h
index 4c9f5ed079..9a212b3cca 100644
--- a/indra/newview/llpanelwearing.h
+++ b/indra/newview/llpanelwearing.h
@@ -60,13 +60,14 @@ public:
 
 	/*virtual*/ void getSelectedItemsUUIDs(uuid_vec_t& selected_uuids) const;
 
+	/*virtual*/ void copyToClipboard();
+
 	boost::signals2::connection setSelectionChangeCallback(commit_callback_t cb);
 
 	bool hasItemSelected();
 
 private:
 	void onWearableItemsListRightClick(LLUICtrl* ctrl, S32 x, S32 y);
-	void copyToClipboard();
 
 	LLInventoryCategoriesObserver* 	mCategoriesObserver;
 	LLWearableItemsList* 			mCOFItemsList;
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
index 0ac2c14253..0e858ccf10 100644
--- a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
@@ -20,4 +20,11 @@
          function="Gear.OnEnable"
          parameter="take_off" />
     </menu_item_call>
+    <menu_item_call
+     label="Copy outfit list to clipboard"
+     layout="topleft"
+     name="copy">
+        <on_click
+         function="Gear.Copy" />
+    </menu_item_call>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
index eef499184c..d85b778db2 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_wearing.xml
@@ -42,15 +42,6 @@
          tool_tip="Show additional options"
          top="1"
          width="31" />
-        <button
-         follows="bottom|left|right"
-         height="25"
-         layout="topleft"
-         left_pad="1"
-         name="copy_to_clipboard"
-         label="Send to clipboard"
-         tool_tip="Send current outfit names to clipboard"
-         width="150" />
         <icon
          follows="bottom|left|right"
          height="25"
@@ -58,6 +49,6 @@
          layout="topleft"
          left_pad="1"
          name="dummy_icon"
-         width="123" />
+         width="274" />
     </panel>
 </panel>
-- 
cgit v1.2.3


From 1209796e1971e5c784218cef7ec003fb76df2c2c Mon Sep 17 00:00:00 2001
From: eli_linden <none@none>
Date: Wed, 29 Jun 2011 12:23:33 -0700
Subject: sync with viewer-development

---
 indra/newview/skins/default/xui/da/panel_people.xml       |  8 ++++----
 indra/newview/skins/default/xui/de/panel_people.xml       |  8 ++++----
 indra/newview/skins/default/xui/en/main_view.xml          | 15 ++++++++-------
 indra/newview/skins/default/xui/en/notifications.xml      | 13 +++++++++++++
 indra/newview/skins/default/xui/en/panel_outfits_list.xml | 11 ++++++++---
 indra/newview/skins/default/xui/en/panel_people.xml       | 15 ++++++++-------
 indra/newview/skins/default/xui/en/strings.xml            |  3 +++
 indra/newview/skins/default/xui/es/panel_people.xml       |  8 ++++----
 indra/newview/skins/default/xui/fr/panel_people.xml       |  8 ++++----
 indra/newview/skins/default/xui/it/panel_people.xml       |  8 ++++----
 indra/newview/skins/default/xui/ja/panel_people.xml       |  8 ++++----
 indra/newview/skins/default/xui/pl/panel_people.xml       |  8 ++++----
 indra/newview/skins/default/xui/pt/panel_people.xml       |  8 ++++----
 indra/newview/skins/default/xui/zh/panel_people.xml       |  8 ++++----
 14 files changed, 76 insertions(+), 53 deletions(-)

diff --git a/indra/newview/skins/default/xui/da/panel_people.xml b/indra/newview/skins/default/xui/da/panel_people.xml
index 925492b2d7..66a128cd13 100644
--- a/indra/newview/skins/default/xui/da/panel_people.xml
+++ b/indra/newview/skins/default/xui/da/panel_people.xml
@@ -66,16 +66,16 @@ Leder du efter nogen at være sammen med? Prøv [secondlife:///app/worldmap Verd
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Profil" name="view_profile_btn" tool_tip="Vis billeder, grupper og anden beboer information"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="Åben session med privat besked (IM)"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Kald" name="call_btn" tool_tip="Opkald til denne beboer"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teleportér" name="teleport_btn" tool_tip="Tilbyd teleport"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml
index 004792bbf5..63a832a165 100644
--- a/indra/newview/skins/default/xui/de/panel_people.xml
+++ b/indra/newview/skins/default/xui/de/panel_people.xml
@@ -66,16 +66,16 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte].
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="Instant Messenger öffnen"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="Teilen" name="share_btn" tool_tip="Inventarobjekt teilen"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/en/main_view.xml b/indra/newview/skins/default/xui/en/main_view.xml
index 3ead67ca57..a7d1aa963c 100644
--- a/indra/newview/skins/default/xui/en/main_view.xml
+++ b/indra/newview/skins/default/xui/en/main_view.xml
@@ -135,6 +135,14 @@
          name="login_panel_holder"
          width="1024"/>
 
+      <debug_view follows="all"
+                  left="0"
+                  top="0"
+                  mouse_opaque="false"
+                  height="500"
+                  name="DebugView"
+                  width="1024"/>
+
       <panel follows="all"
                     height="500"
                     left="0"
@@ -154,13 +162,6 @@
                       top="0"
                       width="1024"/>
       </panel>
-      <debug_view follows="all"
-                  left="0"
-                  top="0"
-                  mouse_opaque="false"
-                  height="500"
-                  name="DebugView"
-                  width="1024"/>
     </layout_panel>
   </layout_stack>
   <panel mouse_opaque="false"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 09105c1d28..db1cee5d08 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -3696,6 +3696,19 @@ Join me in [REGION]
     </form>
   </notification>
 
+  <notification
+   icon="alertmodal.tga"
+   name="TooManyTeleportOffers"
+   type="alertmodal">
+You attempted to make [OFFERS] teleport offers
+which exceeds the limit of [LIMIT].
+    <tag>group</tag>
+    <tag>fail</tag>
+  <usetemplate
+     name="okbutton"
+     yestext="OK"/>
+  </notification>
+
   <notification
    icon="alertmodal.tga"
    name="OfferTeleportFromGod"
diff --git a/indra/newview/skins/default/xui/en/panel_outfits_list.xml b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
index 9f98019c94..a0096adc01 100644
--- a/indra/newview/skins/default/xui/en/panel_outfits_list.xml
+++ b/indra/newview/skins/default/xui/en/panel_outfits_list.xml
@@ -14,9 +14,7 @@
      background_visible="true"
      bg_alpha_color="DkGray2"
      bg_opaque_color="DkGray2"
-     no_matched_tabs_text.value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
-     no_matched_tabs_text.v_pad="10"
-     no_visible_tabs_text.value="You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]"
+
      follows="all"
      height="400"
      layout="topleft"
@@ -24,6 +22,13 @@
      name="outfits_accordion"
      top="0"
      width="309">
+       <no_matched_tabs_text
+         name="no_matched_outfits_msg"
+         value="Didn't find what you're looking for? Try [secondlife:///app/search/all/[SEARCH_TERM] Search]."
+         v_pad="10"/>
+       <no_visible_tabs_text
+         name="no_outfits_msg"
+         value="You don't have any outfits yet. Try [secondlife:///app/search/all/ Search]"/>
     </accordion>
     <panel
      background_visible="true"
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 775805ad2e..cc4522f944 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -110,8 +110,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
            <layout_panel
              height="142"
              layout="topleft"
+             min_dim="100"
              mouse_opaque="false"
-             user_resize="false"
+             user_resize="true"
              visibility_control="NearbyListShowMap"
              width="313">
              <net_map
@@ -128,9 +129,9 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
            <layout_panel
              height="213"
              layout="topleft"
-             min_height="100"
+             min_dim="100"
              mouse_opaque="false"
-             user_resize="false"
+             user_resize="true"
              width="313">
              <avatar_list
                allow_select="true"
@@ -621,7 +622,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			height="23"
 			layout="bottomleft"
 			left_pad="3"
-			name="chat_btn_lp"
+			name="im_btn_lp"
 		    user_resize="false" 
 		    auto_resize="true"
 			width="41">
@@ -642,7 +643,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			height="23"
 			layout="bottomleft"
 			left_pad="3"
-			name="chat_btn_lp"
+			name="call_btn_lp"
 		    user_resize="false" 
 		    auto_resize="true"
 			width="52">
@@ -663,7 +664,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			height="23"
 			layout="bottomleft"
 			left_pad="3"
-			name="chat_btn_lp"
+			name="share_btn_lp"
 		    user_resize="false" 
 		    auto_resize="true"
 			width="66">
@@ -684,7 +685,7 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			height="23"
 			layout="bottomleft"
 			left_pad="3"
-			name="chat_btn_lp"
+			name="teleport_btn_lp"
 		    user_resize="false" 
 		    auto_resize="true"
 			width="77">
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 71f48c833d..143a989d32 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2250,6 +2250,9 @@ Returns a string with the requested data about the region
 	<string name="IMMainland">mainland</string>
 	<string name="IMTeen">teen</string>
 
+    <!-- floater about land -->
+    <string name="Anyone">anyone</string>
+
 	<!-- floater region info -->
 	<!-- The following will replace variable [ALL_ESTATES] in notifications EstateAllowed*, EstateBanned*, EstateManager* -->
 	<string name="RegionInfoError">error</string>
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
index 01149e412d..a9d38dca25 100644
--- a/indra/newview/skins/default/xui/es/panel_people.xml
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -66,16 +66,16 @@
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml
index 166f04b3e4..b24c340708 100644
--- a/indra/newview/skins/default/xui/fr/panel_people.xml
+++ b/indra/newview/skins/default/xui/fr/panel_people.xml
@@ -66,16 +66,16 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife://
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="Ouvrir une session IM"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Appel" name="call_btn" tool_tip="Appeler ce résident"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="Partager" name="share_btn" tool_tip="Partager un article de l&apos;inventaire"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/it/panel_people.xml b/indra/newview/skins/default/xui/it/panel_people.xml
index b24a4055f7..f903ae6e2c 100644
--- a/indra/newview/skins/default/xui/it/panel_people.xml
+++ b/indra/newview/skins/default/xui/it/panel_people.xml
@@ -66,16 +66,16 @@ Stai cercando persone da frequentare? Prova la [secondlife:///app/worldmap Mappa
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Profilo" name="view_profile_btn" tool_tip="Mostra immagine, gruppi e altre informazioni del residente"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="Apri una sessione messaggio istantaneo"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell&apos;inventario"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/ja/panel_people.xml b/indra/newview/skins/default/xui/ja/panel_people.xml
index c7f71c6de0..1c90f7327e 100644
--- a/indra/newview/skins/default/xui/ja/panel_people.xml
+++ b/indra/newview/skins/default/xui/ja/panel_people.xml
@@ -66,16 +66,16 @@
 			<layout_panel name="view_profile_btn_lp">
 				<button label="プロフィール" name="view_profile_btn" tool_tip="写真、グループ、その他住人情報を表示"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="インスタントメッセージを開きます"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="コール" name="call_btn" tool_tip="この住人にコールする"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="共有" name="share_btn" tool_tip="「持ち物」のアイテムを共有する"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="テレポート" name="teleport_btn" tool_tip="テレポートを送ります"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/pl/panel_people.xml b/indra/newview/skins/default/xui/pl/panel_people.xml
index da9f84cb2e..ef52e2148b 100644
--- a/indra/newview/skins/default/xui/pl/panel_people.xml
+++ b/indra/newview/skins/default/xui/pl/panel_people.xml
@@ -66,16 +66,16 @@ Chcesz spotkać ludzi? Spróbuj [secondlife:///app/worldmap Mapa Świata].
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Profil" name="view_profile_btn" tool_tip="Pokaż zdjęcie, grupy i inne informacje o Rezydencie"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="Otwórz wiadomości IM"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Dzwoń" name="call_btn" tool_tip="Zadzwoń do tego Rezydenta"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="Udostępnij" name="share_btn" tool_tip="Udostępnij obiekt z Szafy"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleport"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/pt/panel_people.xml b/indra/newview/skins/default/xui/pt/panel_people.xml
index aece30738b..f3af15b991 100644
--- a/indra/newview/skins/default/xui/pt/panel_people.xml
+++ b/indra/newview/skins/default/xui/pt/panel_people.xml
@@ -66,16 +66,16 @@ Em busca de alguém para conversar? Procure no [secondlife:///app/worldmap Mapa-
 			<layout_panel name="view_profile_btn_lp">
 				<button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="Ligar" name="call_btn" tool_tip="Ligar para este residente"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="Compartilhar" name="share_btn" tool_tip="Compartilhar item de inventário"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/zh/panel_people.xml b/indra/newview/skins/default/xui/zh/panel_people.xml
index 8da75e334e..4c6d6c76be 100644
--- a/indra/newview/skins/default/xui/zh/panel_people.xml
+++ b/indra/newview/skins/default/xui/zh/panel_people.xml
@@ -66,16 +66,16 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
 			<layout_panel name="view_profile_btn_lp">
 				<button label="檔案" name="view_profile_btn" tool_tip="Show picture, groups, and other Residents information"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="im_btn_lp">
 				<button label="IM" name="im_btn" tool_tip="開啟即時訊息會話"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="call_btn_lp">
 				<button label="通話" name="call_btn" tool_tip="Call this Resident"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="share_btn_lp">
 				<button label="分享" name="share_btn" tool_tip="分享一個收納區物品"/>
 			</layout_panel>
-			<layout_panel name="chat_btn_lp">
+			<layout_panel name="teleport_btn_lp">
 				<button label="瞬間傳送" name="teleport_btn" tool_tip="Offer teleport"/>
 			</layout_panel>
 		</layout_stack>
-- 
cgit v1.2.3


From 7f8ec9f142f34057fc10436f94ce420183cf75b8 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Wed, 29 Jun 2011 20:35:44 -0400
Subject: CHOP-753: Introduce LLSD access to LLMemoryInfo ** BROKEN ** This is
 known not to compile on Mac yet; checking in to concurrently work on
 Linux-specific code.

---
 indra/llcommon/llsys.cpp | 211 +++++++++++++++++++++++++++++++++++++++++++++++
 indra/llcommon/llsys.h   |  28 +++++++
 2 files changed, 239 insertions(+)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index f0f98f5bf6..40914dca3f 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -43,8 +43,15 @@
 #include "llerrorcontrol.h"
 #include "llevents.h"
 #include "lltimer.h"
+#include "llsdserialize.h"
+#include "llsdutil.h"
 #include <boost/bind.hpp>
 #include <boost/circular_buffer.hpp>
+#include <boost/regex.hpp>
+#include <boost/foreach.hpp>
+#include <boost/lexical_cast.hpp>
+
+using namespace llsd;
 
 #if LL_WINDOWS
 #	define WIN32_LEAN_AND_MEAN
@@ -633,6 +640,7 @@ void LLCPUInfo::stream(std::ostream& s) const
 
 LLMemoryInfo::LLMemoryInfo()
 {
+	refresh();
 }
 
 #if LL_WINDOWS
@@ -873,6 +881,209 @@ void LLMemoryInfo::stream(std::ostream& s) const
 #endif
 }
 
+LLSD LLMemoryInfo::getStatsMap() const
+{
+    LLSD map;
+
+    BOOST_FOREACH(LLSD pair, inArray(mData))
+    {
+        // Have to be clear that we want the key asString() to specify map
+        // indexing rather than array subscripting.
+        map[pair[0].asString()] = pair[1];
+    }
+
+    return map;
+}
+
+LLSD LLMemoryInfo::getStatsArray() const
+{
+    return mData;
+}
+
+LLMemoryInfo& LLMemoryInfo::refresh()
+{
+    // This implementation is derived from stream() code (as of 2011-06-29).
+    // Hopefully we'll reimplement stream() to use mData before long...
+    mData = LLSD::emptyArray();
+
+#if LL_WINDOWS
+	MEMORYSTATUSEX state;
+	state.dwLength = sizeof(state);
+	GlobalMemoryStatusEx(&state);
+
+	mData.append(LLSDArray("Percent Memory use")(LLSD::Integer(state.dwMemoryLoad)));
+	mData.append(LLSDArray("Total Physical KB") (LLSD::Integer(state.ullTotalPhys/1024)));
+	mData.append(LLSDArray("Avail Physical KB") (LLSD::Integer(state.ullAvailPhys/1024)));
+	mData.append(LLSDArray("Total page KB")     (LLSD::Integer(state.ullTotalPageFile/1024)));
+	mData.append(LLSDArray("Avail page KB")     (LLSD::Integer(state.ullAvailPageFile/1024)));
+	mData.append(LLSDArray("Total Virtual KB")  (LLSD::Integer(state.ullTotalVirtual/1024)));
+	mData.append(LLSDArray("Avail Virtual KB")  (LLSD::Integer(state.ullAvailVirtual/1024)));
+
+#elif LL_DARWIN
+	uint64_t phys = 0;
+
+	size_t len = sizeof(phys);	
+	
+	if (sysctlbyname("hw.memsize", &phys, &len, NULL, 0) == 0)
+	{
+		mData.append(LLSDArray("Total Physical KB")(LLSD::Integer(phys/1024)));
+	}
+	else
+	{
+		LL_WARNS("LLMemoryInfo") << "Unable to collect hw.memsize memory information" << LL_ENDL;
+	}
+
+	FILE* pout = popen("vm_stat 2>&1", "r");
+	if (! pout)
+	{
+		LL_WARNS("LLMemoryInfo") << "Unable to collect vm_stat memory information" << LL_ENDL;
+	}
+	else
+	{
+		// Mach Virtual Memory Statistics: (page size of 4096 bytes)
+		// Pages free:					 462078.
+		// Pages active:				 142010.
+		// Pages inactive:				 220007.
+		// Pages wired down:			 159552.
+		// "Translation faults":	  220825184.
+		// Pages copy-on-write:			2104153.
+		// Pages zero filled:		  167034876.
+		// Pages reactivated:			  65153.
+		// Pageins:						2097212.
+		// Pageouts:					  41759.
+		// Object cache: 841598 hits of 7629869 lookups (11% hit rate)
+
+		boost::regex pagesize_rx("\\(page size of ([0-9]+) bytes\\)");
+		boost::regex stat_rx("(.+): +([0-9]+)\\.");
+		boost::regex pages_rx("Pages ");
+		boost::cmatch matched;
+		LLSD::Integer pagesizekb(4096/1024);
+
+		// Here 'pout' is vm_stat's stdout. Search it for relevant data.
+		char line[100];
+		line[sizeof(line)-1] = '\0';
+		while (fgets(line, sizeof(line)-1, pout))
+		{
+			size_t linelen(strlen(line));
+			// Truncate any trailing newline
+			if (line[linelen - 1] == '\n')
+			{
+				line[--linelen] = '\0';
+			}
+			if (boost::regex_search(&line[0], line+linelen, matched, pagesize_rx))
+			{
+				// "Mach Virtual Memory Statistics: (page size of 4096 bytes)"
+				std::string pagesize_str(matched[1].first, matched[1].second);
+				// Reasonable to assume that pagesize will always be a
+				// multiple of 1Kb?
+				pagesizekb = boost::lexical_cast<LLSD::Integer>(pagesize_str)/1024;
+			}
+			else if (boost::regex_match(&line[0], line+linelen, matched, stat_rx))
+			{
+				// e.g. "Pages free:					 462078."
+				// Strip double-quotes off certain statistic names
+				if (matched[1].first[0] == '"' && matched[1].second[-1] == '"')
+				{
+					++matched[1].first;
+					--matched[1].second;
+				}
+				LLSD::String key(matched[1].first, matched[1].second);
+				LLSD::String value_str(matched[2].first, matched[2].second);
+				LLSD::Integer value(boost::lexical_cast<LLSD::Integer>(value_str));
+				// Store this statistic.
+				mData.append(LLSDArray(key)(value));
+				// Is this in units of pages? If so, convert to Kb.
+				// boost::regex_match() doc sez: "If you want to match a
+				// prefix of the character string then use regex_search with
+				// the flag match_continuous set."
+				boost::smatch smatched;
+				if (boost::regex_search(key, smatched, pages_rx, boost::match_continuous))
+				{
+					// Synthesize a new key with kB in place of Pages
+					LLSD::String kbkey("kB ");
+					kbkey.append(smatched[0].second, key.end());
+					mData.append(LLSDArray(kbkey)(value * pagesizekb));
+				}
+			}
+			else
+			{
+				LL_WARNS("LLMemoryInfo") << "unrecognized vm_stat line: " << line << LL_ENDL;
+			}
+		}
+		fclose(pout);
+	}
+
+#elif LL_SOLARIS
+	U64 phys = 0;
+
+	phys = (U64)(sysconf(_SC_PHYS_PAGES)) * (U64)(sysconf(_SC_PAGESIZE)/1024);
+
+	mData.append(LLSDArray("Total Physical KB")(phys));
+
+#elif LL_LINUX
+	std::ifstream meminfo(MEMINFO_FILE);
+	if (meminfo.is_open())
+	{
+		// MemTotal:		4108424 kB
+		// MemFree:			1244064 kB
+		// Buffers:			  85164 kB
+		// Cached:			1990264 kB
+		// SwapCached:			  0 kB
+		// Active:			1176648 kB
+		// Inactive:		1427532 kB
+		// ...
+		// VmallocTotal:	 122880 kB
+		// VmallocUsed:		  65252 kB
+		// VmallocChunk:	  52356 kB
+		// HardwareCorrupted:	  0 kB
+		// HugePages_Total:		  0
+		// HugePages_Free:		  0
+		// HugePages_Rsvd:		  0
+		// HugePages_Surp:		  0
+		// Hugepagesize:	   2048 kB
+		// DirectMap4k:		 434168 kB
+		// DirectMap2M:		 477184 kB
+
+		boost::regex stat_rx("(.+): +([0-9]+)( kB)?");
+		boost::smatch matched;
+
+		std::string line;
+		while (std::getline(meminfo, line))
+		{
+			if (boost::regex_match(line, line+linelen, matched, stat_rx))
+			{
+				// e.g. "MemTotal:		4108424 kB"
+				LLSD::String key(matched[1].first, matched[1].second);
+				LLSD::String value_str(matched[2].first, matched[2].second);
+				LLSD::Integer value(boost::lexical_cast<LLSD::Integer>(value_str));
+				// Store this statistic.
+				mData.append(LLSDArray(key)(value));
+			}
+			else
+			{
+				LL_WARNS("LLMemoryInfo") << "unrecognized " << MEMINFO_FILE << " line: "
+										 << line << LL_ENDL;
+			}
+		}
+	}
+	else
+	{
+		s << "Unable to collect memory information" << std::endl;
+	}
+
+#else
+	s << "Unknown system; unable to collect memory information" << std::endl;
+
+#endif
+
+    // should become LL_DEBUGS when we're happy
+    LL_INFOS("LLMemoryInfo") << "Populated mData:\n";
+    LLSDSerialize::toPrettyXML(mData, LL_CONT);
+    LL_ENDL;
+
+    return *this;
+}
+
 std::ostream& operator<<(std::ostream& s, const LLOSInfo& info)
 {
 	info.stream(s);
diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h
index 41a4f25000..5b44757e08 100644
--- a/indra/llcommon/llsys.h
+++ b/indra/llcommon/llsys.h
@@ -36,6 +36,7 @@
 //  llinfos << info << llendl;
 //
 
+#include "llsd.h"
 #include <iosfwd>
 #include <string>
 
@@ -117,6 +118,33 @@ public:
 
 	//get the available memory infomation in KiloBytes.
 	static void getAvailableMemoryKB(U32& avail_physical_mem_kb, U32& avail_virtual_mem_kb);
+
+	// Retrieve a map of memory statistics. The keys of the map are platform-
+	// dependent. The values are in kilobytes.
+	LLSD getStatsMap() const;
+
+	// Retrieve memory statistics: an array of pair arrays [name, value]. This
+	// is the same data as presented in getStatsMap(), but it preserves the
+	// order in which we retrieved it from the OS in case that's useful. The
+	// set of statistics names is platform-dependent. The values are in
+	// kilobytes to try to avoid integer overflow.
+	LLSD getStatsArray() const;
+
+	// Re-fetch memory data (as reported by stream() and getStats*()) from the
+	// system. Normally this is fetched at construction time. Return (*this)
+	// to permit usage of the form:
+	// @code
+	// LLMemoryInfo info;
+	// ...
+	// info.refresh().getStatsArray();
+	// @endcode
+	LLMemoryInfo& refresh();
+
+private:
+	// Internally, we store memory stats as for getStatsArray(). It's
+	// straightforward to convert that to getStatsMap() form, less so to
+	// reconstruct the original order when converting the other way.
+	LLSD mData;
 };
 
 
-- 
cgit v1.2.3


From 21ff3d0d1ce10446cbb1cf9bc08d2c0ebe9705fe Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Wed, 29 Jun 2011 20:42:30 -0400
Subject: CHOP-753: fix minor compilation errors on Linux

---
 indra/llcommon/llsys.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 40914dca3f..2897a533d9 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -1050,7 +1050,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 		std::string line;
 		while (std::getline(meminfo, line))
 		{
-			if (boost::regex_match(line, line+linelen, matched, stat_rx))
+			if (boost::regex_match(line, matched, stat_rx))
 			{
 				// e.g. "MemTotal:		4108424 kB"
 				LLSD::String key(matched[1].first, matched[1].second);
@@ -1068,11 +1068,11 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 	}
 	else
 	{
-		s << "Unable to collect memory information" << std::endl;
+		LL_WARNS("LLMemoryInfo") << "Unable to collect memory information" << LL_ENDL;
 	}
 
 #else
-	s << "Unknown system; unable to collect memory information" << std::endl;
+	LL_WARNS("LLMemoryInfo") << "Unknown system; unable to collect memory information" << LL_ENDL;
 
 #endif
 
-- 
cgit v1.2.3


From c47d42d9459445d9e9869c49ebe66a0671a3a0a7 Mon Sep 17 00:00:00 2001
From: Kadah_Coba <none@none>
Date: Wed, 29 Jun 2011 23:40:20 -0700
Subject: STORM-1315 Ability to do simple math in numeric edit fields

---
 doc/contributions.txt           |   1 +
 indra/llmath/CMakeLists.txt     |   4 +
 indra/llmath/llcalc.cpp         | 150 +++++++++++++++++++++++++++++++++++
 indra/llmath/llcalc.h           |  83 ++++++++++++++++++++
 indra/llmath/llcalcparser.cpp   |  46 +++++++++++
 indra/llmath/llcalcparser.h     | 169 ++++++++++++++++++++++++++++++++++++++++
 indra/llui/lllineeditor.cpp     |  33 +++++++-
 indra/llui/lllineeditor.h       |   4 +
 indra/llui/llspinctrl.cpp       |  31 +++++---
 indra/newview/llappviewer.cpp   |   5 +-
 indra/newview/llpanelface.cpp   |  11 +++
 indra/newview/llpanelobject.cpp |  51 +++++++++++-
 12 files changed, 571 insertions(+), 17 deletions(-)
 create mode 100644 indra/llmath/llcalc.cpp
 create mode 100644 indra/llmath/llcalc.h
 create mode 100644 indra/llmath/llcalcparser.cpp
 create mode 100644 indra/llmath/llcalcparser.h

diff --git a/doc/contributions.txt b/doc/contributions.txt
index 729c73f777..e9c9369f2c 100644
--- a/doc/contributions.txt
+++ b/doc/contributions.txt
@@ -20,6 +20,7 @@ Aimee Trescothick
 	SNOW-570
 	SNOW-572
 	SNOW-575
+	STORM-1315
 	VWR-3321
 	VWR-3336
 	VWR-3903
diff --git a/indra/llmath/CMakeLists.txt b/indra/llmath/CMakeLists.txt
index 9dadad7dd3..cd100cdf9f 100644
--- a/indra/llmath/CMakeLists.txt
+++ b/indra/llmath/CMakeLists.txt
@@ -12,6 +12,8 @@ include_directories(
 set(llmath_SOURCE_FILES
     llbbox.cpp
     llbboxlocal.cpp
+    llcalc.cpp
+    llcalcparser.cpp
     llcamera.cpp
     llcoordframe.cpp
     llline.cpp
@@ -46,6 +48,8 @@ set(llmath_HEADER_FILES
     coordframe.h
     llbbox.h
     llbboxlocal.h
+    llcalc.h
+    llcalcparser.h
     llcamera.h
     llcoord.h
     llcoordframe.h
diff --git a/indra/llmath/llcalc.cpp b/indra/llmath/llcalc.cpp
new file mode 100644
index 0000000000..f399463a47
--- /dev/null
+++ b/indra/llmath/llcalc.cpp
@@ -0,0 +1,150 @@
+/*
+ *  LLCalc.cpp
+ *  SecondLife
+ *
+ *  Created by Aimee Walton on 28/09/2008.
+ *  Copyright 2008 Aimee Walton.
+ *
+ */
+
+#include "linden_common.h"
+
+#include "llcalc.h"
+
+#include "llcalcparser.h"
+#include "llmath.h"
+
+
+// Variable names for use in the build floater
+const char* LLCalc::X_POS = "PX";
+const char* LLCalc::Y_POS = "PY";
+const char* LLCalc::Z_POS = "PZ";
+const char* LLCalc::X_SCALE = "SX";
+const char* LLCalc::Y_SCALE = "SY";
+const char* LLCalc::Z_SCALE = "SZ";
+const char* LLCalc::X_ROT = "RX";
+const char* LLCalc::Y_ROT = "RY";
+const char* LLCalc::Z_ROT = "RZ";
+const char* LLCalc::HOLLOW = "HLW";
+const char* LLCalc::CUT_BEGIN = "CB";
+const char* LLCalc::CUT_END = "CE";
+const char* LLCalc::PATH_BEGIN = "PB";
+const char* LLCalc::PATH_END = "PE";
+const char* LLCalc::TWIST_BEGIN = "TB";
+const char* LLCalc::TWIST_END = "TE";
+const char* LLCalc::X_SHEAR = "SHX";
+const char* LLCalc::Y_SHEAR = "SHY";
+const char* LLCalc::X_TAPER = "TPX";
+const char* LLCalc::Y_TAPER = "TPY";
+const char* LLCalc::RADIUS_OFFSET = "ROF";
+const char* LLCalc::REVOLUTIONS = "REV";
+const char* LLCalc::SKEW = "SKW";
+const char* LLCalc::X_HOLE = "HLX";
+const char* LLCalc::Y_HOLE = "HLY";
+const char* LLCalc::TEX_U_SCALE = "TSU";
+const char* LLCalc::TEX_V_SCALE = "TSV";
+const char* LLCalc::TEX_U_OFFSET = "TOU";
+const char* LLCalc::TEX_V_OFFSET = "TOV";
+const char* LLCalc::TEX_ROTATION = "TROT";
+const char* LLCalc::TEX_TRANSPARENCY = "TRNS";
+const char* LLCalc::TEX_GLOW = "GLOW";
+
+
+LLCalc* LLCalc::sInstance = NULL;
+
+LLCalc::LLCalc() : mLastErrorPos(0)
+{
+//	mUserVariables = new calc_map_t;
+	mVariables = new calc_map_t;
+	mConstants = new calc_map_t;
+		
+	// Init table of constants
+	(*mConstants)["PI"] = F_PI;
+	(*mConstants)["TWO_PI"] = F_TWO_PI;
+	(*mConstants)["PI_BY_TWO"] = F_PI_BY_TWO;
+	(*mConstants)["SQRT2"] = F_SQRT2;
+	(*mConstants)["DEG_TO_RAD"] = DEG_TO_RAD;
+	(*mConstants)["RAD_TO_DEG"] = RAD_TO_DEG;
+	(*mConstants)["GRAVITY"] = GRAVITY;
+}
+
+LLCalc::~LLCalc()
+{
+	delete mConstants;
+	delete mVariables;
+//	delete mUserVariables;	
+}
+
+//static
+void LLCalc::cleanUp()
+{
+	delete sInstance;
+	sInstance = NULL;
+}
+
+//static
+LLCalc* LLCalc::getInstance()
+{
+    if (!sInstance)	sInstance = new LLCalc();
+	return sInstance;
+}
+
+void LLCalc::setVar(const std::string& name, const F32& value)
+{
+	(*mVariables)[name] = value;
+}
+
+void LLCalc::clearVar(const std::string& name)
+{
+	mVariables->erase(name);
+}
+
+void LLCalc::clearAllVariables()
+{
+	mVariables->clear();
+}
+
+/*
+void LLCalc::updateVariables(LLSD& vars)
+{
+	LLSD::map_iterator cIt = vars.beginMap();
+	for(; cIt != vars.endMap(); cIt++)
+	{
+		setVar(cIt->first, (F32)(LLSD::Real)cIt->second);
+	}
+}
+*/
+
+bool LLCalc::evalString(const std::string& expression, F32& result)
+{
+	std::string expr_upper = expression;
+	LLStringUtil::toUpper(expr_upper);
+	
+	LLCalcParser calc(result, mConstants, mVariables);
+
+	mLastErrorPos = 0;
+	std::string::iterator start = expr_upper.begin();
+ 	parse_info<std::string::iterator> info;
+	
+	try
+	{
+		info = parse(start, expr_upper.end(), calc, space_p);
+		lldebugs << "Math expression: " << expression << " = " << result << llendl;
+	}
+	catch(parser_error<std::string, std::string::iterator> &e)
+	{
+		mLastErrorPos = e.where - expr_upper.begin();
+		
+		llinfos << "Calc parser exception: " << e.descriptor << " at " << mLastErrorPos << " in expression: " << expression << llendl;
+		return false;
+	}
+	
+	if (!info.full)
+	{
+		mLastErrorPos = info.stop - expr_upper.begin();
+		llinfos << "Unhandled syntax error at " << mLastErrorPos << " in expression: " << expression << llendl;
+		return false;
+	}
+	
+	return true;
+}
diff --git a/indra/llmath/llcalc.h b/indra/llmath/llcalc.h
new file mode 100644
index 0000000000..23c83f623e
--- /dev/null
+++ b/indra/llmath/llcalc.h
@@ -0,0 +1,83 @@
+/*
+ *  LLCalc.h
+ *  SecondLife
+ *
+ *  Created by Aimee Walton on 28/09/2008.
+ *  Copyright 2008 Aimee Walton.
+ *
+ */
+
+#ifndef LL_CALC_H
+#define LL_CALC_H
+
+#include <map>
+#include <string>
+
+class LLCalc
+{
+public:
+	LLCalc();
+	~LLCalc();
+
+	// Variable name constants
+	static const char* X_POS;
+	static const char* Y_POS;
+	static const char* Z_POS;
+	static const char* X_SCALE;
+	static const char* Y_SCALE;
+	static const char* Z_SCALE;
+	static const char* X_ROT;
+	static const char* Y_ROT;
+	static const char* Z_ROT;
+	static const char* HOLLOW;
+	static const char* CUT_BEGIN;
+	static const char* CUT_END;
+	static const char* PATH_BEGIN;
+	static const char* PATH_END;
+	static const char* TWIST_BEGIN;
+	static const char* TWIST_END;
+	static const char* X_SHEAR;
+	static const char* Y_SHEAR;
+	static const char* X_TAPER;
+	static const char* Y_TAPER;
+	static const char* RADIUS_OFFSET;
+	static const char* REVOLUTIONS;
+	static const char* SKEW;
+	static const char* X_HOLE;
+	static const char* Y_HOLE;
+	static const char* TEX_U_SCALE;
+	static const char* TEX_V_SCALE;
+	static const char* TEX_U_OFFSET;
+	static const char* TEX_V_OFFSET;
+	static const char* TEX_ROTATION;
+	static const char* TEX_TRANSPARENCY;
+	static const char* TEX_GLOW;
+
+	void	setVar(const std::string& name, const F32& value);
+	void	clearVar(const std::string& name);
+	void	clearAllVariables();
+//	void	updateVariables(LLSD& vars);
+
+	bool	evalString(const std::string& expression, F32& result);
+	std::string::size_type	getLastErrorPos()	{ return mLastErrorPos; }
+	
+	static LLCalc* getInstance();
+	static void cleanUp();
+
+	typedef	std::map<std::string, F32> calc_map_t;
+	
+private:
+	std::string::size_type	mLastErrorPos;
+	
+	calc_map_t*	mConstants;
+	calc_map_t*	mVariables;
+	
+	// *TODO: Add support for storing user defined variables, and stored functions.
+	//	Will need UI work, and a means to save them between sessions.
+//	calc_map_t* mUserVariables;
+	
+	// "There shall be only one"
+	static LLCalc*	sInstance;
+};
+
+#endif // LL_CALC_H
diff --git a/indra/llmath/llcalcparser.cpp b/indra/llmath/llcalcparser.cpp
new file mode 100644
index 0000000000..fd55376fa9
--- /dev/null
+++ b/indra/llmath/llcalcparser.cpp
@@ -0,0 +1,46 @@
+/*
+ *  LLCalcParser.cpp
+ *  SecondLife
+ *
+ *  Created by Aimee Walton on 28/09/2008.
+ *  Copyright 2008 Aimee Walton.
+ *
+ */
+
+#include "linden_common.h"
+
+#include "llcalcparser.h"
+using namespace boost::spirit::classic;
+
+F32 LLCalcParser::lookup(const std::string::iterator& start, const std::string::iterator& end) const
+{
+	LLCalc::calc_map_t::iterator iter;
+
+	std::string name(start, end);
+	
+	if (mConstants)
+	{
+		iter = mConstants->find(name);
+		if (iter != mConstants->end())
+		{
+			return (*iter).second;
+		}
+	}
+	else
+	{
+		// This should never happen!
+		throw_(end, std::string("Missing constants table"));
+	}
+	
+	if (mVariables)
+	{
+		iter = mVariables->find(name);
+		if (iter != mVariables->end())
+		{
+			return (*iter).second;
+		}
+	}
+	
+	throw_(end, std::string("Unknown symbol " + name));
+	return 0.f;
+}
diff --git a/indra/llmath/llcalcparser.h b/indra/llmath/llcalcparser.h
new file mode 100644
index 0000000000..a759a35710
--- /dev/null
+++ b/indra/llmath/llcalcparser.h
@@ -0,0 +1,169 @@
+/*
+ *  LLCalcParser.h
+ *  SecondLife
+ *
+ *  Created by Aimee Walton on 28/09/2008.
+ *  Copyright 2008 Aimee Walton.
+ *
+ */
+
+#ifndef LL_CALCPARSER_H
+#define LL_CALCPARSER_H
+
+#include <boost/spirit/include/classic_attribute.hpp>
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_error_handling.hpp>
+#include <boost/spirit/include/classic_position_iterator.hpp>
+#include <boost/spirit/include/phoenix1_binders.hpp>
+#include <boost/spirit/include/classic_symbols.hpp>
+using namespace boost::spirit::classic;
+
+#include "llcalc.h"
+#include "llmath.h"
+
+struct LLCalcParser : grammar<LLCalcParser>
+{
+	LLCalcParser(F32& result, LLCalc::calc_map_t* constants, LLCalc::calc_map_t* vars) :
+		mResult(result), mConstants(constants), mVariables(vars) {};
+	
+	struct value_closure : closure<value_closure, F32>
+	{
+		member1 value;
+	};
+	
+	template <typename ScannerT>
+	struct definition
+	{
+		// Rule declarations
+		rule<ScannerT> statement, identifier;
+		rule<ScannerT, value_closure::context_t> expression, term,
+			power, 
+			unary_expr, 
+			factor, 
+			unary_func, 
+			binary_func,
+			group;
+
+		// start() should return the starting symbol
+		rule<ScannerT> const& start() const { return statement; }
+		
+		definition(LLCalcParser const& self)
+		{
+			using namespace phoenix;
+			
+			assertion<std::string> assert_domain("Domain error");
+//			assertion<std::string> assert_symbol("Unknown symbol");
+			assertion<std::string> assert_syntax("Syntax error");
+			
+			identifier =
+				lexeme_d[(alpha_p | '_') >> *(alnum_p | '_')]
+			;
+			
+			group =
+				'(' >> expression[group.value = arg1] >> assert_syntax(ch_p(')'))
+			;
+
+			unary_func =
+				((str_p("SIN") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_sin)(self,arg1)]) |
+				 (str_p("COS") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_cos)(self,arg1)]) |
+				 (str_p("TAN") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_tan)(self,arg1)]) |
+				 (str_p("ASIN") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_asin)(self,arg1)]) |
+				 (str_p("ACOS") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_acos)(self,arg1)]) |
+				 (str_p("ATAN") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_atan)(self,arg1)]) |
+				 (str_p("SQRT") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_sqrt)(self,arg1)]) |
+				 (str_p("LOG") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_log)(self,arg1)]) |
+				 (str_p("EXP") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_exp)(self,arg1)]) |
+				 (str_p("ABS") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_fabs)(self,arg1)])
+				) >> assert_syntax(ch_p(')'))
+			;
+			
+			binary_func =
+				((str_p("ATAN2") >> '(' >> expression[binary_func.value = arg1] >> ',' >>
+				  expression[binary_func.value = bind(&LLCalcParser::_atan2)(self, binary_func.value, arg1)]) |
+				 (str_p("MIN") >> '(' >> expression[binary_func.value = arg1] >> ',' >> 
+				  expression[binary_func.value = bind(&LLCalcParser::_min)(self, binary_func.value, arg1)]) |
+				 (str_p("MAX") >> '(' >> expression[binary_func.value = arg1] >> ',' >> 
+				  expression[binary_func.value = bind(&LLCalcParser::_max)(self, binary_func.value, arg1)])
+				) >> assert_syntax(ch_p(')'))
+			;
+			
+			// *TODO: Localisation of the decimal point?
+			// Problem, LLLineEditor::postvalidateFloat accepts a comma when appropriate
+			// for the current locale. However to do that here could clash with using
+			// the comma as a separator when passing arguments to functions.
+			factor =
+				(ureal_p[factor.value = arg1] |
+				 group[factor.value = arg1] |
+				 unary_func[factor.value = arg1] |
+				 binary_func[factor.value = arg1] |
+				 // Lookup throws an Unknown Symbol error if it is unknown, while this works fine,
+				 // would be "neater" to handle symbol lookup from here with an assertive parser.
+//				 constants_p[factor.value = arg1]|
+				 identifier[factor.value = bind(&LLCalcParser::lookup)(self, arg1, arg2)]
+				) >>
+				// Detect and throw math errors.
+				assert_domain(eps_p(bind(&LLCalcParser::checkNaN)(self, factor.value)))
+			;
+
+			unary_expr =
+				!ch_p('+') >> factor[unary_expr.value = arg1] |
+				'-' >> factor[unary_expr.value = -arg1]
+			;
+			
+			power =
+				unary_expr[power.value = arg1] >>
+				*('^' >> assert_syntax(unary_expr[power.value = bind(&powf)(power.value, arg1)]))
+			;
+			
+			term =
+				power[term.value = arg1] >>
+				*(('*' >> assert_syntax(power[term.value *= arg1])) |
+				  ('/' >> assert_syntax(power[term.value /= arg1]))
+				)
+			;
+			
+			expression =
+				assert_syntax(term[expression.value = arg1]) >>
+				*(('+' >> assert_syntax(term[expression.value += arg1])) |
+				  ('-' >> assert_syntax(term[expression.value -= arg1]))
+				)
+			;
+
+			statement =
+				!ch_p('=') >> ( expression )[var(self.mResult) = arg1] >> (end_p)
+			;
+		}
+	};
+	
+private:
+	// Member functions for semantic actions
+	F32	lookup(const std::string::iterator&, const std::string::iterator&) const;
+	F32 _min(const F32& a, const F32& b) const { return llmin(a, b); }
+	F32 _max(const F32& a, const F32& b) const { return llmax(a, b); }
+	
+	bool checkNaN(const F32& a) const { return !llisnan(a); }
+	
+	//FIX* non ambigious function fix making SIN() work for calc -Cryogenic Blitz
+	F32 _sin(const F32& a) const { return sin(DEG_TO_RAD * a); }
+	F32 _cos(const F32& a) const { return cos(DEG_TO_RAD * a); }
+	F32 _tan(const F32& a) const { return tan(DEG_TO_RAD * a); }
+	F32 _asin(const F32& a) const { return asin(a * RAD_TO_DEG); }
+	F32 _acos(const F32& a) const { return acos(a * RAD_TO_DEG); }
+	F32 _atan(const F32& a) const { return atan(a * RAD_TO_DEG); }
+	F32 _sqrt(const F32& a) const { return sqrt(a); }
+	F32 _log(const F32& a) const { return log(a); }
+	F32 _exp(const F32& a) const { return exp(a); }
+	F32 _fabs(const F32& a) const { return fabs(a) * RAD_TO_DEG; }
+
+	F32 _atan2(const F32& a,const F32& b) const { return atan2(a,b); }
+
+
+
+	LLCalc::calc_map_t* mConstants;
+	LLCalc::calc_map_t* mVariables;
+//	LLCalc::calc_map_t* mUserVariables;
+	
+	F32&		mResult;
+};
+
+#endif // LL_CALCPARSER_H
diff --git a/indra/llui/lllineeditor.cpp b/indra/llui/lllineeditor.cpp
index 0196080d90..64969856da 100644
--- a/indra/llui/lllineeditor.cpp
+++ b/indra/llui/lllineeditor.cpp
@@ -37,6 +37,7 @@
 #include "llgl.h"
 #include "lltimer.h"
 
+#include "llcalc.h"
 //#include "llclipboard.h"
 #include "llcontrol.h"
 #include "llbutton.h"
@@ -132,6 +133,7 @@ LLLineEditor::LLLineEditor(const LLLineEditor::Params& p)
 	mIgnoreTab( p.ignore_tab ),
 	mDrawAsterixes( p.is_password ),
 	mSelectAllonFocusReceived( p.select_on_focus ),
+	mSelectAllonCommit( TRUE ),
 	mPassDelete(FALSE),
 	mReadOnly(FALSE),
 	mBgImage( p.background_image ),
@@ -228,7 +230,10 @@ void LLLineEditor::onCommit()
 
 	setControlValue(getValue());
 	LLUICtrl::onCommit();
-	selectAll();
+
+	// Selection on commit needs to be turned off when evaluating maths
+	// expressions, to allow indication of the error position
+	if (mSelectAllonCommit) selectAll();
 }
 
 // Returns TRUE if user changed value at all
@@ -1995,6 +2000,32 @@ BOOL LLLineEditor::postvalidateFloat(const std::string &str)
 	return success;
 }
 
+BOOL LLLineEditor::evaluateFloat()
+{
+	bool success;
+	F32 result = 0.f;
+	std::string expr = getText();
+	LLStringUtil::toUpper(expr);
+
+	success = LLCalc::getInstance()->evalString(expr, result);
+
+	if (!success)
+	{
+		// Move the cursor to near the error on failure
+		setCursor(LLCalc::getInstance()->getLastErrorPos());
+		// *TODO: Translated error message indicating the type of error? Select error text?
+	}
+	else
+	{
+		// Replace the expression with the result
+		std::string result_str = llformat("%f",result);
+		setText(result_str);
+		selectAll();
+	}
+
+	return success;
+}
+
 void LLLineEditor::onMouseCaptureLost()
 {
 	endSelection();
diff --git a/indra/llui/lllineeditor.h b/indra/llui/lllineeditor.h
index fe191e5971..987abc038c 100644
--- a/indra/llui/lllineeditor.h
+++ b/indra/llui/lllineeditor.h
@@ -220,6 +220,7 @@ public:
 	void			deleteSelection();
 
 	void			setSelectAllonFocusReceived(BOOL b);
+	void			setSelectAllonCommit(BOOL b) { mSelectAllonCommit = b; }
 	
 	typedef boost::function<void (LLLineEditor* caller, void* user_data)> callback_t;
 	void			setKeystrokeCallback(callback_t callback, void* user_data);
@@ -234,6 +235,8 @@ public:
 	void			setPrevalidate( LLTextValidate::validate_func_t func );
 	static BOOL		postvalidateFloat(const std::string &str);
 
+	BOOL			evaluateFloat();
+
 	// line history support:
 	void			setEnableLineHistory( BOOL enabled ) { mHaveHistory = enabled; } // switches line history on or off 
 	void			updateHistory(); // stores current line in history
@@ -330,6 +333,7 @@ protected:
 	BOOL		mDrawAsterixes;
 
 	BOOL		mSelectAllonFocusReceived;
+	BOOL		mSelectAllonCommit;
 	BOOL		mPassDelete;
 
 	BOOL		mReadOnly;
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
index 15a7438ec9..b76d604953 100644
--- a/indra/llui/llspinctrl.cpp
+++ b/indra/llui/llspinctrl.cpp
@@ -44,7 +44,7 @@
 #include "llresmgr.h"
 #include "lluictrlfactory.h"
 
-const U32 MAX_STRING_LENGTH = 32;
+const U32 MAX_STRING_LENGTH = 255;
 
 static LLDefaultChildRegistry::Register<LLSpinCtrl> r2("spinner");
 
@@ -124,14 +124,15 @@ LLSpinCtrl::LLSpinCtrl(const LLSpinCtrl::Params& p)
 	params.max_length.bytes(MAX_STRING_LENGTH);
 	params.commit_callback.function((boost::bind(&LLSpinCtrl::onEditorCommit, this, _2)));
 	
-	if( mPrecision>0 )//should accept float numbers
-	{
-		params.prevalidate_callback(&LLTextValidate::validateFloat);
-	}
-	else //should accept int numbers
-	{
-		params.prevalidate_callback(&LLTextValidate::validateInt);
-	}
+	//allow entering of any chars for LLCalc, proper input will be evaluated on commit
+	//if( mPrecision>0 )//should accept float numbers
+	//{
+	//	params.prevalidate_callback(&LLTextValidate::validateFloat);
+	//}
+	//else //should accept int numbers
+	//{
+	//	params.prevalidate_callback(&LLTextValidate::validateInt);
+	//}
 	
 	params.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM);
 	mEditor = LLUICtrlFactory::create<LLLineEditor> (params);
@@ -140,6 +141,7 @@ LLSpinCtrl::LLSpinCtrl(const LLSpinCtrl::Params& p)
 	// than when it doesn't.  Instead, if you always have to double click to select all the text, 
 	// it's easier to understand
 	//mEditor->setSelectAllonFocusReceived(TRUE);
+	mEditor->setSelectAllonCommit(FALSE);
 	addChild(mEditor);
 
 	updateEditor();
@@ -304,9 +306,10 @@ void LLSpinCtrl::onEditorCommit( const LLSD& data )
 {
 	BOOL success = FALSE;
 	
-	std::string text = mEditor->getText();
-	if( LLLineEditor::postvalidateFloat( text ) )
+	if( mEditor->evaluateFloat() )
 	{
+		std::string text = mEditor->getText();
+
 		LLLocale locale(LLLocale::USER_LOCALE);
 		F32 val = (F32) atof(text.c_str());
 
@@ -327,7 +330,11 @@ void LLSpinCtrl::onEditorCommit( const LLSD& data )
 	}
 	updateEditor();
 
-	if( !success )
+	if( success )
+	{
+		updateEditor();
+	}
+	else
 	{
 		reportInvalidData();		
 	}
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index d2582d524d..fa841074fd 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -56,6 +56,7 @@
 #include "llallocator.h"
 #include "llares.h" 
 #include "llcurl.h"
+#include "llcalc.h"
 #include "lltexturestats.h"
 #include "lltexturestats.h"
 #include "llviewerwindow.h"
@@ -1543,7 +1544,9 @@ bool LLAppViewer::cleanup()
 	// Note: this is where gLocalSpeakerMgr and gActiveSpeakerMgr used to be deleted.
 
 	LLWorldMap::getInstance()->reset(); // release any images
-	
+
+	LLCalc::cleanUp();
+
 	llinfos << "Global stuff deleted" << llendflush;
 
 	if (gAudiop)
diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index 07c7f35989..de5522c8fb 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -30,6 +30,7 @@
 #include "llpanelface.h"
  
 // library includes
+#include "llcalc.h"
 #include "llerror.h"
 #include "llfocusmgr.h"
 #include "llrect.h"
@@ -926,6 +927,16 @@ void LLPanelFace::getState()
 				getChildView("button apply")->setEnabled(enabled);
 			}
 		}
+
+		// Set variable values for numeric expressions
+		LLCalc* calcp = LLCalc::getInstance();
+		calcp->setVar(LLCalc::TEX_U_SCALE, childGetValue("TexScaleU").asReal());
+		calcp->setVar(LLCalc::TEX_V_SCALE, childGetValue("TexScaleV").asReal());
+		calcp->setVar(LLCalc::TEX_U_OFFSET, childGetValue("TexOffsetU").asReal());
+		calcp->setVar(LLCalc::TEX_V_OFFSET, childGetValue("TexOffsetV").asReal());
+		calcp->setVar(LLCalc::TEX_ROTATION, childGetValue("TexRot").asReal());
+		calcp->setVar(LLCalc::TEX_TRANSPARENCY, childGetValue("ColorTrans").asReal());
+		calcp->setVar(LLCalc::TEX_GLOW, childGetValue("glow").asReal());
 	}
 	else
 	{
diff --git a/indra/newview/llpanelobject.cpp b/indra/newview/llpanelobject.cpp
index 52917ff20b..c222bbb191 100644
--- a/indra/newview/llpanelobject.cpp
+++ b/indra/newview/llpanelobject.cpp
@@ -41,6 +41,7 @@
 // project includes
 #include "llagent.h"
 #include "llbutton.h"
+#include "llcalc.h"
 #include "llcheckboxctrl.h"
 #include "llcolorswatch.h"
 #include "llcombobox.h"
@@ -318,6 +319,8 @@ void LLPanelObject::getState( )
 		}
 	}
 
+	LLCalc* calcp = LLCalc::getInstance();
+
 	LLVOVolume *volobjp = NULL;
 	if ( objectp && (objectp->getPCode() == LL_PCODE_VOLUME))
 	{
@@ -334,6 +337,7 @@ void LLPanelObject::getState( )
 
 		// Disable all text input fields
 		clearCtrls();
+		calcp->clearAllVariables();
 		return;
 	}
 
@@ -360,12 +364,18 @@ void LLPanelObject::getState( )
 		mCtrlPosX->set( vec.mV[VX] );
 		mCtrlPosY->set( vec.mV[VY] );
 		mCtrlPosZ->set( vec.mV[VZ] );
+		calcp->setVar(LLCalc::X_POS, vec.mV[VX]);
+		calcp->setVar(LLCalc::Y_POS, vec.mV[VY]);
+		calcp->setVar(LLCalc::Z_POS, vec.mV[VZ]);
 	}
 	else
 	{
 		mCtrlPosX->clear();
 		mCtrlPosY->clear();
 		mCtrlPosZ->clear();
+		calcp->clearVar(LLCalc::X_POS);
+		calcp->clearVar(LLCalc::Y_POS);
+		calcp->clearVar(LLCalc::Z_POS);
 	}
 
 
@@ -380,12 +390,18 @@ void LLPanelObject::getState( )
 		mCtrlScaleX->set( vec.mV[VX] );
 		mCtrlScaleY->set( vec.mV[VY] );
 		mCtrlScaleZ->set( vec.mV[VZ] );
+		calcp->setVar(LLCalc::X_SCALE, vec.mV[VX]);
+		calcp->setVar(LLCalc::Y_SCALE, vec.mV[VY]);
+		calcp->setVar(LLCalc::Z_SCALE, vec.mV[VZ]);
 	}
 	else
 	{
 		mCtrlScaleX->clear();
 		mCtrlScaleY->clear();
 		mCtrlScaleZ->clear();
+		calcp->setVar(LLCalc::X_SCALE, 0.f);
+		calcp->setVar(LLCalc::Y_SCALE, 0.f);
+		calcp->setVar(LLCalc::Z_SCALE, 0.f);
 	}
 
 	mLabelSize->setEnabled( enable_scale );
@@ -405,12 +421,18 @@ void LLPanelObject::getState( )
 		mCtrlRotX->set( mCurEulerDegrees.mV[VX] );
 		mCtrlRotY->set( mCurEulerDegrees.mV[VY] );
 		mCtrlRotZ->set( mCurEulerDegrees.mV[VZ] );
+		calcp->setVar(LLCalc::X_ROT, mCurEulerDegrees.mV[VX]);
+		calcp->setVar(LLCalc::Y_ROT, mCurEulerDegrees.mV[VY]);
+		calcp->setVar(LLCalc::Z_ROT, mCurEulerDegrees.mV[VZ]);
 	}
 	else
 	{
 		mCtrlRotX->clear();
 		mCtrlRotY->clear();
 		mCtrlRotZ->clear();
+		calcp->clearVar(LLCalc::X_ROT);
+		calcp->clearVar(LLCalc::Y_ROT);
+		calcp->clearVar(LLCalc::Z_ROT);
 	}
 
 	mLabelRotation->setEnabled( enable_rotate );
@@ -625,9 +647,9 @@ void LLPanelObject::getState( )
 		F32 end_t	= volume_params.getEndT();
 
 		// Hollowness
-		F32 hollow = volume_params.getHollow();
-		mSpinHollow->set( 100.f * hollow );
-
+		F32 hollow = 100.f * volume_params.getHollow();
+		mSpinHollow->set( hollow );
+		calcp->setVar(LLCalc::HOLLOW, hollow);
 		// All hollow objects allow a shape to be selected.
 		if (hollow > 0.f)
 		{
@@ -679,6 +701,10 @@ void LLPanelObject::getState( )
 		mSpinCutEnd		->set( cut_end );
 		mCtrlPathBegin	->set( adv_cut_begin );
 		mCtrlPathEnd	->set( adv_cut_end );
+		calcp->setVar(LLCalc::CUT_BEGIN, cut_begin);
+		calcp->setVar(LLCalc::CUT_END, cut_end);
+		calcp->setVar(LLCalc::PATH_BEGIN, adv_cut_begin);
+		calcp->setVar(LLCalc::PATH_END, adv_cut_end);
 
 		// Twist
 		F32 twist		= volume_params.getTwist();
@@ -697,18 +723,24 @@ void LLPanelObject::getState( )
 
 		mSpinTwist		->set( twist );
 		mSpinTwistBegin	->set( twist_begin );
+		calcp->setVar(LLCalc::TWIST_END, twist);
+		calcp->setVar(LLCalc::TWIST_BEGIN, twist_begin);
 
 		// Shear
 		F32 shear_x = volume_params.getShearX();
 		F32 shear_y = volume_params.getShearY();
 		mSpinShearX->set( shear_x );
 		mSpinShearY->set( shear_y );
+		calcp->setVar(LLCalc::X_SHEAR, shear_x);
+		calcp->setVar(LLCalc::Y_SHEAR, shear_y);
 
 		// Taper
 		F32 taper_x	= volume_params.getTaperX();
 		F32 taper_y = volume_params.getTaperY();
 		mSpinTaperX->set( taper_x );
 		mSpinTaperY->set( taper_y );
+		calcp->setVar(LLCalc::X_TAPER, taper_x);
+		calcp->setVar(LLCalc::Y_TAPER, taper_y);
 
 		// Radius offset.
 		F32 radius_offset = volume_params.getRadiusOffset();
@@ -738,10 +770,12 @@ void LLPanelObject::getState( )
 			}
 		}
 		mSpinRadiusOffset->set( radius_offset);
+		calcp->setVar(LLCalc::RADIUS_OFFSET, radius_offset);
 
 		// Revolutions
 		F32 revolutions = volume_params.getRevolutions();
 		mSpinRevolutions->set( revolutions );
+		calcp->setVar(LLCalc::REVOLUTIONS, revolutions);
 		
 		// Skew
 		F32 skew	= volume_params.getSkew();
@@ -766,6 +800,7 @@ void LLPanelObject::getState( )
 			}
 		}
 		mSpinSkew->set( skew );
+		calcp->setVar(LLCalc::SKEW, skew);
 	}
 	
 	// Compute control visibility, label names, and twist range.
@@ -869,6 +904,8 @@ void LLPanelObject::getState( )
 	case MI_RING:
 		mSpinScaleX->set( scale_x );
 		mSpinScaleY->set( scale_y );
+		calcp->setVar(LLCalc::X_HOLE, scale_x);
+		calcp->setVar(LLCalc::Y_HOLE, scale_y);
 		mSpinScaleX->setMinValue(OBJECT_MIN_HOLE_SIZE);
 		mSpinScaleX->setMaxValue(OBJECT_MAX_HOLE_SIZE_X);
 		mSpinScaleY->setMinValue(OBJECT_MIN_HOLE_SIZE);
@@ -883,6 +920,14 @@ void LLPanelObject::getState( )
 			mSpinScaleX->setMaxValue(1.f);
 			mSpinScaleY->setMinValue(-1.f);
 			mSpinScaleY->setMaxValue(1.f);
+
+			// Torus' Hole Size is Box/Cyl/Prism's Taper
+			calcp->setVar(LLCalc::X_TAPER, 1.f - scale_x);
+			calcp->setVar(LLCalc::Y_TAPER, 1.f - scale_y);
+
+			// Box/Cyl/Prism have no hole size
+			calcp->setVar(LLCalc::X_HOLE, 0.f);
+			calcp->setVar(LLCalc::Y_HOLE, 0.f);
 		}
 		break;
 	}
-- 
cgit v1.2.3


From 845a92aceda812841f069c0f12a25cec20f4de01 Mon Sep 17 00:00:00 2001
From: Jonathan Yap <none@none>
Date: Thu, 30 Jun 2011 04:24:11 -0400
Subject: STORM-1459 Updated comment per Nicky's suggestion

---
 indra/newview/llpanelwearing.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/llpanelwearing.cpp b/indra/newview/llpanelwearing.cpp
index c2f39524c4..a56b7d6006 100644
--- a/indra/newview/llpanelwearing.cpp
+++ b/indra/newview/llpanelwearing.cpp
@@ -297,7 +297,7 @@ void LLPanelWearing::copyToClipboard()
 		iter++;
 		if (item != NULL)
 		{
-			// Append a CR to all but the last line
+			// Append a newline to all but the last line
 			text += iter != data.end() ? item->getName() + "\n" : item->getName();
 		}
 	}
-- 
cgit v1.2.3


From b75eedb0dce0c6b11e248c4f244e0020a5b97a42 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Thu, 30 Jun 2011 10:12:45 -0400
Subject: CHOP-753: Fix errors in LLMemoryInfo Mac-specific code. Handle
 conversion errors (boost::bad_lexical_cast). Glean additional LLSD statistics
 from vm_stat output.

---
 indra/llcommon/llsys.cpp | 93 +++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 73 insertions(+), 20 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 2897a533d9..e4404f31c7 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -50,6 +50,7 @@
 #include <boost/regex.hpp>
 #include <boost/foreach.hpp>
 #include <boost/lexical_cast.hpp>
+#include <boost/range.hpp>
 
 using namespace llsd;
 
@@ -955,7 +956,8 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 
 		boost::regex pagesize_rx("\\(page size of ([0-9]+) bytes\\)");
 		boost::regex stat_rx("(.+): +([0-9]+)\\.");
-		boost::regex pages_rx("Pages ");
+		boost::regex cache_rx("Object cache: ([0-9]+) hits of ([0-9]+) lookups "
+							  "\\(([0-9]+)% hit rate\\)");
 		boost::cmatch matched;
 		LLSD::Integer pagesizekb(4096/1024);
 
@@ -970,41 +972,81 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 			{
 				line[--linelen] = '\0';
 			}
-			if (boost::regex_search(&line[0], line+linelen, matched, pagesize_rx))
+			if (boost::regex_search(line, matched, pagesize_rx))
 			{
 				// "Mach Virtual Memory Statistics: (page size of 4096 bytes)"
 				std::string pagesize_str(matched[1].first, matched[1].second);
-				// Reasonable to assume that pagesize will always be a
-				// multiple of 1Kb?
-				pagesizekb = boost::lexical_cast<LLSD::Integer>(pagesize_str)/1024;
+				try
+				{
+					// Reasonable to assume that pagesize will always be a
+					// multiple of 1Kb?
+					pagesizekb = boost::lexical_cast<LLSD::Integer>(pagesize_str)/1024;
+				}
+				catch (const boost::bad_lexical_cast&)
+				{
+					LL_WARNS("LLMemoryInfo") << "couldn't parse '" << pagesize_str
+											 << "' in vm_stat line: " << line << LL_ENDL;
+					continue;
+				}
+				mData.append(LLSDArray("page size")(pagesizekb));
 			}
-			else if (boost::regex_match(&line[0], line+linelen, matched, stat_rx))
+			else if (boost::regex_match(line, matched, stat_rx))
 			{
 				// e.g. "Pages free:					 462078."
 				// Strip double-quotes off certain statistic names
-				if (matched[1].first[0] == '"' && matched[1].second[-1] == '"')
+				const char *key_begin(matched[1].first), *key_end(matched[1].second);
+				if (key_begin[0] == '"' && key_end[-1] == '"')
 				{
-					++matched[1].first;
-					--matched[1].second;
+					++key_begin;
+					--key_end;
 				}
-				LLSD::String key(matched[1].first, matched[1].second);
+				LLSD::String key(key_begin, key_end);
 				LLSD::String value_str(matched[2].first, matched[2].second);
-				LLSD::Integer value(boost::lexical_cast<LLSD::Integer>(value_str));
+				LLSD::Integer value(0);
+				try
+				{
+					value = boost::lexical_cast<LLSD::Integer>(value_str);
+				}
+				catch (const boost::bad_lexical_cast&)
+				{
+					LL_WARNS("LLMemoryInfo") << "couldn't parse '" << value_str
+											 << "' in vm_stat line: " << line << LL_ENDL;
+					continue;
+				}
 				// Store this statistic.
 				mData.append(LLSDArray(key)(value));
 				// Is this in units of pages? If so, convert to Kb.
-				// boost::regex_match() doc sez: "If you want to match a
-				// prefix of the character string then use regex_search with
-				// the flag match_continuous set."
-				boost::smatch smatched;
-				if (boost::regex_search(key, smatched, pages_rx, boost::match_continuous))
+				static const LLSD::String pages("Pages ");
+				if (key.substr(0, pages.length()) == pages)
 				{
-					// Synthesize a new key with kB in place of Pages
-					LLSD::String kbkey("kB ");
-					kbkey.append(smatched[0].second, key.end());
+					// Synthesize a new key with kb in place of Pages
+					LLSD::String kbkey("kb ");
+					kbkey.append(key.substr(pages.length()));
 					mData.append(LLSDArray(kbkey)(value * pagesizekb));
 				}
 			}
+			else if (boost::regex_match(line, matched, cache_rx))
+			{
+				// e.g. "Object cache: 841598 hits of 7629869 lookups (11% hit rate)"
+				static const char* cache_keys[] = { "cache hits", "cache lookups", "cache hit%" };
+				std::vector<LLSD::Integer> cache_values;
+				for (size_t i = 0; i < (sizeof(cache_keys)/sizeof(cache_keys[0])); ++i)
+				{
+					LLSD::String value_str(matched[i+1].first, matched[i+1].second);
+					LLSD::Integer value(0);
+					try
+					{
+						value = boost::lexical_cast<LLSD::Integer>(value_str);
+					}
+					catch (boost::bad_lexical_cast&)
+					{
+						LL_WARNS("LLMemoryInfo") << "couldn't parse '" << value_str
+												 << "' in vm_stat line: " << line << LL_ENDL;
+						continue;
+					}
+					mData.append(LLSDArray(cache_keys[i])(value));
+				}
+			}
 			else
 			{
 				LL_WARNS("LLMemoryInfo") << "unrecognized vm_stat line: " << line << LL_ENDL;
@@ -1055,7 +1097,18 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 				// e.g. "MemTotal:		4108424 kB"
 				LLSD::String key(matched[1].first, matched[1].second);
 				LLSD::String value_str(matched[2].first, matched[2].second);
-				LLSD::Integer value(boost::lexical_cast<LLSD::Integer>(value_str));
+				LLSD::Integer value(0);
+				try
+				{
+					value = boost::lexical_cast<LLSD::Integer>(value_str);
+				}
+				catch (const boost::bad_lexical_cast&)
+				{
+					LL_WARNS("LLMemoryInfo") << "couldn't parse '" << value_str
+											 << "' in " << MEMINFO_FILE << " line: "
+											 << line << LL_ENDL;
+					continue;
+				}
 				// Store this statistic.
 				mData.append(LLSDArray(key)(value));
 			}
-- 
cgit v1.2.3


From 01607fe418b19e7439020047c270c0e7c86725e7 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Thu, 30 Jun 2011 11:50:54 -0400
Subject: CHOP-753: Reduce redundancy in LLMemoryInfo. Recast stream() to
 display data from LLSD array rather than reinvoking OS operations used to
 capture it. Make refresh() cache LLSD data in map form as well as array;
 fetch items from that in a few places to avoid going back to OS.

---
 indra/llcommon/llsys.cpp | 159 ++++++++++++++++-------------------------------
 indra/llcommon/llsys.h   |  10 +--
 2 files changed, 58 insertions(+), 111 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index e4404f31c7..8222702c50 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -665,11 +665,7 @@ static U32 LLMemoryAdjustKBResult(U32 inKB)
 U32 LLMemoryInfo::getPhysicalMemoryKB() const
 {
 #if LL_WINDOWS
-	MEMORYSTATUSEX state;
-	state.dwLength = sizeof(state);
-	GlobalMemoryStatusEx(&state);
-
-	return LLMemoryAdjustKBResult((U32)(state.ullTotalPhys >> 10));
+	return LLMemoryAdjustKBResult(mStatsMap["Total Physical KB"]);
 
 #elif LL_DARWIN
 	// This might work on Linux as well.  Someone check...
@@ -717,15 +713,11 @@ U32 LLMemoryInfo::getPhysicalMemoryClamped() const
 void LLMemoryInfo::getAvailableMemoryKB(U32& avail_physical_mem_kb, U32& avail_virtual_mem_kb)
 {
 #if LL_WINDOWS
-	MEMORYSTATUSEX state;
-	state.dwLength = sizeof(state);
-	GlobalMemoryStatusEx(&state);
-
-	avail_physical_mem_kb = (U32)(state.ullAvailPhys/1024) ;
-	avail_virtual_mem_kb = (U32)(state.ullAvailVirtual/1024) ;
+	avail_physical_mem_kb = mStatsMap["Avail Physical KB"];
+	avail_virtual_mem_kb  = mStatsMap["Avail Virtual KB"];
 
 #elif LL_DARWIN
-	// Run vm_stat and filter output, scaling for page size:
+	// mStatsMap is derived from vm_stat, look for (e.g.) "kb free":
 	// $ vm_stat
 	// Mach Virtual Memory Statistics: (page size of 4096 bytes)
 	// Pages free:                   462078.
@@ -743,7 +735,7 @@ void LLMemoryInfo::getAvailableMemoryKB(U32& avail_physical_mem_kb, U32& avail_v
 	avail_virtual_mem_kb = -1 ;
 
 #elif LL_LINUX
-	// Read selected lines from MEMINFO_FILE:
+	// mStatsMap is derived from MEMINFO_FILE:
 	// $ cat /proc/meminfo
 	// MemTotal:        4108424 kB
 	// MemFree:         1244064 kB
@@ -811,114 +803,58 @@ void LLMemoryInfo::stream(std::ostream& s) const
 	// introducer line, then read subsequent lines, etc...
 	std::string pfx(LLError::utcTime() + " <mem> ");
 
-#if LL_WINDOWS
-	MEMORYSTATUSEX state;
-	state.dwLength = sizeof(state);
-	GlobalMemoryStatusEx(&state);
-
-	s << pfx << "Percent Memory use: " << (U32)state.dwMemoryLoad << '%' << std::endl;
-	s << pfx << "Total Physical KB:  " << (U32)(state.ullTotalPhys/1024) << std::endl;
-	s << pfx << "Avail Physical KB:  " << (U32)(state.ullAvailPhys/1024) << std::endl;
-	s << pfx << "Total page KB:      " << (U32)(state.ullTotalPageFile/1024) << std::endl;
-	s << pfx << "Avail page KB:      " << (U32)(state.ullAvailPageFile/1024) << std::endl;
-	s << pfx << "Total Virtual KB:   " << (U32)(state.ullTotalVirtual/1024) << std::endl;
-	s << pfx << "Avail Virtual KB:   " << (U32)(state.ullAvailVirtual/1024) << std::endl;
-
-#elif LL_DARWIN
-	uint64_t phys = 0;
-
-	size_t len = sizeof(phys);	
-	
-	if(sysctlbyname("hw.memsize", &phys, &len, NULL, 0) == 0)
-	{
-		s << pfx << "Total Physical KB:  " << phys/1024 << std::endl;
-	}
-	else
-	{
-		s << "Unable to collect hw.memsize memory information" << std::endl;
-	}
+	// Most of the reason we even store mStatsArray is to preserve the
+	// original order in which we obtained these stats from the OS. So use
+	// mStatsArray in this method rather than mStatsMap, which should present
+	// the same information but in arbitrary order.
 
-	FILE* pout = popen("vm_stat 2>&1", "r");
-	if (! pout)
-	{
-		s << "Unable to collect vm_stat memory information" << std::endl;
-	}
-	else
+	// Max key length
+	size_t key_width(0);
+	BOOST_FOREACH(LLSD pair, inArray(mStatsArray))
 	{
-		// Here 'pout' is vm_stat's stdout. Copy it to output stream.
-		char line[100];
-		while (fgets(line, sizeof(line), pout))
+		size_t len(pair[0].asString().length());
+		if (len > key_width)
 		{
-			s << pfx << line;
+			key_width = len;
 		}
-		fclose(pout);
 	}
 
-#elif LL_SOLARIS
-        U64 phys = 0;
-
-        phys = (U64)(sysconf(_SC_PHYS_PAGES)) * (U64)(sysconf(_SC_PAGESIZE)/1024);
-
-        s << pfx << "Total Physical KB:  " << phys << std::endl;
-
-#elif LL_LINUX
-	std::ifstream meminfo(MEMINFO_FILE);
-	if (meminfo.is_open())
-	{
-		std::string line;
-		while (std::getline(meminfo, line))
-		{
-			s << pfx << line << '\n';
-		}
-	}
-	else
+	// Now stream stats
+	BOOST_FOREACH(LLSD pair, inArray(mStatsArray))
 	{
-		s << "Unable to collect memory information" << std::endl;
+		s << pfx << std::setw(key_width+1) << (pair[0].asString() + ':')
+		  << ' '
+		  << std::setw(12) << pair[1].asInteger() << std::endl;
 	}
-
-#else
-	s << "Unknown system; unable to collect memory information" << std::endl;
-
-#endif
 }
 
 LLSD LLMemoryInfo::getStatsMap() const
 {
-    LLSD map;
-
-    BOOST_FOREACH(LLSD pair, inArray(mData))
-    {
-        // Have to be clear that we want the key asString() to specify map
-        // indexing rather than array subscripting.
-        map[pair[0].asString()] = pair[1];
-    }
-
-    return map;
+	return mStatsMap;
 }
 
 LLSD LLMemoryInfo::getStatsArray() const
 {
-    return mData;
+	return mStatsArray;
 }
 
 LLMemoryInfo& LLMemoryInfo::refresh()
 {
-    // This implementation is derived from stream() code (as of 2011-06-29).
-    // Hopefully we'll reimplement stream() to use mData before long...
-    mData = LLSD::emptyArray();
+	// This implementation is derived from stream() code (as of 2011-06-29).
+	mStatsArray = LLSD::emptyArray();
 
 #if LL_WINDOWS
 	MEMORYSTATUSEX state;
 	state.dwLength = sizeof(state);
 	GlobalMemoryStatusEx(&state);
 
-	mData.append(LLSDArray("Percent Memory use")(LLSD::Integer(state.dwMemoryLoad)));
-	mData.append(LLSDArray("Total Physical KB") (LLSD::Integer(state.ullTotalPhys/1024)));
-	mData.append(LLSDArray("Avail Physical KB") (LLSD::Integer(state.ullAvailPhys/1024)));
-	mData.append(LLSDArray("Total page KB")     (LLSD::Integer(state.ullTotalPageFile/1024)));
-	mData.append(LLSDArray("Avail page KB")     (LLSD::Integer(state.ullAvailPageFile/1024)));
-	mData.append(LLSDArray("Total Virtual KB")  (LLSD::Integer(state.ullTotalVirtual/1024)));
-	mData.append(LLSDArray("Avail Virtual KB")  (LLSD::Integer(state.ullAvailVirtual/1024)));
+	mStatsArray.append(LLSDArray("Percent Memory use")(LLSD::Integer(state.dwMemoryLoad)));
+	mStatsArray.append(LLSDArray("Total Physical KB") (LLSD::Integer(state.ullTotalPhys/1024)));
+	mStatsArray.append(LLSDArray("Avail Physical KB") (LLSD::Integer(state.ullAvailPhys/1024)));
+	mStatsArray.append(LLSDArray("Total page KB")     (LLSD::Integer(state.ullTotalPageFile/1024)));
+	mStatsArray.append(LLSDArray("Avail page KB")     (LLSD::Integer(state.ullAvailPageFile/1024)));
+	mStatsArray.append(LLSDArray("Total Virtual KB")  (LLSD::Integer(state.ullTotalVirtual/1024)));
+	mStatsArray.append(LLSDArray("Avail Virtual KB")  (LLSD::Integer(state.ullAvailVirtual/1024)));
 
 #elif LL_DARWIN
 	uint64_t phys = 0;
@@ -927,7 +863,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 	
 	if (sysctlbyname("hw.memsize", &phys, &len, NULL, 0) == 0)
 	{
-		mData.append(LLSDArray("Total Physical KB")(LLSD::Integer(phys/1024)));
+		mStatsArray.append(LLSDArray("Total Physical KB")(LLSD::Integer(phys/1024)));
 	}
 	else
 	{
@@ -972,6 +908,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 			{
 				line[--linelen] = '\0';
 			}
+			LL_DEBUGS("LLMemoryInfo") << line << LL_ENDL;
 			if (boost::regex_search(line, matched, pagesize_rx))
 			{
 				// "Mach Virtual Memory Statistics: (page size of 4096 bytes)"
@@ -988,7 +925,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 											 << "' in vm_stat line: " << line << LL_ENDL;
 					continue;
 				}
-				mData.append(LLSDArray("page size")(pagesizekb));
+				mStatsArray.append(LLSDArray("page size")(pagesizekb));
 			}
 			else if (boost::regex_match(line, matched, stat_rx))
 			{
@@ -1014,7 +951,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 					continue;
 				}
 				// Store this statistic.
-				mData.append(LLSDArray(key)(value));
+				mStatsArray.append(LLSDArray(key)(value));
 				// Is this in units of pages? If so, convert to Kb.
 				static const LLSD::String pages("Pages ");
 				if (key.substr(0, pages.length()) == pages)
@@ -1022,7 +959,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 					// Synthesize a new key with kb in place of Pages
 					LLSD::String kbkey("kb ");
 					kbkey.append(key.substr(pages.length()));
-					mData.append(LLSDArray(kbkey)(value * pagesizekb));
+					mStatsArray.append(LLSDArray(kbkey)(value * pagesizekb));
 				}
 			}
 			else if (boost::regex_match(line, matched, cache_rx))
@@ -1044,7 +981,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 												 << "' in vm_stat line: " << line << LL_ENDL;
 						continue;
 					}
-					mData.append(LLSDArray(cache_keys[i])(value));
+					mStatsArray.append(LLSDArray(cache_keys[i])(value));
 				}
 			}
 			else
@@ -1060,7 +997,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 
 	phys = (U64)(sysconf(_SC_PHYS_PAGES)) * (U64)(sysconf(_SC_PAGESIZE)/1024);
 
-	mData.append(LLSDArray("Total Physical KB")(phys));
+	mStatsArray.append(LLSDArray("Total Physical KB")(phys));
 
 #elif LL_LINUX
 	std::ifstream meminfo(MEMINFO_FILE);
@@ -1092,6 +1029,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 		std::string line;
 		while (std::getline(meminfo, line))
 		{
+			LL_DEBUGS("LLMemoryInfo") << line << LL_ENDL;
 			if (boost::regex_match(line, matched, stat_rx))
 			{
 				// e.g. "MemTotal:		4108424 kB"
@@ -1110,7 +1048,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 					continue;
 				}
 				// Store this statistic.
-				mData.append(LLSDArray(key)(value));
+				mStatsArray.append(LLSDArray(key)(value));
 			}
 			else
 			{
@@ -1129,12 +1067,19 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 
 #endif
 
-    // should become LL_DEBUGS when we're happy
-    LL_INFOS("LLMemoryInfo") << "Populated mData:\n";
-    LLSDSerialize::toPrettyXML(mData, LL_CONT);
-    LL_ENDL;
+	// Recast same data as mStatsMap for easy access
+	BOOST_FOREACH(LLSD pair, inArray(mStatsArray))
+	{
+		// Specify asString() to disambiguate map indexing from array
+		// subscripting.
+		mStatsMap[pair[0].asString()] = pair[1];
+	}
+
+	LL_DEBUGS("LLMemoryInfo") << "Populated mStatsMap:\n";
+	LLSDSerialize::toPrettyXML(mStatsMap, LL_CONT);
+	LL_ENDL;
 
-    return *this;
+	return *this;
 }
 
 std::ostream& operator<<(std::ostream& s, const LLOSInfo& info)
diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h
index 5b44757e08..8565bfa0b9 100644
--- a/indra/llcommon/llsys.h
+++ b/indra/llcommon/llsys.h
@@ -141,10 +141,12 @@ public:
 	LLMemoryInfo& refresh();
 
 private:
-	// Internally, we store memory stats as for getStatsArray(). It's
-	// straightforward to convert that to getStatsMap() form, less so to
-	// reconstruct the original order when converting the other way.
-	LLSD mData;
+	// Memory stats for getStatsArray(). It's straightforward to convert that
+	// to getStatsMap() form, less so to reconstruct the original order when
+	// converting the other way.
+	LLSD mStatsArray;
+	// Memory stats for getStatsMap().
+	LLSD mStatsMap;
 };
 
 
-- 
cgit v1.2.3


From abf50e8c7d3cf0bab46286f4b300c7d3be976775 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Thu, 30 Jun 2011 13:57:11 -0400
Subject: CHOP-753: Fix compile errors in LLMemoryInfo Windows-specific code.

---
 indra/llcommon/llsys.cpp | 72 ++++++++++++++++++++++++++++++------------------
 indra/llcommon/llsys.h   |  4 +++
 2 files changed, 49 insertions(+), 27 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 8222702c50..d02a807000 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -665,7 +665,7 @@ static U32 LLMemoryAdjustKBResult(U32 inKB)
 U32 LLMemoryInfo::getPhysicalMemoryKB() const
 {
 #if LL_WINDOWS
-	return LLMemoryAdjustKBResult(mStatsMap["Total Physical KB"]);
+	return LLMemoryAdjustKBResult(mStatsMap["Total Physical KB"].asInteger());
 
 #elif LL_DARWIN
 	// This might work on Linux as well.  Someone check...
@@ -712,9 +712,13 @@ U32 LLMemoryInfo::getPhysicalMemoryClamped() const
 //static
 void LLMemoryInfo::getAvailableMemoryKB(U32& avail_physical_mem_kb, U32& avail_virtual_mem_kb)
 {
+	// Sigh, this shouldn't be a static method, then we wouldn't have to
+	// reload this data separately from refresh()
+	LLSD statsMap(loadStatsMap(loadStatsArray()));
+
 #if LL_WINDOWS
-	avail_physical_mem_kb = mStatsMap["Avail Physical KB"];
-	avail_virtual_mem_kb  = mStatsMap["Avail Virtual KB"];
+	avail_physical_mem_kb = statsMap["Avail Physical KB"].asInteger();
+	avail_virtual_mem_kb  = statsMap["Avail Virtual KB"].asInteger();
 
 #elif LL_DARWIN
 	// mStatsMap is derived from vm_stat, look for (e.g.) "kb free":
@@ -839,22 +843,35 @@ LLSD LLMemoryInfo::getStatsArray() const
 }
 
 LLMemoryInfo& LLMemoryInfo::refresh()
+{
+	mStatsArray = loadStatsArray();
+	// Recast same data as mStatsMap for easy access
+	mStatsMap = loadStatsMap(mStatsArray);
+
+	LL_DEBUGS("LLMemoryInfo") << "Populated mStatsMap:\n";
+	LLSDSerialize::toPrettyXML(mStatsMap, LL_CONT);
+	LL_ENDL;
+
+	return *this;
+}
+
+LLSD LLMemoryInfo::loadStatsArray()
 {
 	// This implementation is derived from stream() code (as of 2011-06-29).
-	mStatsArray = LLSD::emptyArray();
+	LLSD statsArray(LLSD::emptyArray());
 
 #if LL_WINDOWS
 	MEMORYSTATUSEX state;
 	state.dwLength = sizeof(state);
 	GlobalMemoryStatusEx(&state);
 
-	mStatsArray.append(LLSDArray("Percent Memory use")(LLSD::Integer(state.dwMemoryLoad)));
-	mStatsArray.append(LLSDArray("Total Physical KB") (LLSD::Integer(state.ullTotalPhys/1024)));
-	mStatsArray.append(LLSDArray("Avail Physical KB") (LLSD::Integer(state.ullAvailPhys/1024)));
-	mStatsArray.append(LLSDArray("Total page KB")     (LLSD::Integer(state.ullTotalPageFile/1024)));
-	mStatsArray.append(LLSDArray("Avail page KB")     (LLSD::Integer(state.ullAvailPageFile/1024)));
-	mStatsArray.append(LLSDArray("Total Virtual KB")  (LLSD::Integer(state.ullTotalVirtual/1024)));
-	mStatsArray.append(LLSDArray("Avail Virtual KB")  (LLSD::Integer(state.ullAvailVirtual/1024)));
+	statsArray.append(LLSDArray("Percent Memory use")(LLSD::Integer(state.dwMemoryLoad)));
+	statsArray.append(LLSDArray("Total Physical KB") (LLSD::Integer(state.ullTotalPhys/1024)));
+	statsArray.append(LLSDArray("Avail Physical KB") (LLSD::Integer(state.ullAvailPhys/1024)));
+	statsArray.append(LLSDArray("Total page KB")     (LLSD::Integer(state.ullTotalPageFile/1024)));
+	statsArray.append(LLSDArray("Avail page KB")     (LLSD::Integer(state.ullAvailPageFile/1024)));
+	statsArray.append(LLSDArray("Total Virtual KB")  (LLSD::Integer(state.ullTotalVirtual/1024)));
+	statsArray.append(LLSDArray("Avail Virtual KB")  (LLSD::Integer(state.ullAvailVirtual/1024)));
 
 #elif LL_DARWIN
 	uint64_t phys = 0;
@@ -863,7 +880,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 	
 	if (sysctlbyname("hw.memsize", &phys, &len, NULL, 0) == 0)
 	{
-		mStatsArray.append(LLSDArray("Total Physical KB")(LLSD::Integer(phys/1024)));
+		statsArray.append(LLSDArray("Total Physical KB")(LLSD::Integer(phys/1024)));
 	}
 	else
 	{
@@ -925,7 +942,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 											 << "' in vm_stat line: " << line << LL_ENDL;
 					continue;
 				}
-				mStatsArray.append(LLSDArray("page size")(pagesizekb));
+				statsArray.append(LLSDArray("page size")(pagesizekb));
 			}
 			else if (boost::regex_match(line, matched, stat_rx))
 			{
@@ -951,7 +968,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 					continue;
 				}
 				// Store this statistic.
-				mStatsArray.append(LLSDArray(key)(value));
+				statsArray.append(LLSDArray(key)(value));
 				// Is this in units of pages? If so, convert to Kb.
 				static const LLSD::String pages("Pages ");
 				if (key.substr(0, pages.length()) == pages)
@@ -959,7 +976,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 					// Synthesize a new key with kb in place of Pages
 					LLSD::String kbkey("kb ");
 					kbkey.append(key.substr(pages.length()));
-					mStatsArray.append(LLSDArray(kbkey)(value * pagesizekb));
+					statsArray.append(LLSDArray(kbkey)(value * pagesizekb));
 				}
 			}
 			else if (boost::regex_match(line, matched, cache_rx))
@@ -981,7 +998,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 												 << "' in vm_stat line: " << line << LL_ENDL;
 						continue;
 					}
-					mStatsArray.append(LLSDArray(cache_keys[i])(value));
+					statsArray.append(LLSDArray(cache_keys[i])(value));
 				}
 			}
 			else
@@ -997,7 +1014,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 
 	phys = (U64)(sysconf(_SC_PHYS_PAGES)) * (U64)(sysconf(_SC_PAGESIZE)/1024);
 
-	mStatsArray.append(LLSDArray("Total Physical KB")(phys));
+	statsArray.append(LLSDArray("Total Physical KB")(phys));
 
 #elif LL_LINUX
 	std::ifstream meminfo(MEMINFO_FILE);
@@ -1048,7 +1065,7 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 					continue;
 				}
 				// Store this statistic.
-				mStatsArray.append(LLSDArray(key)(value));
+				statsArray.append(LLSDArray(key)(value));
 			}
 			else
 			{
@@ -1067,19 +1084,20 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 
 #endif
 
-	// Recast same data as mStatsMap for easy access
-	BOOST_FOREACH(LLSD pair, inArray(mStatsArray))
+	return statsArray;
+}
+
+LLSD LLMemoryInfo::loadStatsMap(const LLSD& statsArray)
+{
+	LLSD statsMap;
+
+	BOOST_FOREACH(LLSD pair, inArray(statsArray))
 	{
 		// Specify asString() to disambiguate map indexing from array
 		// subscripting.
-		mStatsMap[pair[0].asString()] = pair[1];
+		statsMap[pair[0].asString()] = pair[1];
 	}
-
-	LL_DEBUGS("LLMemoryInfo") << "Populated mStatsMap:\n";
-	LLSDSerialize::toPrettyXML(mStatsMap, LL_CONT);
-	LL_ENDL;
-
-	return *this;
+	return statsMap;
 }
 
 std::ostream& operator<<(std::ostream& s, const LLOSInfo& info)
diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h
index 8565bfa0b9..7fcb050ed0 100644
--- a/indra/llcommon/llsys.h
+++ b/indra/llcommon/llsys.h
@@ -141,6 +141,10 @@ public:
 	LLMemoryInfo& refresh();
 
 private:
+	// These methods are used to set mStatsArray and mStatsMap.
+	static LLSD loadStatsArray();
+	static LLSD loadStatsMap(const LLSD&);
+
 	// Memory stats for getStatsArray(). It's straightforward to convert that
 	// to getStatsMap() form, less so to reconstruct the original order when
 	// converting the other way.
-- 
cgit v1.2.3


From 894e8f2a79a745f7f01ed51f041b9384a18b7301 Mon Sep 17 00:00:00 2001
From: eli_linden <none@none>
Date: Thu, 30 Jun 2011 11:36:21 -0700
Subject: sync with viewer-development

---
 .../default/xui/da/floater_settings_debug.xml      |   4 +-
 .../skins/default/xui/en/floater_about_land.xml    |  31 ++--
 indra/newview/skins/default/xui/en/menu_viewer.xml |  10 ++
 .../default/xui/en/panel_preferences_sound.xml     |   6 +-
 .../skins/default/xui/en/panel_sound_devices.xml   | 170 +++++++++++----------
 .../default/xui/es/floater_settings_debug.xml      |   4 +-
 .../default/xui/it/floater_settings_debug.xml      |   4 +-
 indra/newview/skins/default/xui/ja/strings.xml     |   2 +-
 .../default/xui/pl/floater_settings_debug.xml      |   4 +-
 .../default/xui/pt/floater_settings_debug.xml      |   4 +-
 10 files changed, 128 insertions(+), 111 deletions(-)

diff --git a/indra/newview/skins/default/xui/da/floater_settings_debug.xml b/indra/newview/skins/default/xui/da/floater_settings_debug.xml
index 016e5af378..f7eda56e48 100644
--- a/indra/newview/skins/default/xui/da/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/da/floater_settings_debug.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="settings_debug" title="DEBUG INDSTILLINGER">
 	<radio_group name="boolean_combo">
-		<radio_item label="SANDT" name="TRUE" value="sand"/>
-		<radio_item label="FALSK" name="FALSE" value=""/>
+		<radio_item label="SANDT" name="TRUE" />
+		<radio_item label="FALSK" name="FALSE" />
 	</radio_group>
 	<color_swatch label="Farve" name="val_color_swatch"/>
 	<spinner label="x" name="val_spinner_1"/>
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index 6e985e0476..ecd2b119c9 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -414,7 +414,7 @@
              right="-10"
              name="Cancel Land Sale"
              left_pad="5"
-             top_pad="-15"
+             top_pad="7"
              width="180" />
             <text
              type="string"
@@ -488,6 +488,7 @@
              width="186">
                 0
             </text>
+
             <button
              enabled="false"
              follows="left|top"
@@ -495,9 +496,20 @@
              label="Buy Land"
              layout="topleft"
              left_delta="52"
+			 top_pad="5"
              name="Buy Land..."
-             top_pad="7"
              width="130" />
+			<button
+             enabled="false"
+             follows="left|top"
+             height="23"
+             label="Linden Sale"
+             layout="topleft"
+             left="10"
+             name="Linden Sale..."
+             tool_tip="Land must be owned, set content, and not already for auction."
+             top_pad="-23"
+             width="150" />
             <button
              enabled="true"
              follows="left|top"
@@ -545,18 +557,7 @@
              layout="topleft"
              left_delta="0"
              name="Reclaim Land..."
-             top_delta="-50"
-             width="180" />
-            <button
-             enabled="false"
-             follows="left|top"
-             height="23"
-             label="Linden Sale"
-             layout="topleft"
-             left_delta="0"
-             name="Linden Sale..."
-             tool_tip="Land must be owned, set content, and not already for auction."
-             top_pad="2"
+             top_delta="-25"
              width="180" />
         </panel>
         <panel
@@ -2125,4 +2126,4 @@ Only large parcels can be listed in search.
              </panel>
         </panel>
     </tab_container>
-</floater>
+</floater>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 81046e99a0..a0d0c8625e 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -232,6 +232,16 @@
              function="SideTray.PanelPeopleTab"
              parameter="nearby_panel" />
             </menu_item_call>
+        <menu_item_check
+         label="Nearby Voice"
+         name="Nearby Voice">
+            <menu_item_check.on_check
+             function="Floater.Visible"
+             parameter="voice_controls" />
+            <menu_item_check.on_click
+             function="Floater.Toggle"
+             parameter="voice_controls" />
+        </menu_item_check>
     </menu>
     <menu
      create_jump_keys="true"
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
index 1745c1e4b0..1f92244eb9 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_sound.xml
@@ -385,7 +385,7 @@
 		height="18"
 		image_name="Move_Walk_Off"
 		layout="topleft"
-    left_pad="170" 
+		left_pad="170" 
 		name="avatar_icon"
 		mouse_opaque="false"
 		visible="true"
@@ -496,8 +496,8 @@
     filename="panel_sound_devices.xml"
      visiblity_control="ShowDeviceSettings"
      name="device_settings_panel"
-    top="314"
-    width="345"
+    top_pad="0"
+    width="480"
     left="18"
     class="panel_voice_device_settings"/>
     </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
index ccae7c5350..0a20a4a965 100644
--- a/indra/newview/skins/default/xui/en/panel_sound_devices.xml
+++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml
@@ -7,33 +7,46 @@
  layout="topleft"
  name="device_settings_panel"
  width="360">
-	<panel.string
-	  name="default_text">
-		Default
-	</panel.string>
-	<icon
-		   height="18"
-		   image_name="Microphone_On"
-		   left_delta="4"
-		   name="microphone_icon"
-		   mouse_opaque="false"
-		   top="7"
-       layout="topleft"
-		   visible="true"
-		   width="18" />
-	<text
+    <panel.string
+      name="default_text">
+        Default
+    </panel.string>
+    <icon
+     follows="left|top"
+     height="18"
+     image_name="Microphone_On"
+     left_delta="-5"
+     name="microphone_icon"
+     mouse_opaque="false"
+     top="7"
+     layout="topleft"
+     visible="true"
+     width="18" />
+    <icon
+     follows="left|top"
+     height="18"
+     image_name="Parcel_Voice_Dark"
+     layout="topleft"
+     left_pad="220" 
+     name="speaker_icon"
+     mouse_opaque="false"
+     top_delta="0"
+     visible="true"
+     width="22" />
+    <text
      type="string"
      length="1"
-      font.style="BOLD"
+     font.style="BOLD"
      follows="left|top"
      height="16"
      layout="topleft"
-     left_pad="3"
+     left_pad="-240"
+     top_delta="5"
      name="Input"
-     width="70">
-		Input
-	</text>
-	<combo_box
+     width="60">
+        Input
+    </text>
+    <combo_box
      height="23"
      control_name="VoiceInputAudioDevice"
      follows="left|top"
@@ -42,33 +55,57 @@
      max_chars="128"
      name="voice_input_device"
      top_delta="-5"
-     width="200" />
-	<text
-	  type="string"
-	  length="1"
-	  follows="left|top"
-	  height="16"
-	  layout="topleft"
-	  left_delta="-70"
-	  name="My volume label"
-	  top_pad="4"
-	  width="200">
-		My volume:
-	</text>
-	<slider_bar
-	  control_name="AudioLevelMic"
-   follows="top|right|left"
-   height="17"
-   increment="0.025"
-   initial_value="1.0"
-   layout="topleft"
-   left_delta="-6"
-   max_val="2"
-   name="mic_volume_slider"
-   tool_tip="Change the volume using this slider"
-   top_pad="-1"
-   width="220" />
-	<text
+     width="150" />
+    <text
+     font.style="BOLD"
+     type="string"
+     length="1"
+     follows="left|top"
+     height="15"
+     layout="topleft"
+     left_pad="30"
+     name="Output"
+     top_delta="5"
+     width="60">
+        Output
+    </text>
+    <combo_box
+     control_name="VoiceOutputAudioDevice"
+     height="23"
+     follows="left|top"
+     layout="topleft"
+     left_pad="0"
+     max_chars="128"
+     name="voice_output_device"
+     top_delta="-4"
+     width="150" />
+    <text
+     type="string"
+     halign="left"
+     length="1"
+     follows="left|top"
+     height="16"
+     layout="topleft"
+     left_delta="-300"
+     name="My volume label"
+     top_pad="14"
+     width="200">
+        My volume:
+    </text>
+    <slider_bar
+     control_name="AudioLevelMic"
+     follows="top|right|left"
+     height="17"
+     increment="0.025"
+     initial_value="1.0"
+     layout="topleft"
+     left_delta="95"
+     max_val="2"
+     name="mic_volume_slider"
+     tool_tip="Change the volume using this slider"
+     top_pad="-18"
+     width="110" />
+    <text
      type="string"
      text_color="EmphasisColor"
      length="1"
@@ -79,8 +116,8 @@
      name="wait_text"
      top_delta="-1"
      width="110">
-		Please wait
-	</text>
+        Please wait
+    </text>
   <locate
      follows="right|top"
      height="20"
@@ -121,35 +158,4 @@
      name="bar4"
      top_delta="0"
      width="20" />
-	<icon
-	   height="18"
-	   image_name="Parcel_Voice_Light"
-	   left="5"
-	   name="speaker_icon"
-	   mouse_opaque="false"
-	   top_pad="3"
-	   visible="true"
-	   width="22" />
-	<text
-     font.style="BOLD"
-     type="string"
-     length="1"
-     follows="left|top"
-     height="15"
-     layout="topleft"
-     left_pad="0"
-     name="Output"
-     width="70">
-		Output
-	</text>
-	<combo_box
-     control_name="VoiceOutputAudioDevice"
-     height="23"
-     follows="left|top"
-     layout="topleft"
-     left_pad="0"
-     max_chars="128"
-     name="voice_output_device"
-     top_delta="-3"
-     width="200" />
-</panel>
+</panel>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/es/floater_settings_debug.xml b/indra/newview/skins/default/xui/es/floater_settings_debug.xml
index bca1839f09..1da2e491e1 100644
--- a/indra/newview/skins/default/xui/es/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/es/floater_settings_debug.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="settings_debug" title="CONFIGURACIONES DEL DEPURADOR">
 	<radio_group name="boolean_combo">
-		<radio_item label="VERDADERO" name="TRUE" value="verdadero"/>
-		<radio_item label="FALSO" name="FALSE" value=""/>
+		<radio_item label="VERDADERO" name="TRUE" />
+		<radio_item label="FALSO" name="FALSE" />
 	</radio_group>
 	<color_swatch label="Color" name="val_color_swatch"/>
 	<spinner label="x" name="val_spinner_1"/>
diff --git a/indra/newview/skins/default/xui/it/floater_settings_debug.xml b/indra/newview/skins/default/xui/it/floater_settings_debug.xml
index aab00a26ce..489d52d3b8 100644
--- a/indra/newview/skins/default/xui/it/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/it/floater_settings_debug.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="settings_debug" title="PARAMETRI DI DEBUG">
 	<radio_group name="boolean_combo">
-		<radio_item label="VERO" name="TRUE" value="vero"/>
-		<radio_item label="FALSO" name="FALSE" value=""/>
+		<radio_item label="VERO" name="TRUE" />
+		<radio_item label="FALSO" name="FALSE" />
 	</radio_group>
 	<color_swatch label="Colore" name="val_color_swatch"/>
 	<spinner label="x" name="val_spinner_1"/>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index a6691fb764..ff22221aab 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -3821,7 +3821,7 @@ www.secondlife.com から最新バージョンをダウンロードしてくだ
 		アドホックコンファレンス
 	</string>
 	<string name="conference-title-incoming">
-		[AGENT_NAME]とコンファレンスする
+		[AGENT_NAME] とコンファレンスする
 	</string>
 	<string name="inventory_item_offered-im">
 		持ち物アイテムを送りました
diff --git a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml
index 7c29d52e7b..131f92d56f 100644
--- a/indra/newview/skins/default/xui/pl/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/pl/floater_settings_debug.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="settings_debug" title="USTAWIENIA DEBUGOWANIA">
 	<radio_group name="boolean_combo">
-		<radio_item label="PRAWDA" name="TRUE" value="prawda"/>
-		<radio_item label="NIEPRAWDA" name="FALSE" value=""/>
+		<radio_item label="PRAWDA" name="TRUE" />
+		<radio_item label="NIEPRAWDA" name="FALSE" />
 	</radio_group>
 	<color_swatch label="Kolor" name="val_color_swatch"/>
 	<spinner label="x" name="val_spinner_1"/>
diff --git a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml
index c6694d13b2..83f7b24572 100644
--- a/indra/newview/skins/default/xui/pt/floater_settings_debug.xml
+++ b/indra/newview/skins/default/xui/pt/floater_settings_debug.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="settings_debug" title="DEBUG SETTINGS">
 	<radio_group name="boolean_combo">
-		<radio_item label="TRUE" name="TRUE" value="verdadeiro"/>
-		<radio_item label="FALSE" name="FALSE" value=""/>
+		<radio_item label="TRUE" name="TRUE" />
+		<radio_item label="FALSE" name="FALSE" />
 	</radio_group>
 	<color_swatch label="Cor" name="val_color_swatch"/>
 	<spinner label="x" name="val_spinner_1"/>
-- 
cgit v1.2.3


From e08d1e510a2968753cab330c57e9d8ee25102aaf Mon Sep 17 00:00:00 2001
From: Kadah_Coba <kadah.coba@gmail.com>
Date: Thu, 30 Jun 2011 13:48:07 -0700
Subject: Additional functions for STORM-1315 Ability to do simple math in
 numeric edit fields Support for floor, ceil, modulo. Fixed ABS. Added more
 constants, SQRT_TWO_PI and SQRT3

---
 indra/llmath/llcalc.cpp     |  2 ++
 indra/llmath/llcalcparser.h | 11 ++++++++---
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/indra/llmath/llcalc.cpp b/indra/llmath/llcalc.cpp
index f399463a47..f16dbec63f 100644
--- a/indra/llmath/llcalc.cpp
+++ b/indra/llmath/llcalc.cpp
@@ -62,7 +62,9 @@ LLCalc::LLCalc() : mLastErrorPos(0)
 	(*mConstants)["PI"] = F_PI;
 	(*mConstants)["TWO_PI"] = F_TWO_PI;
 	(*mConstants)["PI_BY_TWO"] = F_PI_BY_TWO;
+	(*mConstants)["SQRT_TWO_PI"] = F_SQRT_TWO_PI;
 	(*mConstants)["SQRT2"] = F_SQRT2;
+	(*mConstants)["SQRT3"] = F_SQRT3;
 	(*mConstants)["DEG_TO_RAD"] = DEG_TO_RAD;
 	(*mConstants)["RAD_TO_DEG"] = RAD_TO_DEG;
 	(*mConstants)["GRAVITY"] = GRAVITY;
diff --git a/indra/llmath/llcalcparser.h b/indra/llmath/llcalcparser.h
index a759a35710..600e173661 100644
--- a/indra/llmath/llcalcparser.h
+++ b/indra/llmath/llcalcparser.h
@@ -73,7 +73,9 @@ struct LLCalcParser : grammar<LLCalcParser>
 				 (str_p("SQRT") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_sqrt)(self,arg1)]) |
 				 (str_p("LOG") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_log)(self,arg1)]) |
 				 (str_p("EXP") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_exp)(self,arg1)]) |
-				 (str_p("ABS") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_fabs)(self,arg1)])
+				 (str_p("ABS") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_fabs)(self,arg1)]) |
+				 (str_p("FLR") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_floor)(self,arg1)]) |
+				 (str_p("CEIL") >> '(' >> expression[unary_func.value = bind(&LLCalcParser::_ceil)(self,arg1)])
 				) >> assert_syntax(ch_p(')'))
 			;
 			
@@ -118,7 +120,8 @@ struct LLCalcParser : grammar<LLCalcParser>
 			term =
 				power[term.value = arg1] >>
 				*(('*' >> assert_syntax(power[term.value *= arg1])) |
-				  ('/' >> assert_syntax(power[term.value /= arg1]))
+				  ('/' >> assert_syntax(power[term.value /= arg1])) |
+				  ('%' >> assert_syntax(power[term.value = bind(&fmodf)(term.value, arg1)]))
 				)
 			;
 			
@@ -153,7 +156,9 @@ private:
 	F32 _sqrt(const F32& a) const { return sqrt(a); }
 	F32 _log(const F32& a) const { return log(a); }
 	F32 _exp(const F32& a) const { return exp(a); }
-	F32 _fabs(const F32& a) const { return fabs(a) * RAD_TO_DEG; }
+	F32 _fabs(const F32& a) const { return fabs(a); }
+	F32 _floor(const F32& a) const { return llfloor(a); }
+	F32 _ceil(const F32& a) const { return llceil(a); }
 
 	F32 _atan2(const F32& a,const F32& b) const { return atan2(a,b); }
 
-- 
cgit v1.2.3


From bb410e9576c582594e61b7f0dc0723eb5640f8ed Mon Sep 17 00:00:00 2001
From: Kadah_Coba <none@none>
Date: Sat, 2 Jul 2011 22:19:59 -0700
Subject: Fix for STORM-1315 Clear the texture variables on no selection

---
 indra/newview/llpanelface.cpp | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/indra/newview/llpanelface.cpp b/indra/newview/llpanelface.cpp
index de5522c8fb..a4f6921f98 100644
--- a/indra/newview/llpanelface.cpp
+++ b/indra/newview/llpanelface.cpp
@@ -972,6 +972,16 @@ void LLPanelFace::getState()
 		//getChildView("has media")->setEnabled(FALSE);
 		//getChildView("media info set")->setEnabled(FALSE);
 		
+
+		// Set variable values for numeric expressions
+		LLCalc* calcp = LLCalc::getInstance();
+		calcp->clearVar(LLCalc::TEX_U_SCALE);
+		calcp->clearVar(LLCalc::TEX_V_SCALE);
+		calcp->clearVar(LLCalc::TEX_U_OFFSET);
+		calcp->clearVar(LLCalc::TEX_V_OFFSET);
+		calcp->clearVar(LLCalc::TEX_ROTATION);
+		calcp->clearVar(LLCalc::TEX_TRANSPARENCY);
+		calcp->clearVar(LLCalc::TEX_GLOW);		
 	}
 }
 
-- 
cgit v1.2.3


From 57c30517817a6458edab6bfdfad7d7112467ca48 Mon Sep 17 00:00:00 2001
From: Kadah_Coba <none@none>
Date: Mon, 4 Jul 2011 14:20:52 -0700
Subject: Changes for STORM-1315 LLCalc Removed dynamic allocation on
 mVariables and mConstants CS cleanup

---
 indra/llmath/llcalc.cpp   | 33 +++++++++++++--------------------
 indra/llmath/llcalc.h     |  6 +++---
 indra/llui/llspinctrl.cpp | 10 +---------
 3 files changed, 17 insertions(+), 32 deletions(-)

diff --git a/indra/llmath/llcalc.cpp b/indra/llmath/llcalc.cpp
index f16dbec63f..597d0815fb 100644
--- a/indra/llmath/llcalc.cpp
+++ b/indra/llmath/llcalc.cpp
@@ -54,27 +54,20 @@ LLCalc* LLCalc::sInstance = NULL;
 
 LLCalc::LLCalc() : mLastErrorPos(0)
 {
-//	mUserVariables = new calc_map_t;
-	mVariables = new calc_map_t;
-	mConstants = new calc_map_t;
-		
 	// Init table of constants
-	(*mConstants)["PI"] = F_PI;
-	(*mConstants)["TWO_PI"] = F_TWO_PI;
-	(*mConstants)["PI_BY_TWO"] = F_PI_BY_TWO;
-	(*mConstants)["SQRT_TWO_PI"] = F_SQRT_TWO_PI;
-	(*mConstants)["SQRT2"] = F_SQRT2;
-	(*mConstants)["SQRT3"] = F_SQRT3;
-	(*mConstants)["DEG_TO_RAD"] = DEG_TO_RAD;
-	(*mConstants)["RAD_TO_DEG"] = RAD_TO_DEG;
-	(*mConstants)["GRAVITY"] = GRAVITY;
+	mConstants["PI"] = F_PI;
+	mConstants["TWO_PI"] = F_TWO_PI;
+	mConstants["PI_BY_TWO"] = F_PI_BY_TWO;
+	mConstants["SQRT_TWO_PI"] = F_SQRT_TWO_PI;
+	mConstants["SQRT2"] = F_SQRT2;
+	mConstants["SQRT3"] = F_SQRT3;
+	mConstants["DEG_TO_RAD"] = DEG_TO_RAD;
+	mConstants["RAD_TO_DEG"] = RAD_TO_DEG;
+	mConstants["GRAVITY"] = GRAVITY;
 }
 
 LLCalc::~LLCalc()
 {
-	delete mConstants;
-	delete mVariables;
-//	delete mUserVariables;	
 }
 
 //static
@@ -93,17 +86,17 @@ LLCalc* LLCalc::getInstance()
 
 void LLCalc::setVar(const std::string& name, const F32& value)
 {
-	(*mVariables)[name] = value;
+	mVariables[name] = value;
 }
 
 void LLCalc::clearVar(const std::string& name)
 {
-	mVariables->erase(name);
+	mVariables.erase(name);
 }
 
 void LLCalc::clearAllVariables()
 {
-	mVariables->clear();
+	mVariables.clear();
 }
 
 /*
@@ -122,7 +115,7 @@ bool LLCalc::evalString(const std::string& expression, F32& result)
 	std::string expr_upper = expression;
 	LLStringUtil::toUpper(expr_upper);
 	
-	LLCalcParser calc(result, mConstants, mVariables);
+	LLCalcParser calc(result, &mConstants, &mVariables);
 
 	mLastErrorPos = 0;
 	std::string::iterator start = expr_upper.begin();
diff --git a/indra/llmath/llcalc.h b/indra/llmath/llcalc.h
index 23c83f623e..cc31950cb6 100644
--- a/indra/llmath/llcalc.h
+++ b/indra/llmath/llcalc.h
@@ -69,12 +69,12 @@ public:
 private:
 	std::string::size_type	mLastErrorPos;
 	
-	calc_map_t*	mConstants;
-	calc_map_t*	mVariables;
+	calc_map_t	mConstants;
+	calc_map_t	mVariables;
 	
 	// *TODO: Add support for storing user defined variables, and stored functions.
 	//	Will need UI work, and a means to save them between sessions.
-//	calc_map_t* mUserVariables;
+//	calc_map_t mUserVariables;
 	
 	// "There shall be only one"
 	static LLCalc*	sInstance;
diff --git a/indra/llui/llspinctrl.cpp b/indra/llui/llspinctrl.cpp
index b76d604953..934879cdfd 100644
--- a/indra/llui/llspinctrl.cpp
+++ b/indra/llui/llspinctrl.cpp
@@ -124,15 +124,7 @@ LLSpinCtrl::LLSpinCtrl(const LLSpinCtrl::Params& p)
 	params.max_length.bytes(MAX_STRING_LENGTH);
 	params.commit_callback.function((boost::bind(&LLSpinCtrl::onEditorCommit, this, _2)));
 	
-	//allow entering of any chars for LLCalc, proper input will be evaluated on commit
-	//if( mPrecision>0 )//should accept float numbers
-	//{
-	//	params.prevalidate_callback(&LLTextValidate::validateFloat);
-	//}
-	//else //should accept int numbers
-	//{
-	//	params.prevalidate_callback(&LLTextValidate::validateInt);
-	//}
+	//*NOTE: allow entering of any chars for LLCalc, proper input will be evaluated on commit
 	
 	params.follows.flags(FOLLOWS_LEFT | FOLLOWS_BOTTOM);
 	mEditor = LLUICtrlFactory::create<LLLineEditor> (params);
-- 
cgit v1.2.3


From bfbd7c6df5d00b40a5a36fe7d99527084f19e76d Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 5 Jul 2011 20:20:26 -0400
Subject: CHOP-753: On Windows, add GetPerformanceInfo to LLMemoryInfo stats.
 So far we've only been querying GlobalMemoryStatusEx(), but
 GetPerformanceInfo() delivers a bunch more memory-related stats that may be
 pertinent. Try capturing those too. May not yet compile on Windows...

---
 indra/llcommon/llsys.cpp | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index d02a807000..e0ce74234d 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -58,6 +58,7 @@ using namespace llsd;
 #	define WIN32_LEAN_AND_MEAN
 #	include <winsock2.h>
 #	include <windows.h>
+#   include <psapi.h>
 #elif LL_DARWIN
 #	include <errno.h>
 #	include <sys/sysctl.h>
@@ -873,6 +874,25 @@ LLSD LLMemoryInfo::loadStatsArray()
 	statsArray.append(LLSDArray("Total Virtual KB")  (LLSD::Integer(state.ullTotalVirtual/1024)));
 	statsArray.append(LLSDArray("Avail Virtual KB")  (LLSD::Integer(state.ullAvailVirtual/1024)));
 
+	PERFORMANCE_INFORMATION perf;
+	perf.cb = sizeof(perf);
+	GetPerformanceInfo(&perf, sizeof(perf));
+
+	SIZE_T pagekb(perf.PageSize/1024);
+	statsArray.append(LLSDArray("CommitTotal KB")	(LLSD::Integer(perf.CommitTotal * pagekb)));
+	statsArray.append(LLSDArray("CommitLimit KB")	(LLSD::Integer(perf.CommitLimit * pagekb)));
+	statsArray.append(LLSDArray("CommitPeak KB")	(LLSD::Integer(perf.CommitPeak * pagekb)));
+	statsArray.append(LLSDArray("PhysicalTotal KB") (LLSD::Integer(perf.PhysicalTotal * pagekb)));
+	statsArray.append(LLSDArray("PhysicalAvail KB") (LLSD::Integer(perf.PhysicalAvailable * pagekb)));
+	statsArray.append(LLSDArray("SystemCache KB")	(LLSD::Integer(perf.SystemCache * pagekb)));
+	statsArray.append(LLSDArray("KernelTotal KB")	(LLSD::Integer(perf.KernelTotal * pagekb)));
+	statsArray.append(LLSDArray("KernelPaged KB")	(LLSD::Integer(perf.KernelPaged * pagekb)));
+	statsArray.append(LLSDArray("KernelNonpaged KB")(LLSD::Integer(perf.KernelNonpaged * pagekb)));
+	statsArray.append(LLSDArray("PageSize KB")		(LLSD::Integer(pagekb)));
+	statsArray.append(LLSDArray("HandleCount")		(LLSD::Integer(perf.HandleCount)));
+	statsArray.append(LLSDArray("ProcessCount")		(LLSD::Integer(perf.ProcessCount)));
+	statsArray.append(LLSDArray("ThreadCount")		(LLSD::Integer(perf.ThreadCount)));
+
 #elif LL_DARWIN
 	uint64_t phys = 0;
 
-- 
cgit v1.2.3


From ffb3ffb74d07934807aed72438d067cc7b714606 Mon Sep 17 00:00:00 2001
From: eli_linden <none@none>
Date: Wed, 6 Jul 2011 11:12:26 -0700
Subject: sync with viewer-development

---
 .../default/xui/en/floater_delete_env_preset.xml   |  59 ++
 .../default/xui/en/floater_edit_day_cycle.xml      | 485 +++++++++++
 .../default/xui/en/floater_edit_sky_preset.xml     | 953 +++++++++++++++++++++
 .../default/xui/en/floater_edit_water_preset.xml   | 448 ++++++++++
 .../xui/en/floater_environment_settings.xml        | 162 ++++
 .../skins/default/xui/en/floater_region_info.xml   |   2 +-
 indra/newview/skins/default/xui/en/menu_viewer.xml | 117 ++-
 .../newview/skins/default/xui/en/notifications.xml |  96 +--
 .../default/xui/en/panel_region_environment.xml    | 149 ++++
 .../skins/default/xui/en/panel_region_estate.xml   | 311 +++----
 .../skins/default/xui/en/panel_region_terrain.xml  | 349 ++++++--
 indra/newview/skins/default/xui/en/strings.xml     |   4 +
 .../newview/skins/default/xui/en/widgets/time.xml  |  16 +
 13 files changed, 2839 insertions(+), 312 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/en/floater_delete_env_preset.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_edit_water_preset.xml
 create mode 100644 indra/newview/skins/default/xui/en/floater_environment_settings.xml
 create mode 100644 indra/newview/skins/default/xui/en/panel_region_environment.xml
 create mode 100644 indra/newview/skins/default/xui/en/widgets/time.xml

diff --git a/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml
new file mode 100644
index 0000000000..b5de4166f6
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_delete_env_preset.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<floater
+ legacy_header_height="18"
+ height="130"
+ help_topic=""
+ layout="topleft"
+ name="Delete Env Preset"
+ save_rect="true"
+ title="DELETE ENV PRESET"
+ width="550">
+
+    <string name="title_water">Delete Water Preset</string>
+    <string name="title_sky">Delete Sky Preset</string>
+    <string name="title_day_cycle">Delete Day Cycle</string>
+
+    <string name="label_water">Preset:</string>
+    <string name="label_sky">Preset:</string>
+    <string name="label_day_cycle">Day cycle:</string>
+   
+    <string name="msg_confirm_deletion">Are you sure you want to delete the selected preset?</string>
+    <string name="msg_sky_is_referenced">Cannot remove a preset that is referenced by some day cycle(s).</string>
+
+    <string name="combo_label">-Select a preset-</string>
+
+    <text
+     follows="top|left|right"
+     font="SansSerif"
+     height="10"
+     layout="topleft"
+     left="50"
+     name="label"
+     top="60"
+     width="60">
+     Preset:
+    </text>
+    <combo_box
+     follows="top|left"
+     layout="topleft"
+     left_pad="10"
+     name="preset_combo"
+     top_delta="-5"
+     width="200"/>
+    <button
+     follows="bottom|right"
+     height="23"
+     label="Delete"
+     layout="topleft"
+     left_pad="15"
+     name="delete"
+     width="70"/>
+    <button
+     follows="bottom|right"
+     height="23"
+     label="Cancel"
+     layout="topleft"
+     left_pad="5"
+     name="cancel"
+     width="70"/>
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml
new file mode 100644
index 0000000000..7aae966879
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml
@@ -0,0 +1,485 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ height="381"
+ layout="topleft"
+ name="Edit Day cycle"
+ help_topic="day_presets"
+ save_rect="true"
+ title="Edit Day Cycle"
+ width="705">
+
+    <string name="title_new">Create a New Day Cycle</string>
+    <string name="title_edit">Edit Day Cycle</string>
+    <string name="hint_new">Name your day cycle, adjust the controls to create it, and click "Save".</string>
+    <string name="hint_edit">To edit your day cycle, adjust the controls below and click "Save".</string>
+    <string name="combo_label">-Select a preset-</string>
+
+    <text
+     follows="top|left|right"
+     height="10"
+     layout="topleft"
+     left="10"
+     name="hint"
+     top="25"
+     width="685" />
+    <text
+     follows="top|left|right"
+     font="SansSerif"
+     height="10"
+     layout="topleft"
+     left="10"
+     name="label"
+     top_pad="25"
+     width="120">
+     Preset Name:
+    </text>
+    <combo_box
+     allow_text_entry="true"
+     follows="top|left"
+     layout="topleft"
+     left_pad="10"
+     max_chars="100"
+     name="day_cycle_combo"
+     top_delta="-5"
+     width="200" />
+    <line_editor
+     height="20"
+     left_delta="0"
+     name="day_cycle_name"
+     top_delta="0"
+     visible="true"
+     width="200" />
+    <text
+     follows="top|left|right"
+     height="95"
+     layout="topleft"
+     left_pad="10"
+     name="note"
+     top_delta="0"
+     width="345"
+     wrap="true">
+     Note: if you change the name of your preset, you will be creating a new preset and the existing preset will not be changed.
+    </text>
+ <!--======== Controls panel ========-->
+    <text
+     follows="left|top|right"
+     height="10"
+     layout="topleft"
+     left="10"    
+     name="water_color_label"
+     top="100"
+     width="300">
+     - Click on a tab to edit the specific sky settings and time.
+    </text>
+    <text
+     follows="left|top|right"
+     height="10"
+     layout="topleft"    
+     name="water_color_label"
+     top_pad="10"
+     width="300">
+     - Click and drag the tabs to set the transition times.
+    </text>
+    <text
+     follows="left|top|right"
+     height="10"
+     layout="topleft"
+     name="water_color_label"
+     top_pad="10"
+     width="300">
+     - Use the scrubber to preview your day cycle.
+    </text>
+    <panel
+     follows="top|left"
+     height="100"
+     name="day_cycle_slider_panel"
+     layout="topleft"
+     left_delta="25"
+     top_pad="15"
+     width="660">
+        <multi_slider
+         can_edit_text="true"
+         control_name="WLTimeSlider"
+         decimal_digits="0"
+         draw_track="false"
+         follows="bottom"
+         height="10"
+         increment="0.0833333"
+         initial_value="0"
+         layout="topleft"
+         left="20"
+         max_sliders="20"
+         max_val="24"
+         name="WLTimeSlider"
+         show_text="false"
+         top_pad="0"
+         use_triangle="true"
+         width="525" />
+        <multi_slider
+         can_edit_text="true"
+         control_name="WLDayCycleKeys"
+         decimal_digits="0"
+         follows="bottom"
+         height="10"
+         increment="0.0833333"
+         initial_value="0"
+         layout="topleft"
+         left_delta="0"
+         max_sliders="20"
+         max_val="24"
+         name="WLDayCycleKeys"
+         show_text="false"
+         top_pad="15"
+         width="525" />
+        <button
+         height="20"
+         label="Add Key"
+         label_selected="Add Key"
+         layout="topleft"
+         left_pad="20"
+         name="WLAddKey"
+         top_delta="-18"
+         width="96" />
+        <button
+         height="20"
+         label="Delete Key"
+         label_selected="Delete Key"
+         layout="topleft"
+         name="WLDeleteKey"
+         top_pad="5"
+         width="96" />
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         height="16"
+         layout="topleft"
+         left="8"
+         name="WL12am"
+         top="74"
+         width="55">
+         12am
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         height="16"
+         layout="topleft"
+         left_pad="10"
+         name="WL3am"
+         top_delta="0"
+         width="55">
+            3am
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         height="16"
+         layout="topleft"
+         left_pad="10"
+         name="WL6am"
+         top_delta="0"
+         width="55">
+            6am
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         height="16"
+         layout="topleft"
+         left_pad="10"
+         name="WL9amHash"
+         top_delta="0"
+         width="55">
+            9am
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         height="16"
+         layout="topleft"
+         left_pad="10"
+         name="WL12pmHash"
+         top_delta="0"
+         width="55">
+            12pm
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         height="16"
+         layout="topleft"
+         left_pad="10"
+         name="WL3pm"
+         top_delta="0"
+         width="55">
+            3pm
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         height="16"
+         layout="topleft"
+         left_pad="10"
+         name="WL6pm"
+         top_delta="0"
+         width="55">
+            6pm
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         height="16"
+         layout="topleft"
+         left_pad="10"
+         name="WL9pm"
+         top_delta="0"
+         width="55">
+            9pm
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         height="16"
+         layout="topleft"
+         left_pad="10"
+         name="WL12am2"
+         top_delta="0"
+         width="55">
+            12am
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         font="SansSerif"
+         height="14"
+         layout="topleft"
+         left="20"
+         name="WL12amHash"
+         top="54"
+         width="6">
+            |
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         font="SansSerif"
+         height="11"
+         layout="topleft"
+         left_pad="59"
+         name="WL3amHash"
+         top_delta="3"
+         width="6">
+            I
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         font="SansSerif"
+         height="14"
+         layout="topleft"
+         left_pad="59"
+         name="WL6amHash"
+         top_delta="-3"
+         width="6">
+            |
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         font="SansSerif"
+         height="11"
+         layout="topleft"
+         left_pad="59"
+         name="WL9amHash2"
+         top_delta="3"
+         width="6">
+            I
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         font="SansSerif"
+         height="14"
+         layout="topleft"
+         left_pad="59"
+         name="WL12pmHash2"
+         top_delta="-3"
+         width="6">
+            |
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         font="SansSerif"
+         height="11"
+         layout="topleft"
+         left_pad="59"
+         name="WL3pmHash"
+         top_delta="3"
+         width="6">
+            I
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         font="SansSerif"
+         height="14"
+         layout="topleft"
+         left_pad="59"
+         name="WL6pmHash"
+         top_delta="-3"
+         width="6">
+            |
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         font="SansSerif"
+         height="11"
+         layout="topleft"
+         left_pad="59"
+         name="WL9pmHash"
+         top_delta="3"
+         width="6">
+            I
+        </text>
+        <text
+         type="string"
+         length="1"
+         border_visible="true"
+         follows="left|top|right"
+         font="SansSerif"
+         height="14"
+         layout="topleft"
+         left_pad="59"
+         name="WL12amHash2"
+         top_delta="-3"
+         width="6">
+         |
+        </text>
+    </panel>
+    <text
+     type="string"
+     length="1"
+     border_visible="true"
+     follows="left|top|right"
+     font="SansSerif"
+     height="16"
+     layout="topleft"
+     left_delta="192"
+     name="WLCurKeyTimeText2"
+     top_pad="10"
+     width="80">
+        Sky Setting:
+    </text>
+    <combo_box
+     height="18"
+     label="Preset"
+     layout="topleft"
+     left_pad="5"
+     name="WLSkyPresets"
+     width="205" />
+        <text
+     type="string"
+     length="1"
+     border_visible="true"
+     follows="left|top|right"
+     font="SansSerif"
+     height="16"
+     layout="topleft"
+     left_delta="-40"
+     name="WLCurKeyTimeText2"
+     top_pad="15"
+     width="35">
+        Time:
+    </text>
+    <time
+     follows="left|top"
+     height="16"
+     label_width="0"
+     layout="topleft"
+     left_pad="3"
+     name="time"
+     top_delta="-1"
+     value="6:00 AM"
+     width="75"/> 
+    <view_border
+     bevel_style="none"
+     follows="top|left"
+     height="0"
+     layout="topleft"
+     left="10"
+     name="horiz_separator"
+     top_pad="20"
+     width="685"/>
+    <loading_indicator
+     height="23"
+     layout="topleft"
+     left="25"
+     name="progress_indicator"
+     top="350"
+     visible="false"
+     width="23" />
+    <check_box
+     follows="top|left"
+     height="10"
+     label="Make this my new day cycle"
+     layout="topleft"
+     left="310"
+     name="make_default_cb"
+     top_delta="13"
+     width="230"/>
+    <button
+     follows="bottom|right"
+     height="23"
+     label="Save"
+     layout="topleft"
+     left_pad="0"
+     name="save"
+     top_delta="-13"
+     width="70"/>
+    <button
+     follows="bottom|right"
+     height="23"
+     label="Cancel"
+     layout="topleft"
+     left_pad="15"
+     name="cancel"
+     top_delta="0"
+     width="70"/>
+ </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
new file mode 100644
index 0000000000..56233d91ee
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_edit_sky_preset.xml
@@ -0,0 +1,953 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ height="375"
+ layout="topleft"
+ name="Edit Sky Preset"
+ help_topic="sky_preset"
+ save_rect="true"
+ title="Edit Sky Preset"
+ width="840">
+
+    <string name="title_new">Create a New Sky Preset</string>
+    <string name="title_edit">Edit Sky Preset</string>
+    <string name="hint_new">Name your preset, adjust the controls to create it, and click "Save".</string>
+    <string name="hint_edit">To edit your sky preset, adjust the controls and click "Save".</string>
+    <string name="combo_label">-Select a preset-</string>
+
+    <text
+     follows="top|left|right"
+     height="10"
+     layout="topleft"
+     left="30"
+     name="hint"
+     top="25"
+     width="700">
+     To edit your preset, adjust the controls then click "Save"
+     </text>
+    <text
+     follows="top|left|right"
+     font="SansSerif"
+     height="10"
+     layout="topleft"
+     left="30"
+     name="label"
+     top_pad="25"
+     width="120">
+        Preset Name:
+    </text>
+    <combo_box
+     allow_text_entry="true"
+     follows="top|left"
+     layout="topleft"
+     left_pad="10"
+     max_chars="100"
+     name="sky_preset_combo"
+     top_delta="-5"
+     width="200"/>
+    <line_editor
+     height="20"
+     left_delta="0"
+     name="sky_preset_name"
+     top_delta="0"
+     width="200" />
+    <text
+     follows="top|left|right"
+     height="40"
+     layout="topleft"
+     left_pad="10"
+     name="note"
+     top_delta="0"
+     width="405"
+     wrap="true">
+     Note: if you change the name of your preset, you will be creating a new preset and the existing preset will not be changed.
+    </text>
+ <!--======== Controls panel ========-->
+    <view_border
+     bevel_style="none"
+     follows="top|left"
+     height="203"
+     layout="topleft"
+     left="25"
+     name="panel_water_preset"
+     top="122"
+     visible="true"
+     width="790"/>
+    <tab_container
+     follows="left|top"
+     height="225"
+     halign="center"
+     layout="topleft"
+     left="22"
+     name="WindLight Tabs"
+     tab_position="top"
+     top="101"
+     width="794">
+    <panel
+     border="true"
+     bevel_style="none"
+     follows="left|top|right|bottom"
+     height="196"
+     label="ATMOSPHERE"
+     layout="topleft"
+     left="1"
+     help_topic="sky_preset_atmosphere"
+     mouse_opaque="false"
+     name="Atmosphere"
+     top="60"
+     width="698">
+
+         <!--======== Tab Panel I. I conlumn of controls ========--> 
+
+        <text
+         type="string"
+         length="1"
+         follows="left|top"
+         font="SansSerif"
+         height="16"
+         layout="topleft"
+         left="40"
+         name="BHText"
+         top="25"
+         width="200">
+           Blue Horizon
+        </text>
+        <color_swatch
+         can_apply_immediately="true"
+         follows="left|top"
+         height="37"
+         label_height="0"
+         layout="topleft"
+         left_delta="0"
+         name="WLBlueHorizon"
+         top_pad="6"
+         width="60" />
+        <text
+         type="string"
+         length="1"
+         follows="left|top"
+         font="SansSerif"
+         height="16"
+         layout="topleft"
+         left_delta="0"
+         top_pad="20"
+         name="BDensText"
+         width="200">
+            Haze Horizon
+        </text>
+        <slider
+         control_name="WLHazeHorizon"
+         decimal_digits="2"
+         follows="left|top"
+         height="10"
+         increment="0.01"
+         initial_value="0.25"
+         layout="topleft"
+         left_delta="0"
+         top_pad="6"
+         name="WLHazeHorizon"
+         width="200" />
+
+         <!--======== Tab Panel I. II conlumn of controls ========-->
+
+        <text
+         type="string"
+         length="1"
+         follows="left|top"
+         font="SansSerif"
+         height="16"
+         layout="topleft"
+         left_pad="55"
+         name="BDensText2"
+         top="25"
+         width="200">
+            Blue Density
+        </text>
+        <color_swatch
+         can_apply_immediately="true"
+         follows="left|top"
+         height="37"
+         label_height="0"
+         layout="topleft"
+         left_delta="0"
+         name="WLBlueDensity"
+         top_pad="6"
+         width="60" />
+        <text
+         type="string"
+         length="1"
+         follows="left|top"
+         font="SansSerif"
+         height="16"
+         layout="topleft"
+         left_delta="0"
+         name="HDText"
+         top_pad="20"
+         width="200">
+            Haze Density
+        </text>
+        <slider
+         control_name="WLHazeDensity"
+         decimal_digits="2"
+         follows="left|top"
+         height="10"
+         increment="0.01"
+         initial_value="0.7"
+         layout="topleft"
+         left_delta="0"
+         max_val="4"
+         name="WLHazeDensity"
+         top_pad="6"
+         width="200" />
+
+             <!--======== Tab Panel I. III conlumn of controls ========-->
+
+        <text
+         type="string"
+         length="1"
+         follows="left|top"
+         font="SansSerif"
+         height="16"
+         layout="topleft"
+         left_pad="55"
+         name="DensMultText"
+         top="25"
+         width="200">
+           Density Multiplier
+        </text>
+            <slider
+             control_name="WLDensityMult"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="0.1"
+             layout="topleft"
+             left_delta="15"
+             max_val="0.9"
+             name="WLDensityMult"
+             top_pad="6"
+             width="200" />
+            
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_delta="-15"
+             name="WLDistanceMultText"
+             top_pad="20"
+             width="200">
+                Distance Multiplier
+            </text>
+            <slider
+             control_name="WLDistancMult"
+             decimal_digits="1"
+             follows="left|top"
+             height="10"
+             initial_value="1.0"
+             layout="topleft"
+             left_delta="15"
+             max_val="100"
+             name="WLDistanceMult"
+             top_pad="6"
+             width="200" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_delta="-15"
+             name="MaxAltText"
+             top_pad="20"
+             width="200">
+                Max Altitude
+            </text>
+            <slider
+             control_name="WLMaxAltitude"
+             decimal_digits="0"
+             follows="left|top"
+             height="10"
+             increment="1"
+             initial_value="500"
+             layout="topleft"
+             left_delta="15"
+             max_val="4000"
+             name="WLMaxAltitude"
+             top_pad="6"
+             width="200" />
+        </panel>
+        <panel
+         border="true"
+         bevel_style="none"
+         follows="left|top|right|bottom"
+         height="196"
+         label="LIGHTING"
+         layout="topleft"
+         left_delta="0"
+         help_topic="sky_preset_lighting"
+         name="Lighting"
+         top_delta="4"
+         width="698">
+
+         <!--======== Tab Panel II. I conlumn of controls ========-->
+
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left="20"
+             name="SLCText"
+             top="25"
+             width="150">
+                Sun/Moon Color
+            </text>
+            <color_swatch
+             can_apply_immediately="true"
+             follows="left|top"
+             height="37"
+             label_height="0"
+             layout="topleft"
+             left_delta="10"
+             name="WLSunlight"
+             top_pad="6"
+             width="60" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_delta="-10"
+             name="WLAmbientText"
+             top_pad="20"
+             width="150">
+                Ambient
+            </text>
+            <color_swatch
+             can_apply_immediately="true"
+             follows="left|top"
+             height="37"
+             label_height="0"
+             layout="topleft"
+             left_delta="10"
+             name="WLAmbient"
+             top_pad="6"
+             width="60" />
+
+            <!--======== Tab Panel II. II conlumn of controls ========-->
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_pad="100"
+             name="SunGlowText"
+             top="25"
+             width="200">
+                Sun Glow
+            </text>
+            <slider
+             control_name="WLGlowB"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="0.1"
+             label="Focus "
+             layout="topleft"
+             left_delta="10"
+             max_val="0.5"
+             name="WLGlowB"
+             top_pad="6"
+             width="200" />
+            <slider
+             control_name="WLGlowR"
+             decimal_digits="2"
+             follows="top|left"
+             height="10"
+             increment="0.01"
+             initial_value="0.25"
+             label="Size    "
+             layout="topleft"
+             left_delta="0"
+             max_val="1.99"
+             min_val="1"
+             name="WLGlowR"
+             top_pad="6"
+             width="200" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_delta="-10"
+             name="WLStarText"
+             top_pad="20"
+             width="200">
+                Star Brightness
+            </text>
+            <slider
+             control_name="WLStarAlpha"
+             decimal_digits="2"
+             follows="top|left"
+             height="10"
+             increment="0.01"
+             initial_value="0"
+             layout="topleft"
+             left_delta="10"
+             max_val="2"
+             name="WLStarAlpha"
+             top_pad="6"
+             width="200" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_delta="-10"
+             name="SceneGammaText"
+             top_pad="20"
+             width="200">
+                Scene Gamma
+            </text>
+            <slider
+             control_name="WLGamma"
+             decimal_digits="2"
+             follows="top|left"
+             height="10"
+             increment="0.01"
+             initial_value="2.0"
+             layout="topleft"
+             left_delta="10"
+             max_val="10"
+             name="WLGamma"
+             top_pad="6"
+             width="200" />
+
+            <!--======== Tab Panel II. III conlumn of controls ========-->
+
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_pad="60"
+             name="TODText"
+             top="25"
+             width="200">
+                Sun/Moon Position
+            </text>
+            <multi_slider
+             can_edit_text="true"
+             control_name="WLSunPos"
+             decimal_digits="0"
+             follows="bottom"
+             height="10"
+             increment="0.0833333"
+             initial_value="0"
+             layout="topleft"
+             left_delta="0"
+             max_sliders="1"
+             max_val="24"
+             name="WLSunPos"
+             show_text="false"
+             top_pad="0"
+             width="300" />
+
+            <text
+             type="string"
+             length="1"
+             border_visible="true"
+             follows="left|top|right"
+             font="SansSerif"
+             height="14"
+             layout="topleft"
+             left_delta="2"
+             name="WL12amHash"
+             top_pad="6"
+             width="6">
+                |
+            </text>
+            <text
+             type="string"
+             length="1"
+             border_visible="true"
+             follows="left|top|right"
+             font="SansSerif"
+             height="14"
+             layout="topleft"
+             left_pad="66"
+             name="WL6amHash"
+             top_delta="0"
+             width="6">
+                |
+            </text>
+            <text
+             type="string"
+             length="1"
+             border_visible="true"
+             follows="left|top|right"
+             font="SansSerif"
+             height="14"
+             layout="topleft"
+             left_pad="67"
+             name="WL12pmHash2"
+             top_delta="0"
+             width="6">
+                |
+            </text>
+            <text
+             type="string"
+             length="1"
+             border_visible="true"
+             follows="left|top|right"
+             font="SansSerif"
+             height="14"
+             layout="topleft"
+             left_pad="67"
+             name="WL6pmHash"
+             top_delta="0"
+             width="6">
+                |
+            </text>
+            <text
+             type="string"
+             length="1"
+             border_visible="true"
+             follows="left|top|right"
+             font="SansSerif"
+             height="14"
+             layout="topleft"
+             left_pad="67"
+             name="WL12amHash2"
+             top_delta="0"
+             width="6">
+             |
+            </text>
+
+
+            <text
+             type="string"
+             length="1"
+             border_visible="true"
+             follows="left|top|right"
+             height="16"
+             layout="topleft"
+             left_delta="-300"
+             name="WL12am"
+             top="74"
+             width="55">
+             12am
+            </text>
+            <text
+             type="string"
+             length="1"
+             border_visible="true"
+             follows="left|top|right"
+             height="16"
+             layout="topleft"
+             left_pad="20"
+             name="WL6am"
+             top_delta="0"
+             width="55">
+                6am
+            </text>
+            <text
+             type="string"
+             length="1"
+             border_visible="true"
+             follows="left|top|right"
+             height="16"
+             layout="topleft"
+             left_pad="15"
+             name="WL12pmHash"
+             top_delta="0"
+             width="55">
+                12pm
+            </text>
+            <text
+             type="string"
+             length="1"
+             border_visible="true"
+             follows="left|top|right"
+             height="16"
+             layout="topleft"
+             left_pad="18"
+             name="WL6pm"
+             top_delta="0"
+             width="55">
+                6pm
+            </text>
+            <text
+             type="string"
+             length="1"
+             border_visible="true"
+             follows="left|top|right"
+             height="16"
+             layout="topleft"
+             left_pad="15"
+             name="WL12am2"
+             top_delta="0"
+             width="55">
+                12am
+            </text>
+
+            <time
+             follows="left|top"
+             height="16"
+             label_width="0"
+             layout="topleft"
+             left_delta="-175"
+             name="WLDayTime"
+             top_pad="15"
+             value="6:00 AM"
+             width="75"/> 
+
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_delta="-106"
+             name="WLEastAngleText"
+             top_pad="24"
+             width="200">
+                East Angle
+            </text>
+            <slider
+             control_name="WLEastAngle"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="0.0"
+             layout="topleft"
+             left_delta="10"
+             name="WLEastAngle"
+             top_pad="6"
+             width="200" />
+
+        </panel>
+        <panel
+         border="true"
+         bevel_style="none"
+         follows="left|top|right|bottom"
+         height="196"
+         label="CLOUDS"
+         layout="topleft"
+         left_delta="0"
+         mouse_opaque="false"
+         help_topic="sky_preset_clouds"
+         name="Clouds"
+         top_delta="4"
+         width="698">
+
+            <!--======== Tab Panel III. I conlumn of controls ========-->
+
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left="40"
+             name="WLCloudColorText"
+             top="25"
+             width="200">
+                Cloud Color
+            </text>
+            <color_swatch
+             can_apply_immediately="true"
+             follows="left|top"
+             height="37"
+             label_height="0"
+             layout="topleft"
+             left_delta="0"
+             name="WLCloudColor"
+             top_pad="6"
+             width="60" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_delta="0"
+             name="WLCloudColorText2"
+             top_pad="20"
+             width="200">
+                Cloud XY/Density
+            </text>
+            <slider
+             control_name="WLCloudX"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="0.5"
+             label="X"
+             layout="topleft"
+             left_delta="0"
+             top_pad="6"
+             name="WLCloudX"
+             width="200" />
+            <slider
+             control_name="WLCloudY"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="0.5"
+             label="Y"
+             layout="topleft"
+             left_delta="0"
+             top_pad="6"
+             name="WLCloudY"
+             width="200" />
+            <slider
+             control_name="WLCloudDensity"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="1.0"
+             label="D"
+             layout="topleft"
+             left_delta="0"
+             name="WLCloudDensity"
+             top_pad="6"
+             width="200" />
+            
+            <!--======== Tab Panel III. II conlumn of controls ========-->
+            
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_pad="55"
+             name="WLCloudCoverageText"
+             top="15"
+             width="200">
+                Cloud Coverage
+            </text>
+            <slider
+             control_name="WLCloudCoverage"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="0.5"
+             layout="topleft"
+             left_delta="15"
+             name="WLCloudCoverage"
+             top_pad="6"
+             width="200" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_delta="-15"
+             name="WLCloudScaleText"
+             top_pad="20"
+             width="200">
+                Cloud Scale
+            </text>
+            <slider
+             control_name="WLCloudScale"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="1.0"
+             layout="topleft"
+             left_delta="15"
+             min_val="0.01"
+             name="WLCloudScale"
+             top_pad="6"
+             width="200" />
+            
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_delta="-13"
+             name="WLCloudDetailText"
+             top_pad="20"
+             width="200">
+                Cloud Detail (XY/Density)
+            </text>
+            <slider
+             control_name="WLCloudDetailX"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="0.5"
+             label="X"
+             layout="topleft"
+             left_delta="0"
+             top_pad="6"
+             name="WLCloudDetailX"
+             width="200" />
+            <slider
+             control_name="WLCloudDetailY"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="0.5"
+             label="Y"
+             layout="topleft"
+             left_delta="0"
+             name="WLCloudDetailY"
+             top_pad="6"
+             width="200" />
+            <slider
+             control_name="WLCloudDetailDensity"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="1.0"
+             label="D"
+             layout="topleft"
+             left_delta="0"
+             name="WLCloudDetailDensity"
+             top_pad="6"
+             width="200" />
+            
+            <!--======== Tab Panel III. III conlumn of controls ========-->
+            
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_pad="55"
+             name="WLCloudScrollXText"
+             top="15"
+             width="150">
+                Cloud Scroll X
+            </text>
+            <check_box
+             control_name="WLCloudLockX"
+             follows="left|top"
+             height="16"
+             label="Lock"
+             layout="topleft"
+             left_delta="150"
+             name="WLCloudLockX"
+             top_delta="0"
+             width="200" />
+            <slider
+             control_name="WLCloudScrollX"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="0.5"
+             layout="topleft"
+             left_delta="-135"
+             max_val="10"
+             min_val="-10"
+             name="WLCloudScrollX"
+             top_pad="6"
+             width="200" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             font="SansSerif"
+             height="16"
+             layout="topleft"
+             left_delta="-15"
+             name="WLCloudScrollYText"
+             top_pad="20"
+             width="150">
+                Cloud Scroll Y
+            </text>
+            <check_box
+             control_name="WLCloudLockY"
+             follows="left|top"
+             height="16"
+             label="Lock"
+             layout="topleft"
+             left_delta="150"
+             name="WLCloudLockY"
+             width="200" />
+            <slider
+             control_name="WLCloudScrollY"
+             decimal_digits="2"
+             follows="left|top"
+             height="10"
+             increment="0.01"
+             initial_value="0.5"
+             layout="topleft"
+             left_delta="-135"
+             max_val="10"
+             min_val="-10"
+             name="WLCloudScrollY"
+             top_pad="6"
+             width="200" />
+        </panel>
+    </tab_container>
+<!--======== End of Controls panel ========-->
+
+    <check_box
+     follows="top|left"
+     height="10"
+     label="Make this preset my new sky setting"
+     layout="topleft"
+     left="380"
+     name="make_default_cb"
+     top_pad="30"
+     width="280"/>
+    <button
+     follows="bottom|right"
+     height="23"
+     label="Save"
+     layout="topleft"
+     left_pad="0"
+     name="save"
+     width="70"/>
+    <button
+     follows="bottom|right"
+     height="23"
+     label="Cancel"
+     layout="topleft"
+     left_pad="15"
+     name="cancel"
+     width="70"/>
+ </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/en/floater_edit_water_preset.xml
new file mode 100644
index 0000000000..905983e7fa
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_edit_water_preset.xml
@@ -0,0 +1,448 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ height="375"
+ layout="topleft"
+ name="Edit Water Preset"
+ help_topic="water_preset"
+ save_rect="true"
+ title="Edit Water Preset"
+ width="725">
+
+  <string name="title_new">Create a New Water Preset</string>
+  <string name="title_edit">Edit a Water Preset</string>
+  <string name="hint_new">Name your preset, adjust the controls to create it, and click "Save".</string>
+  <string name="hint_edit">To edit your water preset, adjust the controls and click "Save".</string>
+  <string name="combo_label">-Select a preset-</string>
+
+  <text
+   follows="top|left|right"
+   height="10"
+   layout="topleft"
+   left="30"
+   name="hint"
+   top="25"
+   width="680">
+   	To edit your preset, adjust the controls then click "Save"
+   </text>
+   
+   <text
+   follows="top|left|right"
+   font="SansSerif"
+   height="10"
+   layout="topleft"
+   left="30"
+   name="label"
+   top_pad="25"
+   width="120">
+   	Preset Name:
+   </text>
+   
+   <combo_box
+   	allow_text_entry="true"
+   	follows="top|left"
+   	layout="topleft"
+   	left_pad="10"
+   	max_chars="100"
+   	name="water_preset_combo"
+   	top_delta="-5"
+   	width="200"/>
+
+   <line_editor
+    height="20"
+    left_delta="0"
+    name="water_preset_name"
+    top_delta="0"
+    width="200" />
+   
+   <text
+   follows="top|left|right"
+   height="40"
+   layout="topleft"
+   left_pad="10"
+   name="note"
+   top_delta="0"
+   width="340"
+   wrap="true">
+   	Note: if you change the name of your preset, you will be creating a new preset and the existing preset will not be changed.
+   </text>
+ 
+ <!--======== Controls panel ========-->
+ <panel
+  border="false"
+  bevel_style="none"
+  follows="top|left"
+  height="230"
+  layout="topleft"
+  left="10"
+  name="panel_water_preset"
+  top="100"
+  width="700">
+ 
+<!--======== I conlumn of controls ========-->   
+   <text
+    follows="left|top|right"
+    height="10"
+    font="SansSerif"
+    layout="topleft"
+    left="10"    
+    name="water_color_label"
+    top="5"
+    width="215">
+       Water Fog Color
+   </text>
+   <color_swatch
+    can_apply_immediately="true"
+    follows="left|top"
+    height="37"
+    label_height="0"
+    layout="topleft"
+    left_delta="15"
+    name="WaterFogColor"
+    top_pad="8"
+    width="60" />
+    
+    
+   <text
+    follows="left|top|right"
+    font="SansSerif"
+    layout="topleft"
+    left_delta="-15"
+    top_pad="10"
+    name="water_fog_density_label"
+    width="215">
+    	Fog Density Exponent
+   </text>
+   <slider
+    decimal_digits="1"
+    follows="left|top"
+    height="10"
+    initial_value="0"
+    layout="topleft"
+    left_delta="15"
+    max_val="10"
+    name="WaterFogDensity"
+    top_pad="10"
+    width="200"/>
+    
+    
+   <text
+    follows="left|top|right"
+    font="SansSerif"
+    layout="topleft"
+    left_delta="-15"
+    top_pad="15"
+    name="underwater_fog_modifier_label"
+    width="215">
+    	Underwater Fog Modifier
+   </text>
+   <slider
+    decimal_digits="1"
+    follows="left|top"
+    height="10"
+    initial_value="0"
+    layout="topleft"
+    left_delta="15"
+    max_val="10"
+    name="WaterUnderWaterFogMod"
+    top_pad="10"
+    width="200"/>
+    
+    
+    <text
+     follows="left|top|right"
+     font="SansSerif"
+     layout="topleft"
+     left_delta="-15"
+     name="BHText"
+     top_pad="15"
+     width="215">
+        Big Wave Direction
+    </text>    
+    <slider
+     control_name="WaterWave1DirX"
+     decimal_digits="2"
+     follows="left|top"
+     increment="0.01"
+     initial_value="0.7"
+     label="X"
+     layout="topleft"             
+     max_val="4"
+     min_val="-4"
+     name="WaterWave1DirX"
+     top_pad="10"
+     width="216"/>    
+    <slider
+     control_name="WaterWave1DirY"
+     decimal_digits="2"
+     follows="left|top"
+     increment="0.01"
+     initial_value="0.7"
+     label="Y"
+     layout="topleft"
+     max_val="4"
+     min_val="-4"
+     name="WaterWave1DirY"
+     top_pad="5"
+     width="216"/>
+    
+<!--======== II conlumn of controls ========-->    
+    
+    <text
+     follows="left|top|right"
+     font="SansSerif"
+     height="10"
+     layout="topleft"
+     left_pad="20"
+     name="BDensText"
+     top="5"
+     width="215">
+        Reflection Wavelet Scale
+    </text>
+    <slider
+     control_name="WaterNormalScaleX"
+     decimal_digits="1"
+     follows="left|top"
+     initial_value="0.7"
+     layout="topleft"
+     left_delta="15"
+     max_val="10"
+     name="WaterNormalScaleX"
+     top_pad="10"
+     width="200"/>
+    <slider
+     control_name="WaterNormalScaleY"
+     decimal_digits="1"
+     follows="left|top"
+     initial_value="0.7"
+     layout="topleft"
+     max_val="10"
+     name="WaterNormalScaleY"
+     top_pad="6"
+     width="200"/>
+    <slider
+     control_name="WaterNormalScaleZ"
+     decimal_digits="1"
+     follows="left|top"
+     initial_value="0.7"
+     layout="topleft"
+     max_val="10"
+     name="WaterNormalScaleZ"
+     top_pad="6"
+     width="200"/>
+    
+    
+    <text
+     follows="left|top|right"
+     font="SansSerif"
+     layout="topleft"
+     left_delta="-15"
+     name="HDText"
+     top_pad="16"
+     width="215">
+        Fresnel Scale
+    </text>
+    <slider
+     control_name="WaterFresnelScale"
+     decimal_digits="2"
+     follows="left|top"
+     height="10"
+     increment="0.01"
+     initial_value="0.7"
+     layout="topleft"
+     left_delta="15"
+     name="WaterFresnelScale"
+     top_pad="10"
+     width="200"/>
+    <text
+     follows="left|top|right"
+     font="SansSerif"
+     layout="topleft"
+     left_delta="-15"
+     name="FresnelOffsetText"
+     top_pad="15"
+     width="215">
+        Fresnel Offset
+    </text>
+    <slider
+     control_name="WaterFresnelOffset"
+     decimal_digits="2"
+     follows="left"
+     increment="0.01"
+     initial_value="0.7"
+     layout="topleft"
+     left_delta="15"
+     name="WaterFresnelOffset"
+     top_pad="10"
+     width="200"/>
+     
+     
+     <text
+      follows="left|top|right"
+      font="SansSerif"
+      layout="topleft"
+      left_delta="-15"
+      name="BHText2"
+      top_pad="15"
+      width="215">
+         Little Wave Direction
+     </text>
+     <slider
+      control_name="WaterWave2DirX"
+      decimal_digits="2"
+      follows="left|top"
+      increment="0.01"
+      initial_value="0.7"
+      label="X"
+      layout="topleft"
+      max_val="4"
+      min_val="-4"
+      name="WaterWave2DirX"
+      top_pad="10"
+      width="216" />
+     <slider
+      control_name="WaterWave2DirY"
+      decimal_digits="2"
+      follows="left|top"
+      increment="0.01"
+      initial_value="0.7"
+      label="Y"
+      layout="topleft"
+      max_val="4"
+      min_val="-4"
+      name="WaterWave2DirY"
+      top_pad="6"
+      width="216" />
+
+<!--======== III conlumn of contorls ========-->
+
+	 <text
+      follows="left|top|right"
+      font="SansSerif"
+      height="16"
+      layout="topleft"
+      left_pad="20"
+      name="DensMultText"
+      top="5"
+      width="215">
+         Refract Scale Above
+     </text>
+     <slider
+      control_name="WaterScaleAbove"
+      decimal_digits="2"
+      follows="left|top"
+      increment="0.01"
+      initial_value="0.1"
+      layout="topleft"
+      left_delta="15"
+      name="WaterScaleAbove"
+      top_pad="5"
+      width="200" />
+     
+     <text
+      type="string"
+      length="1"
+      follows="left|top|right"
+      font="SansSerif"
+      height="16"
+      layout="topleft"
+      left_delta="-15"
+      name="WaterScaleBelowText"
+      top_pad="15"
+      width="215">
+         Refract Scale Below
+     </text>
+     <slider
+      control_name="WaterScaleBelow"
+      decimal_digits="2"
+      follows="left|top"
+      height="10"
+      increment="0.01"
+      initial_value="0"
+      layout="topleft"
+      left_delta="15"
+      name="WaterScaleBelow"
+      top_pad="5"
+      width="200"/>
+     
+     <text
+      follows="left|top|right"
+      font="SansSerif"
+      height="16"
+      layout="topleft"
+      left_delta="-15"
+      name="MaxAltText"
+      top_pad="15"
+      width="215">
+         Blur Multiplier
+     </text>
+     <slider
+      control_name="WaterBlurMult"
+      follows="left|top"
+      height="10"
+      increment="0.001"
+      initial_value="0"
+      layout="topleft"
+      left_delta="15"
+      max_val="0.16"
+      name="WaterBlurMult"
+      top_pad="5"
+      width="200"/>
+      
+      <text
+       follows="left|top|right"
+       font="SansSerif"
+       height="16"
+       layout="topleft"
+       left_delta="-15"
+       name="BHText3"
+       top_pad="15"
+       width="215">
+          Normal Map
+      </text>
+      <texture_picker
+       height="80"
+       layout="topleft"
+       left_delta="15"
+       name="WaterNormalMap"
+       top_pad="5"
+       width="100" />
+	</panel>
+<!--======== End of Controls panel ========-->	
+
+    <view_border
+     bevel_style="none"
+     follows="top|left"
+     height="0"
+     layout="topleft"
+     left="10"
+     name="horiz_separator"
+     top_pad="5"
+     width="700"/>
+	<check_box
+	 follows="top|left"
+	 height="10"
+	 label="Make this preset my new water setting"
+	 layout="topleft"
+	 left="275"
+	 name="make_default_cb"
+	 top_pad="20"
+	 width="280"/>
+	<button
+	 follows="bottom|right"
+	 height="23"
+	 label="Save"
+	 layout="topleft"
+	 left_pad="0"
+	 name="save"
+	 width="70"/>	 
+	<button
+	 follows="bottom|right"
+	 height="23"
+	 label="Cancel"
+	 layout="topleft"
+	 left_pad="15"
+	 name="cancel"
+	 width="70"/>
+	
+ </floater>
diff --git a/indra/newview/skins/default/xui/en/floater_environment_settings.xml b/indra/newview/skins/default/xui/en/floater_environment_settings.xml
new file mode 100644
index 0000000000..1b1cafaca6
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/floater_environment_settings.xml
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<floater
+ legacy_header_height="18"
+ height="328"
+ layout="topleft"
+ name="Environment Editor Floater"
+ help_topic="environment_editor_floater"
+ save_rect="true"
+ title="ENVIRONMENT SETTINGS"
+ width="540">
+
+ <text
+  follows="top|left|right"
+  height="15"
+  layout="topleft"
+  left="20"
+  name="note"
+  top="25"
+  width="510"
+  wrap="true">
+  Use the options below to customize the environment settings for your viewer.
+ </text>
+
+ <view_border
+  bevel_style="none"  
+  follows="top|left"
+  height="237"
+  layout="topleft"
+  left="20"
+  name="border"
+  top_pad="8"
+  width="500"/>  
+ <radio_group
+  follows="top|left"
+  height="45"
+  layout="topleft"
+  left_delta="10"
+  name="region_settings_radio_group"
+  top_delta="20"
+  width="200">
+    <radio_item
+  	 label="Use region settings"
+  	 layout="topleft"
+  	 name="use_region_settings"/>
+    <radio_item
+  	 label="Customize my environment"
+  	 layout="topleft"
+  	 name="use_my_settings"
+  	 top_pad="20"/>
+  </radio_group>
+
+ <panel
+  height="170"
+  layout="topleft"
+  left="50"
+  name="user_environment_settings"
+  top_pad="0"
+  width="470">
+
+ <text
+  follows="top|left|right"
+  font="SansSerifItalic"
+  height="15"
+  layout="topleft"
+  left_delta="0"
+  name="note"
+  top_pad="0"
+  width="470"
+  wrap="true">
+  Note: your custom settings will not be visible to other users.
+ </text>
+
+ <!-- Water Setting -->
+ <text
+  name="water_settings_title"
+  follows="top|left"
+  height="16"
+  layout="topleft"
+  left="50"
+  top="40"
+  width="200">
+  		Water Setting
+  </text>
+  <combo_box
+   follows="top|left"
+   left_pad="2"
+   name="water_settings_preset_combo"
+   top_delta="-5"
+   width="200">
+      <combo_box.item
+       label="-Select a preset-"
+       name="item0"/>
+  </combo_box>
+ 
+
+ <!-- Sky/Day Cycle Settings -->  
+ <text
+  name="sky_dayc_settings_title"
+  follows="top|left"
+  height="16"
+  layout="topleft"
+  left="50"
+  top_pad="20"
+  width="100">
+  		Sky / Day Cycle
+  </text>
+  <radio_group
+   layout="topleft"
+   left_delta="50"
+   name="sky_dayc_settings_radio_group"
+   top_pad="10"
+   height="50"
+   width="150">
+  	<radio_item
+  	 layout="topleft"
+  	 label="Fixed sky"
+  	 name="my_sky_settings"/>
+  	<radio_item
+  	 layout="topleft"
+  	 label="Day cycle"
+  	 name="my_dayc_settings"
+  	 top_pad="25"/>  	
+  </radio_group>
+  <combo_box
+   follows="top|left"
+   left_pad="2"
+   name="sky_settings_preset_combo"
+   top_delta="-7"
+   width="200">
+      <combo_box.item
+       label="-Select a preset-"
+       name="item0"/>
+  </combo_box>
+  <combo_box
+   follows="top|left"
+   name="dayc_settings_preset_combo"
+   top_delta="36"
+   width="200">
+      <combo_box.item
+       label="-Select a preset-"
+       name="item0"/>
+  </combo_box>
+  </panel>
+
+  <button
+   follows="left|top"
+   height="23"
+   label="OK"
+   layout="topleft"
+   right="-130"
+   name="ok_btn"
+   top_pad="10"
+   width="100" />
+  <button
+   follows="left|top"
+   height="23"
+   label="Cancel"
+   layout="topleft"
+   left_pad="10"
+   name="cancel_btn"
+   width="100" />	
+</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_region_info.xml b/indra/newview/skins/default/xui/en/floater_region_info.xml
index 32fb6f97e7..3b58cd08f6 100644
--- a/indra/newview/skins/default/xui/en/floater_region_info.xml
+++ b/indra/newview/skins/default/xui/en/floater_region_info.xml
@@ -16,5 +16,5 @@
      name="region_panels"
      right="-1"
      tab_position="top"
-     top="20" />
+     top="20"/>
 </floater>
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index a0d0c8625e..317c6fe9ac 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -480,7 +480,7 @@
 
         <menu_item_separator/>
 
-    <menu
+        <menu
          create_jump_keys="true"
          label="Sun"
          name="Environment Settings"
@@ -515,24 +515,105 @@
                  function="World.EnvSettings"
                  parameter="midnight" />
             </menu_item_call>
-            <menu_item_call
-             label="Estate Time"
-             name="Revert to Region Default">
-                <menu_item_call.on_click
-                 function="World.EnvSettings"
-                 parameter="default" />
-            </menu_item_call>
-
-            <menu_item_separator/>
-
-            <menu_item_call
-             label="Environment Editor"
-             name="Environment Editor">
-                <menu_item_call.on_click
-                 function="World.EnvSettings"
-                 parameter="editor" />
-            </menu_item_call>
         </menu>
+	    
+   
+	    <menu
+	     create_jump_keys="true"
+	     label="Enviroment Editor"
+	     name="Enviroment Editor"
+	     tear_off="true">
+	     	
+	     	<menu_item_call
+	     	 label="Enviroment Settings..."
+	     	 name="Enviroment Settings">
+	     	 	<menu_item_call.on_click
+	     	 	 function="World.EnvSettings"
+                 parameter="editor"/>
+	     	</menu_item_call>
+	     	
+	     	<menu_item_separator/>
+	     	
+	     	<menu
+	     	 name="Water Presets"
+	     	 label="Water Presets">
+	     	 	<menu_item_call
+	     	 	 label="New preset..."
+	     	 	 name="new_water_preset">
+	     	 	 	<menu_item_call.on_click
+	     	 	 	function="World.EnvPreset"
+	     	 	 	parameter="new_water"/>
+	     	 	</menu_item_call>
+	     	 	<menu_item_call
+	     	 	 label="Edit preset..."
+	     	 	 name="edit_water_preset">
+	     	 	 	<menu_item_call.on_click
+	     	 	 	function="World.EnvPreset"
+	     	 	 	parameter="edit_water"/>
+	     	 	</menu_item_call>
+	     	 	<menu_item_call
+	     	 	 label="Delete preset..."
+	     	 	 name="delete_water_preset">
+	     	 	 	<menu_item_call.on_click
+	     	 	 	function="World.EnvPreset"
+	     	 	 	parameter="delete_water"/>
+	     	 	</menu_item_call>
+	     	</menu>
+	     	
+	     	<menu
+	     	 name="Sky Presets"
+	     	 label="Sky Presets">
+	     	 	<menu_item_call
+	     	 	 label="New preset..."
+	     	 	 name="new_sky_preset">
+	     	 	 	<menu_item_call.on_click
+	     	 	 	function="World.EnvPreset"
+	     	 	 	parameter="new_sky"/>
+	     	 	</menu_item_call>
+	     	 	<menu_item_call
+	     	 	 label="Edit preset..."
+	     	 	 name="edit_sky_preset">
+	     	 	 	<menu_item_call.on_click
+	     	 	 	function="World.EnvPreset"
+	     	 	 	parameter="edit_sky"/>
+	     	 	</menu_item_call>
+	     	 	<menu_item_call
+	     	 	 label="Delete preset..."
+	     	 	 name="delete_sky_preset">
+	     	 	 	<menu_item_call.on_click
+	     	 	 	function="World.EnvPreset"
+	     	 	 	parameter="delete_sky"/>
+	     	 	</menu_item_call>
+	     	</menu>
+	     	
+	     	<menu
+	     	 name="Day Presets"
+	     	 label="Day Presets">
+	     	 	<menu_item_call
+	     	 	 label="New preset..."
+	     	 	 name="new_day_preset">
+	     	 	 	<menu_item_call.on_click
+	     	 	 	function="World.EnvPreset"
+	     	 	 	parameter="new_day_cycle"/>
+	     	 	</menu_item_call>
+	     	 	<menu_item_call
+	     	 	 label="Edit preset..."
+	     	 	 name="edit_day_preset">
+	     	 	 	<menu_item_call.on_click
+	     	 	 	function="World.EnvPreset"
+	     	 	 	parameter="edit_day_cycle"/>
+	     	 	</menu_item_call>
+	     	 	<menu_item_call
+	     	 	 label="Delete preset..."
+	     	 	 name="delete_day_preset">
+	     	 	 	<menu_item_call.on_click
+	     	 	 	function="World.EnvPreset"
+	     	 	 	parameter="delete_day_cycle"/>
+	     	 	</menu_item_call>
+	     	</menu>
+	    </menu>
+    
+    
     </menu>
     <menu
      create_jump_keys="true"
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index db1cee5d08..4ef64269e8 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -4852,18 +4852,6 @@ Do you wish to overwrite the saved preset?
      yestext="Yes"/>
   </notification>
 
-  <notification
-   icon="alertmodal.tga"
-   name="WLDeletePresetAlert"
-   type="alertmodal">
-Do you wish to delete [SKY]?
-    <tag>confirm</tag>
-    <usetemplate
-     name="okcancelbuttons"
-     notext="No"
-     yestext="Yes"/>
-  </notification>
-
   <notification
    icon="alertmodal.tga"
    name="WLNoEditDefault"
@@ -4882,81 +4870,53 @@ This day cycle file references a missing sky file: [SKY].
 
   <notification
    icon="alertmodal.tga"
-   name="PPSaveEffectAlert"
+   name="WLRegionApplyFail"
    type="alertmodal">
-PostProcess Effect exists. Do you still wish overwrite it?
-    <usetemplate
-     name="okcancelbuttons"
-     notext="No"
-     yestext="Yes"/>
-  </notification>
-
-  <notification
-   icon="alert.tga"
-   name="NewSkyPreset"
-   type="alert">
-Give me a name for the new sky.
-    <tag>confirm</tag>
-    <form name="form">
-      <input name="message" type="text">
-New Preset
-      </input>
-      <button
-       default="true"
-       index="0"
-       name="OK"
-       text="OK"/>
-      <button
-       index="1"
-       name="Cancel"
-       text="Cancel"/>
-    </form>
+Sorry, the settings couldn't be applied to the region.  Leaving the region and then returning may help rectify the problem.  The reason given was: [FAIL_REASON]
   </notification>
 
   <notification
+   functor="GenericAcknowledge"
    icon="alertmodal.tga"
-   name="ExistsSkyPresetAlert"
+   name="EnvCannotDeleteLastDayCycleKey"
    type="alertmodal">
-Preset already exists!
-  <tag>fail</tag>
+Unable to delete the last key in this day cycle because you cannot have an empty day cycle.  You should modify the last remaining key instead of attempting to delete it and then to create a new one.
+    <usetemplate
+     name="okbutton"
+     yestext="OK"/>
   </notification>
 
   <notification
-   icon="alert.tga"
-   name="NewWaterPreset"
-   type="alert">
-Give me a name for the new water preset.
-    <tag>confirm</tag>
-    <form name="form">
-      <input name="message" type="text">
-New Preset
-      </input>
-      <button
-       default="true"
-       index="0"
-       name="OK"
-       text="OK"/>
-      <button
-       index="1"
-       name="Cancel"
-       text="Cancel"/>
-    </form>
+   functor="GenericAcknowledge"
+   icon="alertmodal.tga"
+   name="DayCycleTooManyKeyframes"
+   type="alertmodal">
+You cannot add any more keyframes to this day cycle.  The maximum number of keyframes for day cycles of [SCOPE] scope is [MAX].
+    <usetemplate
+     name="okbutton"
+     yestext="OK"/>
   </notification>
 
   <notification
+   functor="GenericAcknowledge"
    icon="alertmodal.tga"
-   name="ExistsWaterPresetAlert"
+   name="EnvUpdateRate"
    type="alertmodal">
-Preset already exists!
-  <tag>fail</tag>
+    You may only update region environmental settings every [WAIT] seconds.  Wait at least that long and then try again.
+    <usetemplate
+     name="okbutton"
+     yestext="OK"/>
   </notification>
 
   <notification
    icon="alertmodal.tga"
-   name="WaterNoEditDefault"
+   name="PPSaveEffectAlert"
    type="alertmodal">
-You cannot edit or delete a default preset.
-  <tag>fail</tag>
+PostProcess Effect exists. Do you still wish overwrite it?
+    <usetemplate
+     name="okcancelbuttons"
+     notext="No"
+     yestext="Yes"/>
   </notification>
 
   <notification
diff --git a/indra/newview/skins/default/xui/en/panel_region_environment.xml b/indra/newview/skins/default/xui/en/panel_region_environment.xml
new file mode 100644
index 0000000000..aa38c49fae
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_region_environment.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+
+<panel
+ border="true"
+ follows="top|left"
+ height="300"
+ label="Environment"
+ layout="topleft"
+ help_topic="panel_region_environment_tab"
+ name="panel_env_info"
+ width="530"> 
+ <text
+  name="water_settings_title"
+  follows="top|left"
+  height="30"
+  layout="topleft"
+  left="50"
+  top_pad="20"
+  width="430"
+  wrap="true">
+  Select the Water and Sky/Day Cycle Settings you would like all visitors to your region to see.  More info
+ </text> 
+ <view_border
+  bevel_style="none"
+  follows="top|left"
+  height="237"
+  layout="topleft"
+  left="50"
+  name="border"
+  top="60"
+  width="430"/>
+ <radio_group
+  follows="top|left"
+  height="45"
+  layout="topleft"
+  left_delta="10"
+  name="region_settings_radio_group"
+  top_delta="20"
+  width="200">
+  <radio_item
+   label="Use Second Life default"
+   layout="topleft"
+   name="use_sl_default_settings"/>
+  <radio_item
+   label="Use the following settings"
+   layout="topleft"
+   name="use_my_settings"
+   top_pad="20"/>
+  </radio_group>
+ <panel
+  follows="top|left"
+  height="150"
+  layout="topleft"
+  left="50"
+  name="user_environment_settings"
+  top_pad="20"
+  width="430">
+   <text
+    name="water_settings_title"
+    follows="top|left"
+    height="16"
+    layout="topleft"
+    left="50"
+    top_pad="0"
+    width="160">
+    Water Setting
+   </text>
+   <combo_box
+    follows="top|left"
+    left_pad="2"
+    name="water_settings_preset_combo"
+    top_delta="-7"
+    width="200">
+    <combo_box.item
+     label="-Select a preset-"
+     name="item0"/>
+   </combo_box>
+   <text
+    name="sky_dayc_settings_title"
+    follows="top|left"
+    height="16"
+    layout="topleft"
+    left="50"
+    top_pad="30"
+    width="100">
+    Sky / Day Cycle
+   </text>
+   <radio_group
+    layout="topleft"
+    left_delta="50"
+    name="sky_dayc_settings_radio_group"
+    top_pad="10"
+    height="50"
+    width="110">
+    <radio_item
+     layout="topleft"
+     label="Fixed sky"
+     name="my_sky_settings"/>
+    <radio_item
+     layout="topleft"
+     label="Day cycle"
+     name="my_dayc_settings"
+     top_pad="25"/>  	
+    </radio_group>
+   <combo_box
+    follows="top|left"
+    left_pad="2"
+    name="sky_settings_preset_combo"
+    top_delta="-7"
+    width="200">
+    <combo_box.item
+     label="-Select a preset-"
+     name="item0"/>
+   </combo_box>
+   <combo_box
+    follows="top|left"
+    name="dayc_settings_preset_combo"
+    top_delta="36"
+    width="200">
+    <combo_box.item
+     label="-Select a preset-"
+     name="item0"/>
+   </combo_box>
+ </panel>
+ <button
+  follows="left|top"
+  height="23"
+  label="Apply"
+  layout="topleft"
+  right="-160"
+  name="apply_btn"
+  top_pad="10"
+  width="100" />
+ <button
+  follows="left|top"
+  height="23"
+  label="Cancel"
+  layout="topleft"
+  left_pad="10"
+  name="cancel_btn"
+  width="100" /> 
+ <loading_indicator
+  height="23"
+  left="50"
+  name="progress_indicator"
+  top_delta="0"
+  visible="false"
+  width="23" />
+</panel>
diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml
index 1307d807e2..450853993a 100644
--- a/indra/newview/skins/default/xui/en/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <panel
- border="false"
+ border="true"
  follows="top|left"
  height="510"
  help_topic="panel_region_estate_tab"
@@ -20,7 +20,7 @@
      name="estate_help_text"
      top="14"
      word_wrap="true"
-     width="300">
+     >
         Changes to settings on this tab will affect all regions in the estate.
     </text>
     <text
@@ -30,9 +30,10 @@
      font="SansSerif"
      height="20"
      layout="topleft"
-     left_delta="0"
+     right="160"
      name="estate_text"
      top_pad="2"
+     halign="right"
      width="140">
         Estate:
     </text>
@@ -43,9 +44,9 @@
      font="SansSerif"
      height="20"
      layout="topleft"
-     left_delta="0"
+     top_delta="0"
      name="estate_name"
-     top_delta="16"
+     left_pad="6"
      width="150">
         (unknown)
     </text>
@@ -56,9 +57,10 @@
      font="SansSerif"
      height="20"
      layout="topleft"
-     left_delta="0"
+     right="160"
      name="owner_text"
-     top_pad="2"
+     top_pad="6"
+     halign="right"
      width="150">
         Estate owner:
     </text>
@@ -69,66 +71,40 @@
      font="SansSerif"
      height="20"
      layout="topleft"
-     left_delta="0"
+     top_delta="0"
      name="estate_owner"
-     top_delta="16"
+     left_pad="6"
      use_ellipses="true"
      width="290">
         (unknown)
     </text>
-    <view_border
-     bevel_style="in"
-     follows="top|left"
-     height="270"
-     layout="topleft"
-     left_delta="-4"
-     top_pad="5"
-     width="300" />
+
     <check_box
      height="20"
-     label="Use Global Time"
+     label="Allow Public Access"
      layout="topleft"
-     left="12"
-     name="use_global_time_check"
-     top="132"
+     left="10"
+     name="externally_visible_check"
+     top_pad="6"
      width="200" />
+
     <check_box
      height="20"
-     label="Fixed Sun"
-     layout="topleft"
-     left="12"
-     name="fixed_sun_check"
-     top="152"
-     width="100" />
-    <icon
-     height="20"
-     image_name="icon_day_cycle.tga"
+     label="Allow Voice Chat"
      layout="topleft"
-     left="47"
-     name="daycycle"
-     top="177"
-     width="165" />
-    <slider
-     follows="left|top"
-     height="20"
-     increment="0.001"
-     label="Phase"
-     layout="topleft"
-     left="12"
-     max_val="30"
-     min_val="6"
-     name="sun_hour_slider"
-     show_text="false"
-     top="202"
+     left="280"
+     name="voice_chat_check"
+     top_delta="0"
      width="200" />
     <check_box
      height="20"
-     label="Allow Public Access"
+     label="Allow Direct Teleport"
      layout="topleft"
      left_delta="0"
-     name="externally_visible_check"
-     top_pad="6"
-     width="200" />
+     name="allow_direct_teleport"
+     top_pad="4"
+     width="80" />
+
     <text
      type="string"
      length="1"
@@ -137,7 +113,7 @@
      layout="topleft"
      left="32"
      name="Only Allow"
-     top="250"
+     top_delta="0"
      width="278">
         Restrict Access to accounts verified by:
     </text>
@@ -161,50 +137,6 @@
      tool_tip="Ban Residents who have not verified their age. See the [SUPPORT_SITE] for more information."
      top_pad="2"
      width="278" />
-    <check_box
-     height="20"
-     label="Allow Voice Chat"
-     layout="topleft"
-     left="12"
-     name="voice_chat_check"
-     top="304"
-     width="200" />
-    <check_box
-     height="20"
-     label="Allow Direct Teleport"
-     layout="topleft"
-     left="12"
-     name="allow_direct_teleport"
-     top_pad="4"
-     width="80" />
-    <button
-     enabled="false"
-     follows="left|top"
-     height="23"
-     label="Apply"
-     layout="topleft"
-     name="apply_btn"
-     top_pad="10"
-     left="110"
-     width="97" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Send Message To Estate..."
-     layout="topleft"
-     left="45"
-     name="message_estate_btn"
-     top_pad="20"
-     width="220" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Kick Resident from Estate..."
-     layout="topleft"
-     left="45"
-     name="kick_user_from_estate_btn"
-     top_pad="5"
-     width="220" />
 
     <text
      type="string"
@@ -214,16 +146,31 @@
      height="20"
      layout="topleft"
      name="estate_manager_label"
-     right="520"
+     top_pad="10"
+     left="10"
      width="200">
         Estate Managers:
     </text>
+    <text
+     type="string"
+     length="1"
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left="280"
+     name="allow_resident_label"
+     top_delta="0"
+     width="200">
+        Allowed Residents:
+    </text>
+
+    <!-- Estate Managers box -->
     <view_border
      bevel_style="none"
      follows="top|left"
      height="71"
      layout="topleft"
-     right="520"
+     left="10"
      top_pad="-5"
      width="200" />
     <name_list
@@ -235,43 +182,15 @@
      name="estate_manager_name_list"
      top_delta="0"
      width="200" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Remove..."
-     layout="topleft"
-     name="remove_estate_manager_btn"
-     right="520"
-     top_pad="5"
-     width="97" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Add..."
-     layout="topleft"
-     left_delta="-103"
-     name="add_estate_manager_btn"
-     top_delta="0"
-     width="97" />
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left_delta="0"
-     name="allow_resident_label"
-     top_pad="10"
-     width="200">
-        Allowed Residents:
-    </text>
+
+    <!-- Allowed Residents box -->
     <view_border
      bevel_style="none"
      follows="top|left"
      height="71"
      layout="topleft"
-     right="520"
-     top_pad="-5"
+     left="280"
+     top_delta="0"
      width="200" />
     <name_list
      follows="left|top"
@@ -282,42 +201,78 @@
      name="allowed_avatar_name_list"
      top_delta="0"
      width="200" />
+
+    <!-- Estate Managers buttons -->
+    <button
+     follows="left|top"
+     height="23"
+     label="Add..."
+     layout="topleft"
+     left="10"
+     name="add_estate_manager_btn"
+     top_pad="6"
+     width="97" />
     <button
      follows="left|top"
      height="23"
      label="Remove..."
      layout="topleft"
-     name="remove_allowed_avatar_btn"
-     right="520"
-     top_pad="5"
+     name="remove_estate_manager_btn"
+     left_pad="6"
      width="97" />
+
+    <!-- Allowed Residents buttons -->
     <button
      follows="left|top"
      height="23"
+     left="280"
      label="Add..."
      layout="topleft"
-     left_delta="-103"
      name="add_allowed_avatar_btn"
      top_delta="0"
      width="97" />
+    <button
+     follows="left|top"
+     height="23"
+     label="Remove..."
+     layout="topleft"
+     name="remove_allowed_avatar_btn"
+     left_pad="6"
+     top_delta="0"
+     width="97" />
+
     <text
      type="string"
      length="1"
      follows="left|top"
      height="20"
      layout="topleft"
-     left_delta="0"
+     left="10"
      name="allow_group_label"
      top_pad="10"
      width="200">
         Allowed Groups:
     </text>
+    <text
+     type="string"
+     length="1"
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left="280"
+     name="ban_resident_label"
+     top_delta="0"
+     width="200">
+        Banned Residents:
+    </text>
+
+    <!-- Allowed Groups box -->
     <view_border
      bevel_style="none"
      follows="top|left"
      height="71"
      layout="topleft"
-     right="520"
+     left="10"
      top_pad="-5"
      width="200" />
     <name_list
@@ -329,43 +284,15 @@
      name="allowed_group_name_list"
      top_delta="0"
      width="200" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Remove..."
-     layout="topleft"
-     name="remove_allowed_group_btn"
-     right="520"
-     top_pad="5"
-     width="97" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Add..."
-     layout="topleft"
-     left_delta="-103"
-     name="add_allowed_group_btn"
-     top_delta="0"
-     width="97" />
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left_delta="0"
-     name="ban_resident_label"
-     top_pad="10"
-     width="200">
-        Banned Residents:
-    </text>
+
+    <!-- Banned Residents box -->
     <view_border
      bevel_style="none"
      follows="top|left"
      height="71"
      layout="topleft"
-     right="520"
-     top_pad="-5"
+     left="280"
+     top_delta="0"
      width="200" />
     <name_list
      follows="left|top"
@@ -376,22 +303,64 @@
      name="banned_avatar_name_list"
      top_delta="0"
      width="200" />
+
+    <!-- Allowed Groups buttons -->
+    <button
+     follows="left|top"
+     height="23"
+     label="Add..."
+     layout="topleft"
+     left="10"
+     name="add_allowed_group_btn"
+     top_pad="6"
+     width="97" />
     <button
      follows="left|top"
      height="23"
      label="Remove..."
      layout="topleft"
-     name="remove_banned_avatar_btn"
-     right="520"
-     top_pad="5"
+     name="remove_allowed_group_btn"
+     left_pad="6"
+     top_delta="0"
      width="97" />
+
+    <!-- Banned Residents buttons -->
     <button
      follows="left|top"
      height="23"
      label="Add..."
      layout="topleft"
-     left_delta="-103"
+     left="280"
      name="add_banned_avatar_btn"
      top_delta="0"
      width="97" />
+    <button
+     follows="left|top"
+     height="23"
+     label="Remove..."
+     layout="topleft"
+     name="remove_banned_avatar_btn"
+     top_delta="0"
+     left_pad="6"
+     width="97" />
+
+    <button
+     follows="left|top"
+     height="23"
+     label="Send Message To Estate..."
+     layout="topleft"
+     left="10"
+     name="message_estate_btn"
+     top_pad="20"
+     width="220" />
+    <button
+     follows="left|top"
+     height="23"
+     label="Kick Resident from Estate..."
+     layout="topleft"
+     left="280"
+     name="kick_user_from_estate_btn"
+     top_delta="0"
+     width="220" />
+
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_region_terrain.xml b/indra/newview/skins/default/xui/en/panel_region_terrain.xml
index 5093c52129..bbb8b40594 100644
--- a/indra/newview/skins/default/xui/en/panel_region_terrain.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_terrain.xml
@@ -2,7 +2,7 @@
 <panel
  border="true"
  follows="top|left"
- height="320"
+ height="460"
  help_topic="panel_region_terrain_tab"
  label="Terrain"
  layout="topleft"
@@ -50,10 +50,10 @@
      label="Terrain Raise Limit"
      label_width="120"
      layout="topleft"
-     left="15"
+     left="240"
      max_val="100"
      name="terrain_raise_spin"
-     top="60"
+     top="40"
      width="180" />
     <spinner
      follows="left|top"
@@ -62,95 +62,336 @@
      label="Terrain Lower Limit"
      label_width="120"
      layout="topleft"
-     left="15"
+     left="240"
      max_val="0"
      min_val="-100"
      name="terrain_lower_spin"
-     top="80"
+     top="60"
      width="180" />
-    <check_box
+    <view_border
+     bevel_style="none"
+     follows="top|left"
+     height="60"
+     layout="topleft"
+     left="8"
+     top="30"
+     width="460" />
+    <text
+     type="string"
+     length="1"
+     follows="left|top"
      height="20"
-     label="Use Estate Sun"
      layout="topleft"
-     left="250"
-     name="use_estate_sun_check"
-     top="35"
+     left="10"
+     name="detail_texture_text"
+     top="110"
+     width="300">
+        Terrain Textures (requires 512x512, 24 bit .tga files)
+    </text>
+    <texture_picker
+     follows="left|top"
+     height="100"
+     layout="topleft"
+     left_delta="0"
+     name="texture_detail_0"
+     top_delta="20"
      width="100" />
-    <check_box
-     height="20"
-     label="Fixed Sun"
+    <texture_picker
+     follows="left|top"
+     height="100"
+     layout="topleft"
+     left_pad="10"
+     name="texture_detail_1"
+     top_delta="0"
+     width="100" />
+    <texture_picker
+     follows="left|top"
+     height="100"
+     layout="topleft"
+     left_pad="10"
+     name="texture_detail_2"
+     top_delta="0"
+     width="100" />
+    <texture_picker
+     follows="left|top"
+     height="100"
      layout="topleft"
-     left="250"
-     name="fixed_sun_check"
-     top="55"
+     left_pad="10"
+     name="texture_detail_3"
+     top_delta="0"
      width="100" />
-    <icon
+    <text
+     type="string"
+     length="1"
+     follows="left|top"
      height="20"
-     image_name="icon_day_cycle.tga"
      layout="topleft"
-     left="285"
-     name="daycycle"
-     top="80"
-     width="165" />
-    <slider
+     left="10"
+     name="height_text_lbl"
+     top_delta="90"
+     width="65">
+        1 (Low)
+    </text>
+    <text
+     type="string"
+     length="1"
      follows="left|top"
      height="20"
-     increment="0.001"
-     label="Phase"
      layout="topleft"
-     left="250"
-     max_val="30"
-     min_val="6"
-     name="sun_hour_slider"
-     show_text="false"
-     top="105"
-     width="200" />
-    <button
-     enabled="false"
+     left_pad="45"
+     name="height_text_lbl2"
+     top_delta="0"
+     width="100">
+        2
+    </text>
+    <text
+     type="string"
+     length="1"
      follows="left|top"
      height="20"
-     label="Apply"
      layout="topleft"
-     left="350"
-     name="apply_btn"
-     top="135"
-     width="90" />
-    <view_border
-     bevel_style="none"
-     follows="top|left"
-     height="130"
+     left_pad="10"
+     name="height_text_lbl3"
+     top_delta="0"
+     width="100">
+        3
+    </text>
+    <text
+     type="string"
+     length="1"
+     follows="left|top"
+     height="20"
      layout="topleft"
-     left="8"
-     top="30"
-     width="460" />
+     left_pad="10"
+     name="height_text_lbl4"
+     top_delta="0"
+     width="100">
+        4 (High)
+    </text>
+    <text
+     type="string"
+     length="1"
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left="10"
+     name="height_text_lbl5"
+     top_delta="30"
+     width="300">
+        Texture Elevation Ranges
+    </text>
+    <text
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left="10"
+     name="height_text_lbl10"
+     top_delta="30"
+     width="200"
+     word_wrap="true">
+      These values represent the blend range for the textures above.
+    </text>
+    <text
+       follows="left|top"
+       height="20"
+       layout="topleft"
+       left_delta="0"
+       name="height_text_lbl11"
+       top_delta="32"
+       width="200"
+       word_wrap="true">
+        Measured in meters, the LOW value is the MAXIMUM height of Texture #1, and the HIGH value is the MINIMUM height of Texture #4.
+    </text>
+    <text
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left="270"
+     name="height_text_lbl6"
+     top="250"
+     width="100">
+        Northwest
+    </text>
+    <text
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left_pad="10"
+     name="height_text_lbl7"
+     top_delta="0"
+     width="100">
+        Northeast
+    </text>
+<!--  northwest low-->
+     <spinner
+      follows="left|top"
+      height="20"
+      increment="0.5"
+      label="Low"
+      label_width="37"
+      layout="topleft"
+      left="230"
+      max_val="500"
+      min_val="-500"
+      name="height_start_spin_1"
+      top_delta="15"
+      width="100" />  
+<!--    northeast low-->
+      <spinner
+       follows="left|top"
+       height="20"
+       increment="0.5"
+       label="Low"
+       label_width="37"
+       layout="topleft"
+       left_pad="10"
+       max_val="500"
+       min_val="-500"
+       name="height_start_spin_3"
+       top_delta="0"
+       width="100" />
+<!--  northwest high-->
+     <spinner
+      follows="left|top"
+      height="20"
+      increment="0.5"
+      label="High"
+      label_width="37"
+      layout="topleft"
+      left="230"
+      max_val="500"
+      min_val="-500"
+      name="height_range_spin_1"
+      top_delta="20"
+      width="100" />
+<!--  northeast high-->
+    <spinner
+       follows="left|top"
+       height="20"
+       increment="0.5"
+       label="High"
+       label_width="37"
+       layout="topleft"
+       left_pad="10"
+       max_val="500"
+       min_val="-500"
+       name="height_range_spin_3"
+       top_delta="0"
+       width="100" />
+    <text
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left="270"
+     name="height_text_lbl8"
+     top_pad="10"
+     width="100">
+        Southwest
+    </text>
+    <text
+     follows="left|top"
+     height="20"
+     layout="topleft"
+     left_pad="10"
+     name="height_text_lbl9"
+     top_delta="0"
+     width="100">
+        Southeast
+    </text>
+<!--  southwest low-->
+    <spinner
+     follows="left|top"
+     height="20"
+     increment="0.5"
+     label="Low"
+     label_width="37"
+     layout="topleft"
+     left="230"
+     max_val="500"
+     min_val="-500"
+     name="height_start_spin_0"
+     top_delta="15"
+     width="100" />
+<!--  southeast low-->
+    <spinner
+     follows="left|top"
+     height="20"
+     increment="0.5"
+     label="Low"
+     label_width="37"
+     layout="topleft"
+     left_pad="10"
+     max_val="500"
+     min_val="-500"
+     name="height_start_spin_2"
+     top_delta="0"
+     width="100" />
+<!--southwest high-->
+    <spinner
+     follows="left|top"
+     height="20"
+     increment="0.5"
+     label="High"
+     label_width="37"
+     layout="topleft"
+     left="230"
+     max_val="500"
+     min_val="-500"
+     name="height_range_spin_0"
+     top_delta="20"
+     width="100" />
+<!--  southeast high-->
+    <spinner
+     follows="left|top"
+     height="20"
+     increment="0.5"
+     label="High"
+     label_width="37"
+     layout="topleft"
+     left_pad="10"
+     max_val="500"
+     min_val="-500"
+     name="height_range_spin_2"
+     top_delta="0"
+     width="100" />
+<!-- Terrain Download/Upload/Bake buttons -->
     <button
      follows="left|top"
      height="20"
      label="Download RAW terrain..."
      layout="topleft"
-     left_delta="2"
+     left="10"
      name="download_raw_btn"
      tool_tip="Available only to estate owners, not managers"
-     top_pad="60"
-     width="170" />
+     top="390"
+     width="160" />
     <button
      follows="left|top"
      height="20"
      label="Upload RAW terrain..."
      layout="topleft"
-     left="10"
+     left_pad="10"
+     top_delta="0"
      name="upload_raw_btn"
      tool_tip="Available only to estate owners, not managers"
-     top="243"
-     width="170" />
+     width="160" />
     <button
      follows="left|top"
      height="20"
      label="Bake Terrain"
      layout="topleft"
-     left="10"
+     left_pad="10"
      name="bake_terrain_btn"
      tool_tip="Set current terrain as mid-point for raise/lower limits"
-     top="283"
+     width="100" />
+    <button
+     enabled="true"
+     follows="left|top"
+     height="20"
+     label="Apply"
+     layout="topleft"
+     left_delta="0"
+     name="apply_btn"
+     top="430"
      width="100" />
 </panel>
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 143a989d32..09bff0a46c 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -2355,6 +2355,10 @@ Returns a string with the requested data about the region
 	<string name="GroupOwned">Group Owned</string>
 	<string name="Public">Public</string>
 
+	<!-- Environment settings -->
+	<string name="LocalSettings">Local Settings</string>
+	<string name="RegionSettings">Region Settings</string>
+
 	<!-- panel classified -->
 	<string name="ClassifiedClicksTxt">Clicks: [TELEPORT] teleport, [MAP] map, [PROFILE] profile</string>
 	<string name="ClassifiedUpdateAfterPublish">(will update after publish)</string>
diff --git a/indra/newview/skins/default/xui/en/widgets/time.xml b/indra/newview/skins/default/xui/en/widgets/time.xml
new file mode 100644
index 0000000000..b5bdd564a6
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/time.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<time text_enabled_color="LabelTextColor"
+         text_disabled_color="LabelDisabledColor"
+         font="SansSerifSmall"
+         label_width="40" >
+  <time.up_button name="SpinCtrl Up"
+                     image_unselected="Stepper_Up_Off"
+                     image_selected="Stepper_Up_Press"
+                     tab_stop="false"
+                     follows="left|bottom" />
+  <time.down_button name="SpinCtrl Down"
+                       image_unselected="Stepper_Down_Off"
+                       image_selected="Stepper_Down_Press"
+                       tab_stop="false"
+                       follows="left|bottom" />
+</time>
-- 
cgit v1.2.3


From 9f68a37524994f7eb81b7b0cdba23f8807908330 Mon Sep 17 00:00:00 2001
From: eli_linden <none@none>
Date: Wed, 6 Jul 2011 11:14:08 -0700
Subject: sync with viewer-development, removing obsolete files

---
 .../default/xui/da/floater_day_cycle_options.xml   |   96 --
 .../skins/default/xui/da/floater_env_settings.xml  |   31 -
 .../newview/skins/default/xui/da/floater_water.xml |  103 --
 .../default/xui/da/floater_windlight_options.xml   |  228 ----
 .../default/xui/de/floater_day_cycle_options.xml   |   94 --
 .../skins/default/xui/de/floater_env_settings.xml  |   26 -
 .../newview/skins/default/xui/de/floater_water.xml |   72 --
 .../default/xui/de/floater_windlight_options.xml   |  189 ---
 .../default/xui/en/floater_day_cycle_options.xml   |  558 ---------
 .../skins/default/xui/en/floater_env_settings.xml  |  164 ---
 .../newview/skins/default/xui/en/floater_water.xml |  503 --------
 .../default/xui/en/floater_windlight_options.xml   | 1288 --------------------
 .../skins/default/xui/en/panel_region_texture.xml  |  327 -----
 .../default/xui/es/floater_day_cycle_options.xml   |   94 --
 .../skins/default/xui/es/floater_env_settings.xml  |   28 -
 .../newview/skins/default/xui/es/floater_water.xml |   88 --
 .../default/xui/es/floater_windlight_options.xml   |  190 ---
 .../default/xui/fr/floater_day_cycle_options.xml   |   94 --
 .../skins/default/xui/fr/floater_env_settings.xml  |   29 -
 .../newview/skins/default/xui/fr/floater_water.xml |   70 --
 .../default/xui/fr/floater_windlight_options.xml   |  189 ---
 .../default/xui/it/floater_day_cycle_options.xml   |   94 --
 .../skins/default/xui/it/floater_env_settings.xml  |   29 -
 .../newview/skins/default/xui/it/floater_water.xml |   95 --
 .../default/xui/it/floater_windlight_options.xml   |  190 ---
 .../default/xui/ja/floater_day_cycle_options.xml   |   94 --
 .../skins/default/xui/ja/floater_env_settings.xml  |   25 -
 .../newview/skins/default/xui/ja/floater_water.xml |   70 --
 .../default/xui/ja/floater_windlight_options.xml   |  189 ---
 .../default/xui/nl/floater_day_cycle_options.xml   |   94 --
 .../skins/default/xui/nl/floater_env_settings.xml  |   24 -
 .../newview/skins/default/xui/nl/floater_water.xml |   89 --
 .../default/xui/nl/floater_windlight_options.xml   |  190 ---
 .../default/xui/pl/floater_day_cycle_options.xml   |   96 --
 .../skins/default/xui/pl/floater_env_settings.xml  |   28 -
 .../newview/skins/default/xui/pl/floater_water.xml |  103 --
 .../default/xui/pl/floater_windlight_options.xml   |  228 ----
 .../default/xui/pt/floater_day_cycle_options.xml   |   67 -
 .../skins/default/xui/pt/floater_env_settings.xml  |   27 -
 .../newview/skins/default/xui/pt/floater_water.xml |   86 --
 .../default/xui/pt/floater_windlight_options.xml   |  187 ---
 .../default/xui/zh/floater_day_cycle_options.xml   |   95 --
 .../skins/default/xui/zh/floater_env_settings.xml  |   25 -
 .../newview/skins/default/xui/zh/floater_water.xml |   70 --
 .../default/xui/zh/floater_windlight_options.xml   |  167 ---
 45 files changed, 6823 deletions(-)
 delete mode 100644 indra/newview/skins/default/xui/da/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/da/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/da/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/da/floater_windlight_options.xml
 delete mode 100644 indra/newview/skins/default/xui/de/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/de/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/de/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/de/floater_windlight_options.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/en/floater_windlight_options.xml
 delete mode 100644 indra/newview/skins/default/xui/en/panel_region_texture.xml
 delete mode 100644 indra/newview/skins/default/xui/es/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/es/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/es/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/es/floater_windlight_options.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/fr/floater_windlight_options.xml
 delete mode 100644 indra/newview/skins/default/xui/it/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/it/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/it/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/it/floater_windlight_options.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/ja/floater_windlight_options.xml
 delete mode 100644 indra/newview/skins/default/xui/nl/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/nl/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/nl/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/nl/floater_windlight_options.xml
 delete mode 100644 indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/pl/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/pl/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/pl/floater_windlight_options.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/pt/floater_windlight_options.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/floater_env_settings.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/floater_water.xml
 delete mode 100644 indra/newview/skins/default/xui/zh/floater_windlight_options.xml

diff --git a/indra/newview/skins/default/xui/da/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/da/floater_day_cycle_options.xml
deleted file mode 100644
index ffae3d788f..0000000000
--- a/indra/newview/skins/default/xui/da/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="DAG CYKLUS OPSÆTNING">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="Dag cyklus" name="Day Cycle">
-			<button label="?" name="WLDayCycleHelp"/>
-			<multi_slider label="" name="WLTimeSlider"/>
-			<multi_slider label="" name="WLDayCycleKeys"/>
-			<text name="WL12am">
-				00:00
-			</text>
-			<text name="WL3am">
-				03:00
-			</text>
-			<text name="WL6am">
-				06:00
-			</text>
-			<text name="WL9amHash">
-				09:00
-			</text>
-			<text name="WL12pmHash">
-				12:00
-			</text>
-			<text name="WL3pm">
-				15:00
-			</text>
-			<text name="WL6pm">
-				18:00
-			</text>
-			<text name="WL9pm">
-				21:00
-			</text>
-			<text name="WL12am2">
-				00:00
-			</text>
-			<text name="WL12amHash">
-				|
-			</text>
-			<text name="WL3amHash">
-				I
-			</text>
-			<text name="WL6amHash">
-				|
-			</text>
-			<text name="WL9amHash2">
-				I
-			</text>
-			<text name="WL12pmHash2">
-				|
-			</text>
-			<text name="WL3pmHash">
-				I
-			</text>
-			<text name="WL6pmHash">
-				|
-			</text>
-			<text name="WL9pmHash">
-				I
-			</text>
-			<text name="WL12amHash2">
-				|
-			</text>
-			<button label="Tilføj key" label_selected="Tilføj key" name="WLAddKey"/>
-			<button label="Slet key" label_selected="Slet key" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				Key-frame indstillinger:
-			</text>
-			<text name="WLCurKeyTimeText">
-				Key tid:
-			</text>
-			<spinner label="Timer" name="WLCurKeyHour"/>
-			<spinner label="Min." name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				Key fast indstilling:
-			</text>
-			<combo_box label="Faste" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				Snap:
-			</text>
-			<combo_box label="5 min" name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				Cycluslængde:
-			</text>
-			<spinner label="Timer" name="WLLengthOfDayHour"/>
-			<spinner label="Min." name="WLLengthOfDayMin"/>
-			<spinner label="Sek." name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				Vis :
-			</text>
-			<button label="Afspil" label_selected="Afspil" name="WLAnimSky"/>
-			<button label="Stop!" label_selected="Stop" name="WLStopAnimSky"/>
-			<button label="Benyt estate tid" label_selected="Gå til estate tid" name="WLUseLindenTime"/>
-			<button label="Gem test-dag" label_selected="Gem test-dag" name="WLSaveDayCycle"/>
-			<button label="Hent test-dag" label_selected="Hent test-dag" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_env_settings.xml b/indra/newview/skins/default/xui/da/floater_env_settings.xml
deleted file mode 100644
index a6fbc05734..0000000000
--- a/indra/newview/skins/default/xui/da/floater_env_settings.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Environment Editor Floater" title="REDIGERING AF OMGIVELSER">
-	<floater.string name="timeStr">
-		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
-	</floater.string>
-	<text name="EnvTimeText">
-		Tid på 
-dagen
-	</text>
-	<text name="EnvTimeText2">
-		00:00
-	</text>
-	<slider label="" name="EnvTimeSlider"/>
-	<text name="EnvCloudText">
-		Skydække
-	</text>
-	<slider label="" name="EnvCloudSlider"/>
-	<text name="EnvWaterColorText">
-		Farve på 
-vand
-	</text>
-	<color_swatch label="" name="EnvWaterColor" tool_tip="Klik for at åbne farvevælger"/>
-	<text name="EnvWaterFogText">
-		Tåge på 
-vand
-	</text>
-	<slider label="" name="EnvWaterFogSlider"/>
-	<button label="Benyt tid fra estate" name="EnvUseEstateTimeButton"/>
-	<button label="Avanceret himmel" name="EnvAdvancedSkyButton"/>
-	<button label="Avanceret vand" name="EnvAdvancedWaterButton"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_water.xml b/indra/newview/skins/default/xui/da/floater_water.xml
deleted file mode 100644
index aedd1b442c..0000000000
--- a/indra/newview/skins/default/xui/da/floater_water.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Water Floater" title="AVANCERET OPSÆTNING AF VAND">
-	<text name="KeyFramePresetsText">
-		Vand opsætninger:
-	</text>
-	<button label="Ny" label_selected="Ny" name="WaterNewPreset"/>
-	<button label="Gem" label_selected="Gem" name="WaterSavePreset"/>
-	<button label="Slet" label_selected="Slet" name="WaterDeletePreset"/>
-	<tab_container name="Water Tabs">
-		<panel label="INDSTILLINGER" name="Settings">
-			<text name="BHText">
-				Vandtåge farve
-			</text>
-			<button label="?" name="WaterFogColorHelp"/>
-			<color_swatch label="" name="WaterFogColor" tool_tip="Klik for at åbne farvevælger"/>
-			<text name="WaterFogDensText">
-				Tåge tæthedskarakteristik
-			</text>
-			<button label="?" name="WaterFogDensityHelp"/>
-			<slider label="" name="WaterFogDensity"/>
-			<text name="WaterUnderWaterFogModText">
-				Tilretning undervandståge
-			</text>
-			<button label="?" name="WaterUnderWaterFogModHelp"/>
-			<slider label="" name="WaterUnderWaterFogMod"/>
-			<text name="BDensText">
-				Lille bølge reflektionsskala
-			</text>
-			<button label="?" name="WaterNormalScaleHelp"/>
-			<text name="BHText2">
-				1
-			</text>
-			<text name="BHText3">
-				2
-			</text>
-			<text name="BHText4">
-				3
-			</text>
-			<slider label="" name="WaterNormalScaleX"/>
-			<slider label="" name="WaterNormalScaleY"/>
-			<slider label="" name="WaterNormalScaleZ"/>
-			<text name="HDText">
-				Spredningsskala
-			</text>
-			<button label="?" name="WaterFresnelScaleHelp"/>
-			<slider label="" name="WaterFresnelScale"/>
-			<text name="FresnelOffsetText">
-				Spredning offset
-			</text>
-			<button label="?" name="WaterFresnelOffsetHelp"/>
-			<slider label="" name="WaterFresnelOffset"/>
-			<text name="DensMultText">
-				Lysbrydning fra oven
-			</text>
-			<button label="?" name="WaterScaleAboveHelp"/>
-			<slider label="" name="WaterScaleAbove"/>
-			<text name="WaterScaleBelowText">
-				Lysbrydning fra neden
-			</text>
-			<button label="?" name="WaterScaleBelowHelp"/>
-			<slider label="" name="WaterScaleBelow"/>
-			<text name="MaxAltText">
-				Udviskning
-			</text>
-			<button label="?" name="WaterBlurMultiplierHelp"/>
-			<slider label="" name="WaterBlurMult"/>
-		</panel>
-		<panel label="BILLEDE" name="Waves">
-			<text name="BHText">
-				Retning for store bølger
-			</text>
-			<button label="?" name="WaterWave1Help"/>
-			<text name="WaterWave1DirXText">
-				X
-			</text>
-			<text name="WaterWave1DirYText">
-				Y
-			</text>
-			<slider label="" name="WaterWave1DirX"/>
-			<slider label="" name="WaterWave1DirY"/>
-			<text name="BHText2">
-				Retning for små bølger
-			</text>
-			<button label="?" name="WaterWave2Help"/>
-			<text name="WaterWave2DirXText">
-				X
-			</text>
-			<text name="WaterWave2DirYText">
-				Y
-			</text>
-			<slider label="" name="WaterWave2DirX"/>
-			<slider label="" name="WaterWave2DirY"/>
-			<text name="BHText3">
-				Tekstur map
-			</text>
-			<button label="?" name="WaterNormalMapHelp"/>
-			<texture_picker label="" name="WaterNormalMap"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultWaterNames">
-		Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/da/floater_windlight_options.xml b/indra/newview/skins/default/xui/da/floater_windlight_options.xml
deleted file mode 100644
index 56f94b24e9..0000000000
--- a/indra/newview/skins/default/xui/da/floater_windlight_options.xml
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater name="WindLight floater" title="AVANCERET OPSÆTNING FOR HIMMEL">
-	<text name="KeyFramePresetsText">
-		Faste indstillinger:
-	</text>
-	<button label="Ny" label_selected="Ny" name="WLNewPreset" />
-	<button label="Gem" label_selected="Gem" name="WLSavePreset" />
-	<button label="Slet" label_selected="Slet" name="WLDeletePreset" />
-	<button label="Dags cyklus" label_selected="Dags cyklus" name="WLDayCycleMenuButton" />
-	<tab_container name="WindLight Tabs">
-		<panel label="ATMOSFÆRE" name="Atmosphere">
-			<text name="BHText">
-				Blå - horisont
-			</text>
-			<button label="?" name="WLBlueHorizonHelp" />
-			<text name="BHText2">
-				R
-			</text>
-			<text name="BHText3">
-				G
-			</text>
-			<text name="BHText4">
-				B
-			</text>
-			<text name="BHText5">
-				I
-			</text>
-			<slider label="" name="WLBlueHorizonR" />
-			<slider label="" name="WLBlueHorizonG" />
-			<slider label="" name="WLBlueHorizonB" />
-			<slider label="" name="WLBlueHorizonI" />
-			<text name="BDensText">
-				Dis - horisont
-			</text>
-			<button label="?" name="WLHazeHorizonHelp" />
-			<slider label="" name="WLHazeHorizon" />
-			<text name="BDensText2">
-				Blå - tæthed
-			</text>
-			<button label="?" name="WLBlueDensityHelp" />
-			<text name="BHText6">
-				R
-			</text>
-			<text name="BHText7">
-				G
-			</text>
-			<text name="BHText8">
-				B
-			</text>
-			<text name="BHText9">
-				I
-			</text>
-			<slider label="" name="WLBlueDensityR" />
-			<slider label="" name="WLBlueDensityG" />
-			<slider label="" name="WLBlueDensityB" />
-			<slider label="" name="WLBlueDensityI" />
-			<text name="HDText">
-				Dis - intensitet
-			</text>
-			<button label="?" name="WLHazeDensityHelp" />
-			<slider label="" name="WLHazeDensity" />
-			<text name="DensMultText">
-				Densitet faktor
-			</text>
-			<button label="?" name="WLDensityMultHelp" />
-			<slider label="" name="WLDensityMult" />
-			<text name="WLDistanceMultText">
-				Distance faktor
-			</text>
-			<button label="?" name="WLDistanceMultHelp" />
-			<slider label="" name="WLDistanceMult" />
-			<text name="MaxAltText">
-				Maximum højde
-			</text>
-			<button label="?" name="WLMaxAltitudeHelp" />
-			<slider label="" name="WLMaxAltitude" />
-		</panel>
-		<panel label="LYS" name="Lighting">
-			<text name="SLCText">
-				Sol/Måne farve
-			</text>
-			<button label="?" name="WLSunlightColorHelp" />
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<slider label="" name="WLSunlightR" />
-			<slider label="" name="WLSunlightG" />
-			<slider label="" name="WLSunlightB" />
-			<slider label="" name="WLSunlightI" />
-			<text name="TODText">
-				Sol/Måne position
-			</text>
-			<button label="?" name="WLTimeOfDayHelp" />
-			<slider label="" name="WLSunAngle" />
-			<text name="WLAmbientText">
-				Omgivende
-			</text>
-			<button label="?" name="WLAmbientHelp" />
-			<text name="BHText5">
-				R
-			</text>
-			<text name="BHText6">
-				G
-			</text>
-			<text name="BHText7">
-				B
-			</text>
-			<text name="BHText8">
-				I
-			</text>
-			<slider label="" name="WLAmbientR" />
-			<slider label="" name="WLAmbientG" />
-			<slider label="" name="WLAmbientB" />
-			<slider label="" name="WLAmbientI" />
-			<text name="WLEastAngleText">
-				Øst vinkel
-			</text>
-			<button label="?" name="WLEastAngleHelp" />
-			<slider label="" name="WLEastAngle" />
-			<text name="SunGlowText">
-				Sol glød
-			</text>
-			<button label="?" name="WLSunGlowHelp" />
-			<slider label="Fokus " name="WLGlowB" />
-			<slider label="Størr. " name="WLGlowR" />
-			<text name="SceneGammaText">
-				Lysintensitet (gamma)
-			</text>
-			<button label="?" name="WLSceneGammaHelp" />
-			<slider label="" name="WLGamma" />
-			<text name="WLStarText">
-				Stjerne intensitet
-			</text>
-			<button label="?" name="WLStarBrightnessHelp" />
-			<slider label="" name="WLStarAlpha" />
-		</panel>
-		<panel label="SKYER" name="Clouds">
-			<text name="WLCloudColorText">
-				Farve på skyer
-			</text>
-			<button label="?" name="WLCloudColorHelp" />
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<slider label="" name="WLCloudColorR" />
-			<slider label="" name="WLCloudColorG" />
-			<slider label="" name="WLCloudColorB" />
-			<slider label="" name="WLCloudColorI" />
-			<text name="WLCloudColorText2">
-				Skyer XY/Tæthed
-			</text>
-			<button label="?" name="WLCloudDensityHelp" />
-			<text name="BHText5">
-				X
-			</text>
-			<text name="BHText6">
-				Y
-			</text>
-			<text name="BHText7">
-				T
-			</text>
-			<slider label="" name="WLCloudX" />
-			<slider label="" name="WLCloudY" />
-			<slider label="" name="WLCloudDensity" />
-			<text name="WLCloudCoverageText">
-				Skydække
-			</text>
-			<button label="?" name="WLCloudCoverageHelp" />
-			<slider label="" name="WLCloudCoverage" />
-			<text name="WLCloudScaleText">
-				Skystørrelse
-			</text>
-			<button label="?" name="WLCloudScaleHelp" />
-			<slider label="" name="WLCloudScale" />
-			<text name="WLCloudDetailText">
-				Sky detaljer(XY/tæthed)
-			</text>
-			<button label="?" name="WLCloudDetailHelp" />
-			<text name="BHText8">
-				X
-			</text>
-			<text name="BHText9">
-				Y
-			</text>
-			<text name="BHText10">
-				T
-			</text>
-			<slider label="" name="WLCloudDetailX" />
-			<slider label="" name="WLCloudDetailY" />
-			<slider label="" name="WLCloudDetailDensity" />
-			<text name="WLCloudScrollXText">
-				Sky drift X
-			</text>
-			<button label="?" name="WLCloudScrollXHelp" />
-			<check_box label="Lås" name="WLCloudLockX" />
-			<slider label="" name="WLCloudScrollX" />
-			<text name="WLCloudScrollYText">
-				Sky drift Y
-			</text>
-			<button label="?" name="WLCloudScrollYHelp" />
-			<check_box label="Lås" name="WLCloudLockY" />
-			<slider label="" name="WLCloudScrollY" />
-			<check_box label="Benyt simple skyer" name="DrawClassicClouds" />
-			<button label="?" name="WLClassicCloudsHelp" />
-		</panel>
-	</tab_container>
-	<string name="WLDefaultSkyNames">
-		A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml
deleted file mode 100644
index 8599737106..0000000000
--- a/indra/newview/skins/default/xui/de/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="TAGESZYKLUS-EDITOR">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="Tageszyklus" name="Day Cycle">
-			<button label=" ?" name="WLDayCycleHelp"/>
-			<text name="WL12am">
-				24:00
-			</text>
-			<text name="WL3am">
-				03:00
-			</text>
-			<text name="WL6am">
-				06:00
-			</text>
-			<text name="WL9amHash">
-				09:00
-			</text>
-			<text name="WL12pmHash">
-				12:00
-			</text>
-			<text name="WL3pm">
-				15:00
-			</text>
-			<text name="WL6pm">
-				18:00
-			</text>
-			<text name="WL9pm">
-				21:00
-			</text>
-			<text name="WL12am2">
-				24:00
-			</text>
-			<text name="WL12amHash">
-				|
-			</text>
-			<text name="WL3amHash">
-				I
-			</text>
-			<text name="WL6amHash">
-				|
-			</text>
-			<text name="WL9amHash2">
-				I
-			</text>
-			<text name="WL12pmHash2">
-				|
-			</text>
-			<text name="WL3pmHash">
-				I
-			</text>
-			<text name="WL6pmHash">
-				|
-			</text>
-			<text name="WL9pmHash">
-				I
-			</text>
-			<text name="WL12amHash2">
-				|
-			</text>
-			<button label="Key hinzu" label_selected="Key hinzu" name="WLAddKey"/>
-			<button label="Key löschen" label_selected="Key löschen" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				Keyframe-Einstellungen:
-			</text>
-			<text name="WLCurKeyTimeText">
-				Key-Zeit:
-			</text>
-			<spinner label="Std." name="WLCurKeyHour"/>
-			<spinner label="Min." name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				Key-Voreinstellung:
-			</text>
-			<combo_box label="Voreinstellung" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				Einrasten:
-			</text>
-			<combo_box label="5 min" name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				Zykluslänge:
-			</text>
-			<spinner label="Std." name="WLLengthOfDayHour"/>
-			<spinner label="Min." name="WLLengthOfDayMin"/>
-			<spinner label="Sek." name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				Vorschau:
-			</text>
-			<button label="Start" label_selected="Start" name="WLAnimSky"/>
-			<button label="Stopp" label_selected="Stopp" name="WLStopAnimSky"/>
-			<button label="Grundbesitzzeit verw" label_selected="Zur Grundbesitzzeit" name="WLUseLindenTime"/>
-			<button label="Testtag speichern" label_selected="Testtag speichern" name="WLSaveDayCycle"/>
-			<button label="Testtag laden" label_selected="Testtag laden" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_env_settings.xml b/indra/newview/skins/default/xui/de/floater_env_settings.xml
deleted file mode 100644
index 0c78909108..0000000000
--- a/indra/newview/skins/default/xui/de/floater_env_settings.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Environment Editor Floater" title="UMWELT-EDITOR">
-	<floater.string name="timeStr">
-		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
-	</floater.string>
-	<text name="EnvTimeText">
-		Tageszeit
-	</text>
-	<text name="EnvTimeText2">
-		12:00
-	</text>
-	<text name="EnvCloudText">
-		Wolkendecke
-	</text>
-	<text name="EnvWaterColorText">
-		Wasserfarbe
-	</text>
-	<color_swatch name="EnvWaterColor" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
-	<text name="EnvWaterFogText">
-		Wasser-
-trübung
-	</text>
-	<button label="Grundbesitzzeit verw." name="EnvUseEstateTimeButton"/>
-	<button label="Himmel (erweitert)" name="EnvAdvancedSkyButton"/>
-	<button label="Wasser (erweitert)" name="EnvAdvancedWaterButton"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_water.xml b/indra/newview/skins/default/xui/de/floater_water.xml
deleted file mode 100644
index bb0dd9c75d..0000000000
--- a/indra/newview/skins/default/xui/de/floater_water.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Water Floater" title="ERWEITERTER WASSER-EDITOR">
-	<floater.string name="WLDefaultWaterNames">
-		Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
-	</floater.string>
-	<text name="KeyFramePresetsText" width="110">
-		Voreinstellungen:
-	</text>
-	<combo_box left_delta="110" name="WaterPresetsCombo"/>
-	<button label="Neu" label_selected="Neu" name="WaterNewPreset"/>
-	<button label="Speichern" label_selected="Speichern" name="WaterSavePreset"/>
-	<button label="Löschen" label_selected="Löschen" name="WaterDeletePreset"/>
-	<tab_container name="Water Tabs">
-		<panel label="EINSTELLUNGEN" name="Settings">
-			<text name="BHText">
-				Wassertrübungsfarbe
-			</text>
-			<color_swatch name="WaterFogColor" tool_tip="Klicken Sie hier, um die Farbauswahl zu öffnen"/>
-			<text name="WaterFogDensText">
-				Wassertrübungsdichte
-			</text>
-			<text name="WaterUnderWaterFogModText">
-				Wassertrübungs-Modifikator
-			</text>
-			<slider bottom_delta="-34" name="WaterUnderWaterFogMod"/>
-			<text name="BDensText">
-				Reflexionswellengröße
-			</text>
-			<slider label="1" name="WaterNormalScaleX"/>
-			<slider label="2" name="WaterNormalScaleY"/>
-			<slider label="3" name="WaterNormalScaleZ"/>
-			<text name="HDText">
-				Fresnel-Skalierung
-			</text>
-			<text name="FresnelOffsetText">
-				Fresnel-Versatz
-			</text>
-			<text name="DensMultText">
-				Brechungsstärke oben
-			</text>
-			<text name="WaterScaleBelowText">
-				Brechungsstärke unten
-			</text>
-			<text name="MaxAltText">
-				Mischungsmultiplikator
-			</text>
-		</panel>
-		<panel label="BILD" name="Waves">
-			<text name="BHText">
-				Richtung große Welle
-			</text>
-			<text name="WaterWave1DirXText">
-				X
-			</text>
-			<text name="WaterWave1DirYText">
-				Y
-			</text>
-			<text name="BHText2">
-				Richtung kleine Welle
-			</text>
-			<text name="WaterWave2DirXText">
-				X
-			</text>
-			<text name="WaterWave2DirYText">
-				Y
-			</text>
-			<text name="BHText3">
-				Normal-Map
-			</text>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/de/floater_windlight_options.xml b/indra/newview/skins/default/xui/de/floater_windlight_options.xml
deleted file mode 100644
index 5b59336f9d..0000000000
--- a/indra/newview/skins/default/xui/de/floater_windlight_options.xml
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="WindLight floater" title="ERWEITERTER HIMMEL-EDITOR">
-	<text name="KeyFramePresetsText">
-		Voreinstellungen:
-	</text>
-	<button label="Neu" label_selected="Neu" name="WLNewPreset"/>
-	<button label="Speichern" label_selected="Speichern" name="WLSavePreset"/>
-	<button label="Löschen" label_selected="Löschen" name="WLDeletePreset"/>
-	<button label="Tageszyklus-Editor" label_selected="Tageszyklus-Editor" name="WLDayCycleMenuButton"/>
-	<tab_container name="WindLight Tabs">
-		<panel label="ATMOSPHÄRE" name="Atmosphere">
-			<text name="BHText">
-				Horizontfarbe
-			</text>
-			<button label=" ?" name="WLBlueHorizonHelp"/>
-			<text name="BHText2">
-				R
-			</text>
-			<text name="BHText3">
-				G
-			</text>
-			<text name="BHText4">
-				B
-			</text>
-			<text name="BHText5">
-				I
-			</text>
-			<text name="BDensText">
-				Horizonttrübung
-			</text>
-			<button label=" ?" name="WLHazeHorizonHelp"/>
-			<text name="BDensText2">
-				Farbintensität
-			</text>
-			<button label=" ?" name="WLBlueDensityHelp"/>
-			<text name="BHText6">
-				R
-			</text>
-			<text name="BHText7">
-				G
-			</text>
-			<text name="BHText8">
-				B
-			</text>
-			<text name="BHText9">
-				I
-			</text>
-			<text name="HDText">
-				Trübungsintensität
-			</text>
-			<button label=" ?" name="WLHazeDensityHelp"/>
-			<text name="DensMultText">
-				Dichtemultiplikator
-			</text>
-			<button label=" ?" name="WLDensityMultHelp"/>
-			<text name="WLDistanceMultText">
-				Entfernungsmultiplikator
-			</text>
-			<button label=" ?" name="WLDistanceMultHelp"/>
-			<text name="MaxAltText">
-				Max. Höhe
-			</text>
-			<button label=" ?" name="WLMaxAltitudeHelp"/>
-		</panel>
-		<panel label="LICHT" name="Lighting">
-			<text name="SLCText">
-				Sonne/Mond-Farbe
-			</text>
-			<button label=" ?" name="WLSunlightColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="TODText">
-				Sonne/Mond-Stand
-			</text>
-			<button label=" ?" name="WLTimeOfDayHelp"/>
-			<text name="WLAmbientText">
-				Umgebung
-			</text>
-			<button label=" ?" name="WLAmbientHelp"/>
-			<text name="BHText5">
-				R
-			</text>
-			<text name="BHText6">
-				G
-			</text>
-			<text name="BHText7">
-				B
-			</text>
-			<text name="BHText8">
-				I
-			</text>
-			<text name="WLEastAngleText">
-				Ostausrichtung
-			</text>
-			<button label=" ?" name="WLEastAngleHelp"/>
-			<text name="SunGlowText">
-				Sonnenleuchtkraft
-			</text>
-			<button label=" ?" name="WLSunGlowHelp"/>
-			<slider label="Fokus " name="WLGlowB"/>
-			<slider label="Größe    " name="WLGlowR"/>
-			<text name="SceneGammaText">
-				Gamma in Szene
-			</text>
-			<button label=" ?" name="WLSceneGammaHelp"/>
-			<text name="WLStarText">
-				Sternenleuchtkraft
-			</text>
-			<button label=" ?" name="WLStarBrightnessHelp"/>
-		</panel>
-		<panel label="WOLKEN" name="Clouds">
-			<text name="WLCloudColorText">
-				Wolkenfarbe
-			</text>
-			<button label=" ?" name="WLCloudColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="WLCloudColorText2">
-				Wolken-XY/Dichte
-			</text>
-			<button label=" ?" name="WLCloudDensityHelp"/>
-			<text name="BHText5">
-				X
-			</text>
-			<text name="BHText6">
-				Y
-			</text>
-			<text name="BHText7">
-				D
-			</text>
-			<text name="WLCloudCoverageText">
-				Wolkendichte
-			</text>
-			<button label=" ?" name="WLCloudCoverageHelp"/>
-			<text name="WLCloudScaleText">
-				Wolkenskalierung
-			</text>
-			<button label=" ?" name="WLCloudScaleHelp"/>
-			<text name="WLCloudDetailText">
-				Wolkendetails (XY/Dichte)
-			</text>
-			<button label=" ?" name="WLCloudDetailHelp"/>
-			<text name="BHText8">
-				X
-			</text>
-			<text name="BHText9">
-				Y
-			</text>
-			<text name="BHText10">
-				D
-			</text>
-			<text name="WLCloudScrollXText">
-				Wolkenbewegung X
-			</text>
-			<button label=" ?" name="WLCloudScrollXHelp"/>
-			<check_box label="Fest" name="WLCloudLockX"/>
-			<text name="WLCloudScrollYText">
-				Wolkenbewegung Y
-			</text>
-			<button label=" ?" name="WLCloudScrollYHelp"/>
-			<check_box label="Fest" name="WLCloudLockY"/>
-			<check_box label="Klassische Wolken" name="DrawClassicClouds"/>
-			<button label=" ?" name="WLClassicCloudsHelp"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultSkyNames">
-		A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml
deleted file mode 100644
index 65e2462ef8..0000000000
--- a/indra/newview/skins/default/xui/en/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,558 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- height="275"
- layout="topleft"
- name="Day Cycle Floater"
- help_topic="day_cycle_floater"
- save_rect="true"
- title="DAY CYCLE EDITOR"
- width="658">
-    <tab_container
-     follows="left|top"
-     height="255"
-     layout="topleft"
-     left="0"
-     name="Day Cycle Tabs"
-     tab_position="top"
-     top="20"
-     width="656">
-        <panel
-         border="true"
-         follows="left|top|right|bottom"
-         height="255"
-         label="Day Cycle"
-         layout="topleft"
-         left="1"
-         mouse_opaque="false"
-         name="Day Cycle"
-         top="0"
-         width="654">
-            <multi_slider
-             can_edit_text="true"
-             control_name="WLTimeSlider"
-             decimal_digits="0"
-             draw_track="false"
-             follows="bottom"
-             height="10"
-             increment="0.0833333"
-             initial_value="0"
-             layout="topleft"
-             left="20"
-             max_sliders="20"
-             max_val="24"
-             name="WLTimeSlider"
-             show_text="false"
-             top="25"
-             use_triangle="true"
-             width="525" />
-            <multi_slider
-             can_edit_text="true"
-             control_name="WLDayCycleKeys"
-             decimal_digits="0"
-             follows="bottom"
-             height="10"
-             increment="0.0833333"
-             initial_value="0"
-             layout="topleft"
-             left_delta="0"
-             max_sliders="20"
-             max_val="24"
-             name="WLDayCycleKeys"
-             show_text="false"
-             top_pad="15"
-             width="525" />
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             height="16"
-             layout="topleft"
-             left="8"
-             name="WL12am"
-             top="74"
-             width="55">
-                12am
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             height="16"
-             layout="topleft"
-             left_pad="10"
-             name="WL3am"
-             top_delta="0"
-             width="55">
-                3am
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             height="16"
-             layout="topleft"
-             left_pad="10"
-             name="WL6am"
-             top_delta="0"
-             width="55">
-                6am
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             height="16"
-             layout="topleft"
-             left_pad="10"
-             name="WL9amHash"
-             top_delta="0"
-             width="55">
-                9am
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             height="16"
-             layout="topleft"
-             left_pad="10"
-             name="WL12pmHash"
-             top_delta="0"
-             width="55">
-                12pm
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             height="16"
-             layout="topleft"
-             left_pad="10"
-             name="WL3pm"
-             top_delta="0"
-             width="55">
-                3pm
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             height="16"
-             layout="topleft"
-             left_pad="10"
-             name="WL6pm"
-             top_delta="0"
-             width="55">
-                6pm
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             height="16"
-             layout="topleft"
-             left_pad="10"
-             name="WL9pm"
-             top_delta="0"
-             width="55">
-                9pm
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             height="16"
-             layout="topleft"
-             left_pad="10"
-             name="WL12am2"
-             top_delta="0"
-             width="55">
-                12am
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="14"
-             layout="topleft"
-             left="20"
-             name="WL12amHash"
-             top="54"
-             width="6">
-                |
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="11"
-             layout="topleft"
-             left_pad="59"
-             name="WL3amHash"
-             top_delta="3"
-             width="6">
-                I
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="14"
-             layout="topleft"
-             left_pad="59"
-             name="WL6amHash"
-             top_delta="-3"
-             width="6">
-                |
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="11"
-             layout="topleft"
-             left_pad="59"
-             name="WL9amHash2"
-             top_delta="3"
-             width="6">
-                I
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="14"
-             layout="topleft"
-             left_pad="59"
-             name="WL12pmHash2"
-             top_delta="-3"
-             width="6">
-                |
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="11"
-             layout="topleft"
-             left_pad="59"
-             name="WL3pmHash"
-             top_delta="3"
-             width="6">
-                I
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="14"
-             layout="topleft"
-             left_pad="59"
-             name="WL6pmHash"
-             top_delta="-3"
-             width="6">
-                |
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="11"
-             layout="topleft"
-             left_pad="59"
-             name="WL9pmHash"
-             top_delta="3"
-             width="6">
-                I
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="14"
-             layout="topleft"
-             left_pad="59"
-             name="WL12amHash2"
-             top_delta="-3"
-             width="6">
-                |
-            </text>
-            <button
-             height="20"
-             label="Add Key"
-             label_selected="Add Key"
-             layout="topleft"
-             left="555"
-             name="WLAddKey"
-             top="30"
-             width="96" />
-            <button
-             height="20"
-             label="Delete Key"
-             label_selected="Delete Key"
-             layout="topleft"
-             left_delta="0"
-             name="WLDeleteKey"
-             top_pad="5"
-             width="96" />
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="20"
-             name="WLCurKeyFrameText"
-             top="104"
-             width="235">
-                Key Frame Settings:
-            </text>
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="30"
-             name="WLCurKeyTimeText"
-             top="124"
-             width="105">
-                Key Time:
-            </text>
-            <spinner
-             control_name="WLCurKeyHour"
-             decimal_digits="0"
-             follows="left|top"
-             height="16"
-             increment="1"
-             initial_value="0"
-             label="Hour"
-             label_width="35"
-             layout="topleft"
-             left_delta="20"
-             max_val="100"
-             name="WLCurKeyHour"
-             top_pad="4"
-             width="74" />
-            <spinner
-             control_name="WLCurKeyMin"
-             decimal_digits="0"
-             follows="left|top"
-             height="16"
-             increment="5"
-             initial_value="0"
-             label="Min"
-             label_width="45"
-             layout="topleft"
-             left_pad="5"
-             max_val="55"
-             name="WLCurKeyMin"
-             top_delta="0"
-             width="85" />
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="30"
-             name="WLCurKeyTimeText2"
-             top="169"
-             width="185">
-                Key Preset:
-            </text>
-            <combo_box
-             height="18"
-             label="Preset"
-             layout="topleft"
-             left_delta="0"
-             name="WLKeyPresets"
-             top_pad="7"
-             width="205" />
-            <view_border
-             bevel_style="none"
-             follows="top|left"
-             height="115"
-             layout="topleft"
-             left="12"
-             top="101"
-             width="240" />
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_pad="15"
-             name="DayCycleText"
-             top="114"
-             width="120">
-                Snap:
-            </text>
-            <combo_box
-             enabled="false"
-             height="18"
-             label="5 min"
-             layout="topleft"
-             left_delta="0"
-             name="WLSnapOptions"
-             top_pad="7"
-             width="70" />
-            <text
-             type="string"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="0"
-             name="DayCycleText2"
-             top_pad="17"
-             width="120">
-                Length of Cycle:
-            </text>
-            <spinner
-             control_name="WLLengthOfDayHour"
-             decimal_digits="0"
-             follows="left|top"
-             height="16"
-             increment="1"
-             initial_value="0"
-             label="Hour"
-             label_width="33"
-             layout="topleft"
-             left_delta="-3"
-             max_val="100"
-             name="WLLengthOfDayHour"
-             top_pad="4"
-             width="74" />
-            <spinner
-             control_name="WLLengthOfDayMin"
-             decimal_digits="0"
-             follows="left|top"
-             height="16"
-             increment="1"
-             initial_value="0"
-             label="Min"
-             label_width="25"
-             layout="topleft"
-             left_pad="2"
-             max_val="59"
-             name="WLLengthOfDayMin"
-             top_delta="0"
-             width="65" />
-            <spinner
-             control_name="WLLengthOfDaySec"
-             decimal_digits="0"
-             follows="left|top"
-             height="16"
-             increment="1"
-             initial_value="24"
-             label="Sec"
-             label_width="25"
-             layout="topleft"
-             left_pad="2"
-             max_val="59"
-             name="WLLengthOfDaySec"
-             top_delta="0"
-             width="65"/>
-            <text
-             type="string"
-             halign="right"
-             length="1"
-             border_visible="true"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-23"
-             name="DayCycleText3"
-             top="114"
-             width="85">
-                Preview :
-            </text>
-            <button
-             height="20"
-             label="Play"
-             label_selected="Play"
-             layout="topleft"
-             left="480"
-             name="WLAnimSky"
-             top_pad="5"
-             width="83" />
-            <button
-             height="20"
-             label="Stop!"
-             label_selected="Stop"
-             layout="topleft"
-             left_pad="4"
-             name="WLStopAnimSky"
-             top_delta="0"
-             width="83" />
-            <button
-             height="20"
-             label="Use Estate Time"
-             label_selected="Go to Estate Time"
-             layout="topleft"
-             left="480"
-             name="WLUseLindenTime"
-             top_pad="9"
-             width="170" />
-            <button
-             height="20"
-             label="Save Test Day"
-             label_selected="Save Test Day"
-             layout="topleft"
-             left_delta="0"
-             name="WLSaveDayCycle"
-             top_pad="9"
-             width="170" />
-            <button
-             height="20"
-             label="Load Test Day"
-             label_selected="Load Test Day"
-             layout="topleft"
-             left_delta="0"
-             name="WLLoadDayCycle"
-             top_pad="3"
-             width="170" />
-        </panel>
-    </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_env_settings.xml b/indra/newview/skins/default/xui/en/floater_env_settings.xml
deleted file mode 100644
index 8df5e232d9..0000000000
--- a/indra/newview/skins/default/xui/en/floater_env_settings.xml
+++ /dev/null
@@ -1,164 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- height="150"
- layout="topleft"
- name="Environment Editor Floater"
- help_topic="environment_editor_floater"
- save_rect="true"
- title="ENVIRONMENT EDITOR"
- width="600">
-    <floater.string
-     name="timeStr">
-        [hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
-    </floater.string>
-    <text
-     type="string"
-     length="1"
-     follows="left|top|right"
-     font="SansSerif"
-     height="16"
-     layout="topleft"
-     left="10"
-     name="EnvTimeText"
-     top="32"
-     width="140">
-        Time of Day
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="left|top|right"
-     height="16"
-     layout="topleft"
-     left="15"
-     name="EnvTimeText2"
-     top="62"
-     width="140">
-        12:00 PM
-    </text>
-    <icon
-     height="25"
-     image_name="icon_diurnal.tga"
-     layout="topleft"
-     left="85"
-     name="EnvDayCycle"
-     top="30"
-     use_draw_context_alpha="false"
-     width="200" />
-    <slider
-     control_name="EnvTimeSlider"
-     decimal_digits="2"
-     follows="left"
-     height="10"
-     increment="0.0069444"
-     initial_value="0.7"
-     layout="topleft"
-     left_delta="0"
-     max_val="0.99"
-     name="EnvTimeSlider"
-     show_text="false"
-     top_pad="10"
-     width="200" />
-    <text
-     type="string"
-     length="1"
-     follows="left|top|right"
-     font="SansSerif"
-     height="16"
-     layout="topleft"
-     left="10"
-     name="EnvCloudText"
-     top="86"
-     width="140">
-        Cloud Cover
-    </text>
-    <slider
-     control_name="EnvCloudSlider"
-     decimal_digits="2"
-     follows="left"
-     height="10"
-     increment="0.01"
-     initial_value="0.7"
-     layout="topleft"
-     left_delta="75"
-     name="EnvCloudSlider"
-     top_delta="4"
-     width="210" />
-    <text
-     type="string"
-     length="1"
-     follows="left|top|right"
-     font="SansSerif"
-     height="16"
-     layout="topleft"
-     left="310"
-     name="EnvWaterColorText"
-     top="39"
-     width="140">
-        Water Color
-    </text>
-    <color_swatch
-     can_apply_immediately="true"
-     color="0.5 0.5 0.5 1"
-     follows="left|top"
-     height="50"
-     layout="topleft"
-     left="390"
-     name="EnvWaterColor"
-     tool_tip="Click to open color picker"
-     top="30"
-     width="40" />
-    <text
-     type="string"
-     length="1"
-     follows="left|top|right"
-     font="SansSerif"
-     height="16"
-     layout="topleft"
-     left="310"
-     name="EnvWaterFogText"
-     top="86"
-     width="140">
-        Water Fog
-    </text>
-    <slider
-     control_name="EnvWaterFogSlider"
-     decimal_digits="2"
-     follows="left"
-     height="10"
-     initial_value="0"
-     layout="topleft"
-     left_delta="75"
-     max_val="10"
-     name="EnvWaterFogSlider"
-     top_delta="4"
-     width="210" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Use Estate Time"
-     layout="topleft"
-     left="10"
-     name="EnvUseEstateTimeButton"
-     top="120"
-     width="137" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Advanced Sky"
-     layout="topleft"
-     left_pad="3"
-     name="EnvAdvancedSkyButton"
-     top_delta="0"
-     width="137" />
-    <button
-     follows="left|top"
-     height="23"
-     label="Advanced Water"
-     layout="topleft"
-     left_pad="3"
-     name="EnvAdvancedWaterButton"
-     top_delta="0"
-     width="137" />
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_water.xml b/indra/newview/skins/default/xui/en/floater_water.xml
deleted file mode 100644
index 3a44ba3763..0000000000
--- a/indra/newview/skins/default/xui/en/floater_water.xml
+++ /dev/null
@@ -1,503 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- height="240"
- layout="topleft"
- name="Water Floater"
- help_topic="water_floater"
- save_rect="true"
- title="ADVANCED WATER EDITOR"
- width="700">
-    <floater.string
-     name="WLDefaultWaterNames">
-        Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
-    </floater.string>
-    <text
-     type="string"
-     length="1"
-     follows="left|top|right"
-     height="16"
-     layout="topleft"
-     left="10"
-     name="KeyFramePresetsText"
-     top="34"
-     font="SansSerif"
-     width="85">
-        Water Presets:
-    </text>
-    <combo_box
-     height="23"
-     layout="topleft"
-     left_delta="95"
-     name="WaterPresetsCombo"
-     top_delta="-4"
-     width="150" />
-    <button
-     height="23"
-     label="New"
-     label_selected="New"
-     layout="topleft"
-     left_pad="3"
-     name="WaterNewPreset"
-     top_delta="0"
-     width="70" />
-    <button
-     height="23"
-     label="Save"
-     label_selected="Save"
-     layout="topleft"
-     left_pad="3"
-     name="WaterSavePreset"
-     top_delta="0"
-     width="70" />
-    <button
-     height="23"
-     label="Delete"
-     label_selected="Delete"
-     layout="topleft"
-     left_pad="3"
-     name="WaterDeletePreset"
-     top_delta="0"
-     width="70" />
-    <tab_container
-    border="false"
-     follows="left|top"
-     height="180"
-     halign="center"
-     layout="topleft"
-     left="0"
-     name="Water Tabs"
-     tab_position="top"
-     top="60"
-     width="700">
-        <panel
-         border="true"
-         follows="all"
-         height="180"
-         label="SETTINGS"
-         layout="topleft"
-         left="0"
-         mouse_opaque="false"
-         help_topic="water_settings_tab"
-         name="Settings"
-         top="0"
-         width="698">
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="10"
-             name="BHText"
-             top="4"
-             width="200">
-                Water Fog Color
-            </text>
-            <color_swatch
-             can_apply_immediately="true"
-             color="0.5 0.5 0.5 1"
-             follows="left|top"
-             height="50"
-             layout="topleft"
-             left="40"
-             name="WaterFogColor"
-             tool_tip="Click to open color picker"
-             top="30"
-             width="40" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="10"
-             name="WaterFogDensText"
-             top="84"
-             width="200">
-                Fog Density Exponent
-            </text>
-            <slider
-             control_name="WaterFogDensity"
-             decimal_digits="1"
-             follows="left"
-             height="10"
-             initial_value="16"
-             layout="topleft"
-             left="24"
-             max_val="10"
-             name="WaterFogDensity"
-             top="124"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-14"
-             name="WaterUnderWaterFogModText"
-             top="124"
-             width="200">
-                Underwater Fog Modifier
-            </text>
-            <slider
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="16"
-             layout="topleft"
-             left="24"
-             max_val="2"
-             name="WaterUnderWaterFogMod"
-             top="164"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="245"
-             name="BDensText"
-             top="4"
-             width="200">
-                Reflection Wavelet Scale
-            </text>
-            <slider
-             control_name="WaterNormalScaleX"
-             decimal_digits="1"
-             follows="left"
-             height="15"
-             initial_value="0.7"
-             label="1"
-             layout="topleft"
-             max_val="10"
-             name="WaterNormalScaleX"
-             top_pad="24"
-             width="200" />
-            <slider
-             control_name="WaterNormalScaleY"
-             decimal_digits="1"
-             follows="left"
-             height="15"
-             initial_value="0.7"
-             label="2"
-             layout="topleft"
-             max_val="10"
-             name="WaterNormalScaleY"
-             top_pad="4"
-             width="200" />
-            <slider
-             control_name="WaterNormalScaleZ"
-             decimal_digits="1"
-             follows="left"
-             height="15"
-             initial_value="0.7"
-             label="3"
-             layout="topleft"
-             max_val="10"
-             name="WaterNormalScaleZ"
-             top_pad="4"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             name="HDText"
-             top="84"
-             width="200">
-                Fresnel Scale
-            </text>
-            <slider
-             control_name="WaterFresnelScale"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             name="WaterFresnelScale"
-             top="124"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             name="FresnelOffsetText"
-             top="124"
-             width="200">
-                Fresnel Offset
-            </text>
-            <slider
-             control_name="WaterFresnelOffset"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             name="WaterFresnelOffset"
-             top="164"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="480"
-             name="DensMultText"
-             top="4"
-             width="200">
-                Refract Scale Above
-            </text>
-            <slider
-             control_name="WaterScaleAbove"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.1"
-             layout="topleft"
-             left="494"
-             name="WaterScaleAbove"
-             top="44"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-14"
-             name="WaterScaleBelowText"
-             top="44"
-             width="200">
-                Refract Scale Below
-            </text>
-            <slider
-             control_name="WaterScaleBelow"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0"
-             layout="topleft"
-             left="494"
-             name="WaterScaleBelow"
-             top="84"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-14"
-             name="MaxAltText"
-             top="84"
-             width="200">
-                Blur Multiplier
-            </text>
-            <slider
-             control_name="WaterBlurMult"
-             follows="left"
-             height="10"
-             increment="0.001"
-             initial_value="0"
-             layout="topleft"
-             left="494"
-             max_val="0.16"
-             name="WaterBlurMult"
-             top="124"
-             width="200" />
-        </panel>
-        <panel
-         border="true"
-         follows="all"
-         height="180"
-         label="IMAGE"
-         layout="topleft"
-         left="0"
-         mouse_opaque="false"
-         help_topic="water_waves_tab"
-         name="Waves"
-         top="0"
-         width="698">
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="10"
-             name="BHText"
-             top="4"
-             width="200">
-                Big Wave Direction
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left="10"
-             name="WaterWave1DirXText"
-             top_pad="5"
-             width="10">
-                X
-            </text>
-            <slider
-             control_name="WaterWave1DirX"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left="24"
-             max_val="4"
-             min_val="-4"
-             name="WaterWave1DirX"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="WaterWave1DirYText"
-             top_pad="-15"
-             width="10">
-                Y
-            </text>
-            <slider
-             control_name="WaterWave1DirY"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             max_val="4"
-             min_val="-4"
-             name="WaterWave1DirY"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText2"
-             top_pad="-10"
-             width="355">
-                Little Wave Direction
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left="10"
-             left_delta="0"
-             name="WaterWave2DirXText"
-             top_pad="5"
-             width="10">
-                X
-            </text>
-            <slider
-             control_name="WaterWave2DirX"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left="24"
-             max_val="4"
-             min_val="-4"
-             name="WaterWave2DirX"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="WaterWave2DirYText"
-             top_pad="-15"
-             width="10">
-                Y
-            </text>
-            <slider
-             control_name="WaterWave2DirY"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             max_val="4"
-             min_val="-4"
-             name="WaterWave2DirY"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="240"
-             name="BHText3"
-             top="4"
-             width="200">
-                Normal Map
-            </text>
-            <texture_picker
-             height="143"
-             layout="topleft"
-             left="250"
-             name="WaterNormalMap"
-             top="22"
-             width="128" />
-        </panel>
-    </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/floater_windlight_options.xml b/indra/newview/skins/default/xui/en/floater_windlight_options.xml
deleted file mode 100644
index 7923dd87fa..0000000000
--- a/indra/newview/skins/default/xui/en/floater_windlight_options.xml
+++ /dev/null
@@ -1,1288 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<floater
- legacy_header_height="18"
- height="256"
- layout="topleft"
- name="WindLight floater"
- help_topic="windlight_floater"
- save_rect="true"
- title="ADVANCED SKY EDITOR"
- width="700">
-    <floater.string
-     name="WLDefaultSkyNames">
-        A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
-    </floater.string>
-    <text
-     type="string"
-     length="1"
-     follows="left|top|right"
-     font="SansSerif"
-     height="16"
-     layout="topleft"
-     left="10"
-     name="KeyFramePresetsText"
-     top="34"
-     width="135">
-        Sky Presets:
-    </text>
-    <combo_box
-     height="23"
-     layout="topleft"
-     left_delta="135"
-     name="WLPresetsCombo"
-     top_delta="-4"
-     width="150" />
-    <button
-     height="23"
-     label="New"
-     label_selected="New"
-     layout="topleft"
-     left_pad="3"
-     name="WLNewPreset"
-     width="70" />
-    <button
-     height="23"
-     label="Save"
-     label_selected="Save"
-     layout="topleft"
-     left_pad="3"
-     name="WLSavePreset"
-     width="70" />
-    <button
-     height="23"
-     label="Delete"
-     label_selected="Delete"
-     layout="topleft"
-     left_pad="3"
-     name="WLDeletePreset"
-     width="70" />
-    <button
-     height="23"
-     label="Day Cycle Editor"
-     label_selected="Day Cycle Editor"
-     layout="topleft"
-     right="-10"
-     name="WLDayCycleMenuButton"
-     top_pad="-23"
-     width="120" />
-    <tab_container
-     follows="left|top"
-     height="196"
-     halign="center"
-     layout="topleft"
-     left="0"
-     name="WindLight Tabs"
-     tab_position="top"
-     top="60"
-     width="700">
-        <panel
-         border="true"
-         follows="left|top|right|bottom"
-         height="196"
-         label="ATMOSPHERE"
-         layout="topleft"
-         left="1"
-         mouse_opaque="false"
-         help_topic="windlight_atmosphere_tab"
-         name="Atmosphere"
-         top="60"
-         width="698">
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="10"
-             name="BHText"
-             top="4"
-             width="355">
-                Blue Horizon
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left="10"
-             name="BHText2"
-             top_pad="5"
-             width="10">
-                R
-            </text>
-            <slider
-             control_name="WLBlueHorizonR"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_pad="3"
-             top_pad="6"
-             name="WLBlueHorizonR"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left="10"
-             top_pad="-15"
-             name="BHText3"
-             width="10">
-                G
-            </text>
-            <slider
-             control_name="WLBlueHorizonG"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             name="WLBlueHorizonG"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             name="BHText4"
-             left="10"
-             top_pad="-15"
-             width="10">
-                B
-            </text>
-            <slider
-             control_name="WLBlueHorizonB"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             name="WLBlueHorizonB"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             name="BHText5"
-             left="10"
-             top_pad="-15"
-             width="10">
-                I
-            </text>
-            <slider
-             control_name="WLBlueHorizonI"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="1.0"
-             layout="topleft"
-             name="WLBlueHorizonI"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="10"
-             top_pad="-10"
-             name="BDensText"
-             width="355">
-                Haze Horizon
-            </text>
-            <slider
-             control_name="WLHazeHorizon"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.25"
-             layout="topleft"
-             left="23"
-             top_delta="0"
-             top_pad="27"
-             name="WLHazeHorizon"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="245"
-             name="BDensText2"
-             top="4"
-             width="355">
-                Blue Density
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left="245"
-             name="BHText6"
-             top_pad="5"
-             width="10">
-                R
-            </text>
-            <slider
-             control_name="WLBlueDensityR"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_pad="3"
-             top_pad="6"
-             name="WLBlueDensityR"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left="245"
-             name="BHText7"
-             top_pad="-15"
-             width="10">
-                G
-            </text>
-            <slider
-             control_name="WLBlueDensityG"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             name="WLBlueDensityG"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left="245"
-             name="BHText8"
-             top_pad="-15"
-             width="10">
-                B
-            </text>
-            <slider
-             control_name="WLBlueDensityB"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             name="WLBlueDensityB"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left="245"
-             name="BHText9"
-             top_pad="-15"
-             width="10">
-                I
-            </text>
-            <slider
-             control_name="WLBlueDensityI"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="1"
-             layout="topleft"
-             left_delta="0"
-             name="WLBlueDensityI"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="245"
-             name="HDText"
-             top_pad="-10"
-             width="355">
-                Haze Density
-            </text>
-            <slider
-             control_name="WLHazeDensity"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left="258"
-             max_val="4"
-             name="WLHazeDensity"
-             top_pad="27"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="480"
-             name="DensMultText"
-             top="4"
-             width="355">
-                Density Multiplier
-            </text>
-            <slider
-             control_name="WLDensityMult"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.1"
-             layout="topleft"
-             left_delta="13"
-             max_val="0.9"
-             name="WLDensityMult"
-             top_pad="27"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="WLDistanceMultText"
-             top_pad="-10"
-             width="355">
-                Distance Multiplier
-            </text>
-            <slider
-             control_name="WLDistancMult"
-             decimal_digits="1"
-             follows="left"
-             height="10"
-             initial_value="1.0"
-             layout="topleft"
-             left_delta="13"
-             max_val="100"
-             name="WLDistanceMult"
-             top_pad="27"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="MaxAltText"
-             top_pad="-15"
-             width="355">
-                Max Altitude
-            </text>
-            <slider
-             control_name="WLMaxAltitude"
-             decimal_digits="0"
-             follows="left"
-             height="10"
-             increment="1"
-             initial_value="500"
-             layout="topleft"
-             left_delta="13"
-             max_val="4000"
-             name="WLMaxAltitude"
-             top_pad="27"
-             width="200" />
-        </panel>
-        <panel
-         border="true"
-         follows="left|top|right|bottom"
-         height="196"
-         label="LIGHTING"
-         layout="topleft"
-         left_delta="0"
-         help_topic="windlight_lighting_tab"
-         name="Lighting"
-         top_delta="4"
-         width="698">
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="10"
-             name="SLCText"
-             top="4"
-             width="355">
-                Sun/Moon Color
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="0"
-             name="BHText"
-             top_pad="5"
-             width="10">
-                R
-            </text>
-            <slider
-             control_name="WLSunlightR"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_pad="3"
-             top_pad="6"
-             name="WLSunlightR"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText2"
-             top_pad="-15"
-             width="10">
-                G
-            </text>
-            <slider
-             control_name="WLSunlightG"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             name="WLSunlightG"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText3"
-             top_pad="-15"
-             width="10">
-                B
-            </text>
-            <slider
-             control_name="WLSunlightB"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             name="WLSunlightB"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText4"
-             top_pad="-15"
-             width="10">
-                I
-            </text>
-            <slider
-             control_name="WLSunlightI"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="1.0"
-             layout="topleft"
-             left_delta="0"
-             name="WLSunlightI"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="TODText"
-             top_pad="-10"
-             width="355">
-                Sun/Moon Position
-            </text>
-            <icon
-             height="20"
-             image_name="icon_diurnal.tga"
-             layout="topleft"
-             left_delta="14"
-             top_pad="10"
-             name="SkyDayCycle"
-             use_draw_context_alpha="false"
-             width="148" />
-            <slider
-             control_name="WLSunAngle"
-             follows="left"
-             height="10"
-             increment="0.001"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="-8"
-             name="WLSunAngle"
-             top_pad="20"
-             width="207" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="245"
-             name="WLAmbientText"
-             top="4"
-             width="355">
-                Ambient
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="0"
-             name="BHText5"
-             top_pad="5"
-             width="10">
-                R
-            </text>
-            <slider
-             control_name="WLAmbientR"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_pad="3"
-             top_pad="6"
-             name="WLAmbientR"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText6"
-             top_pad="-15"
-             width="10">
-                G
-            </text>
-            <slider
-             control_name="WLAmbientG"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             name="WLAmbientG"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText7"
-             top_pad="-15"
-             width="10">
-                B
-            </text>
-            <slider
-             control_name="WLAmbientB"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             name="WLAmbientB"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText8"
-             top_pad="-15"
-             width="10">
-                I
-            </text>
-            <slider
-             control_name="WLAmbientI"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="1"
-             layout="topleft"
-             left_delta="0"
-             name="WLAmbientI"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="WLEastAngleText"
-             top_pad="-10"
-             width="355">
-                East Angle
-            </text>
-            <slider
-             control_name="WLEastAngle"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.0"
-             layout="topleft"
-             left_delta="13"
-             name="WLEastAngle"
-             top_pad="27"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="480"
-             name="SunGlowText"
-             top="4"
-             width="355">
-                Sun Glow
-            </text>
-            <slider
-             control_name="WLGlowB"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.1"
-             label="Focus "
-             layout="topleft"
-             left_delta="0"
-             max_val="0.5"
-             name="WLGlowB"
-             top_pad="27"
-             width="200" />
-            <slider
-             control_name="WLGlowR"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.25"
-             label="Size    "
-             layout="topleft"
-             left_delta="0"
-             max_val="1.99"
-             min_val="1"
-             name="WLGlowR"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="0"
-             name="SceneGammaText"
-             top_pad="-10"
-             width="200">
-                Scene Gamma
-            </text>
-            <slider
-             control_name="WLGamma"
-             decimal_digits="2"
-             follows="bottom"
-             height="10"
-             increment="0.01"
-             initial_value="2.0"
-             layout="topleft"
-             left_delta="0"
-             max_val="10"
-             name="WLGamma"
-             top_pad="27"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="0"
-             name="WLStarText"
-             top_pad="-10"
-             width="355">
-                Star Brightness
-            </text>
-            <slider
-             control_name="WLStarAlpha"
-             decimal_digits="2"
-             follows="bottom"
-             height="10"
-             increment="0.01"
-             initial_value="0"
-             layout="topleft"
-             left_delta="0"
-             max_val="2"
-             name="WLStarAlpha"
-             top_pad="27"
-             width="200" />
-        </panel>
-        <panel
-         border="true"
-         follows="left|top|right|bottom"
-         height="196"
-         label="CLOUDS"
-         layout="topleft"
-         left_delta="0"
-         mouse_opaque="false"
-         help_topic="windlight_clouds_tab"
-         name="Clouds"
-         top_delta="4"
-         width="698">
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="10"
-             name="WLCloudColorText"
-             top="4"
-             width="355">
-                Cloud Color
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="0"
-             name="BHText"
-             top_pad="5"
-             width="10">
-                R
-            </text>
-            <slider
-             control_name="WLCloudColorR"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_pad="3"
-             top_pad="6"
-             name="WLCloudColorR"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText2"
-             top_pad="-15"
-             width="10">
-                G
-            </text>
-            <slider
-             control_name="WLCloudColorG"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             name="WLCloudColorG"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText3"
-             top_pad="-15"
-             width="10">
-                B
-            </text>
-            <slider
-             control_name="WLCloudColorB"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.7"
-             layout="topleft"
-             left_delta="0"
-             name="WLCloudColorB"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText4"
-             top_pad="-15"
-             width="10">
-                I
-            </text>
-            <slider
-             control_name="WLCloudColorI"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="1.0"
-             layout="topleft"
-             left_delta="0"
-             name="WLCloudColorI"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="WLCloudColorText2"
-             top_pad="-10"
-             width="355">
-                Cloud XY/Density
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="0"
-             name="BHText5"
-             top_pad="5"
-             width="10">
-                X
-            </text>
-            <slider
-             control_name="WLCloudX"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.5"
-             layout="topleft"
-             left_pad="3"
-             top_pad="6"
-             name="WLCloudX"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText6"
-             top_pad="-15"
-             width="10">
-                Y
-            </text>
-            <slider
-             control_name="WLCloudY"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.5"
-             layout="topleft"
-             left_pad="3"
-             top_pad="6"
-             name="WLCloudY"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText7"
-             top_pad="-15"
-             width="10">
-                D
-            </text>
-            <slider
-             control_name="WLCloudDensity"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="1.0"
-             layout="topleft"
-             left_delta="0"
-             name="WLCloudDensity"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="245"
-             name="WLCloudCoverageText"
-             top="4"
-             width="355">
-                Cloud Coverage
-            </text>
-            <slider
-             control_name="WLCloudCoverage"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.5"
-             layout="topleft"
-             left_delta="13"
-             name="WLCloudCoverage"
-             top_pad="27"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="WLCloudScaleText"
-             top_pad="-10"
-             width="355">
-                Cloud Scale
-            </text>
-            <slider
-             control_name="WLCloudScale"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="1.0"
-             layout="topleft"
-             left_delta="13"
-             min_val="0.01"
-             name="WLCloudScale"
-             top_pad="27"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="WLCloudDetailText"
-             top_pad="-10"
-             width="355">
-                Cloud Detail (XY/Density)
-            </text>
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="0"
-             name="BHText8"
-             top_pad="8"
-             width="10">
-                X
-            </text>
-            <slider
-             control_name="WLCloudDetailX"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.5"
-             layout="topleft"
-             left_pad="3"
-             top_pad="8"
-             name="WLCloudDetailX"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText9"
-             top_pad="-15"
-             width="10">
-                Y
-            </text>
-            <slider
-             control_name="WLCloudDetailY"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.5"
-             layout="topleft"
-             left_delta="0"
-             name="WLCloudDetailY"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             halign="center"
-             height="16"
-             layout="topleft"
-             left_delta="-13"
-             name="BHText10"
-             top_pad="-15"
-             width="10">
-                D
-            </text>
-            <slider
-             control_name="WLCloudDetailDensity"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="1.0"
-             layout="topleft"
-             left_delta="0"
-             name="WLCloudDetailDensity"
-             left_pad="3"
-             top_pad="6"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left="480"
-             name="WLCloudScrollXText"
-             top="4"
-             width="355">
-                Cloud Scroll X
-            </text>
-            <check_box
-             control_name="WLCloudLockX"
-             follows="left"
-             height="16"
-             label="Lock"
-             layout="topleft"
-             left="625"
-             name="WLCloudLockX"
-             width="200" />
-            <slider
-             control_name="WLCloudScrollX"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.5"
-             layout="topleft"
-             left="494"
-             max_val="10"
-             min_val="-10"
-             name="WLCloudScrollX"
-             top="45"
-             width="200" />
-            <text
-             type="string"
-             length="1"
-             follows="left|top|right"
-             font="SansSerif"
-             height="16"
-             layout="topleft"
-             left_delta="-14"
-             name="WLCloudScrollYText"
-             top_delta="-1"
-             width="355">
-                Cloud Scroll Y
-            </text>
-            <check_box
-             control_name="WLCloudLockY"
-             follows="left"
-             height="16"
-             label="Lock"
-             layout="topleft"
-             left="625"
-             name="WLCloudLockY"
-             width="200" />
-            <slider
-             control_name="WLCloudScrollY"
-             decimal_digits="2"
-             follows="left"
-             height="10"
-             increment="0.01"
-             initial_value="0.5"
-             layout="topleft"
-             left="494"
-             max_val="10"
-             min_val="-10"
-             name="WLCloudScrollY"
-             top="85"
-             width="200" />
-            <check_box
-             control_name="DrawClassicClouds"
-             follows="left"
-             height="16"
-             label="Draw Classic Clouds"
-             layout="topleft"
-             left="480"
-             name="DrawClassicClouds"
-             top="104"
-             width="200" />
-        </panel>
-    </tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/en/panel_region_texture.xml b/indra/newview/skins/default/xui/en/panel_region_texture.xml
deleted file mode 100644
index 5d910ea659..0000000000
--- a/indra/newview/skins/default/xui/en/panel_region_texture.xml
+++ /dev/null
@@ -1,327 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
-<panel
- border="true"
- follows="top|left"
- height="320"
- help_topic="panel_region_texture_tab"
- label="Ground Textures"
- layout="topleft"
- left="0"
- name="Textures"
- top="320"
- width="480">
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     font="SansSerif"
-     height="20"
-     layout="topleft"
-     left="10"
-     name="region_text_lbl"
-     top="10"
-     width="100">
-        Region:
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     font="SansSerif"
-     height="20"
-     layout="topleft"
-     left_delta="50"
-     name="region_text"
-     top_delta="0"
-     width="400">
-        unknown
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left="10"
-     name="detail_texture_text"
-     top="36"
-     width="300">
-        Terrain Textures (requires 512x512, 24 bit .tga files)
-    </text>
-    <texture_picker
-     follows="left|top"
-     height="100"
-     layout="topleft"
-     left_delta="0"
-     name="texture_detail_0"
-     top_delta="20"
-     width="100" />
-    <texture_picker
-     follows="left|top"
-     height="100"
-     layout="topleft"
-     left_pad="10"
-     name="texture_detail_1"
-     top_delta="0"
-     width="100" />
-    <texture_picker
-     follows="left|top"
-     height="100"
-     layout="topleft"
-     left_pad="10"
-     name="texture_detail_2"
-     top_delta="0"
-     width="100" />
-    <texture_picker
-     follows="left|top"
-     height="100"
-     layout="topleft"
-     left_pad="10"
-     name="texture_detail_3"
-     top_delta="0"
-     width="100" />
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left="10"
-     name="height_text_lbl"
-     top="146"
-     width="65">
-        1 (Low)
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left_pad="45"
-     name="height_text_lbl2"
-     top_delta="0"
-     width="100">
-        2
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left_pad="10"
-     name="height_text_lbl3"
-     top_delta="0"
-     width="100">
-        3
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left_pad="10"
-     name="height_text_lbl4"
-     top_delta="0"
-     width="100">
-        4 (High)
-    </text>
-    <text
-     type="string"
-     length="1"
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left="10"
-     name="height_text_lbl5"
-     top="170"
-     width="300">
-        Texture Elevation Ranges
-    </text>
-    <text
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left="51"
-     name="height_text_lbl6"
-     top="185"
-     width="100">
-        Northwest
-    </text>
-    <text
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left_pad="10"
-     name="height_text_lbl7"
-     top_delta="0"
-     width="100">
-        Northeast
-    </text>
-<!--  northwest low-->
-     <spinner
-      follows="left|top"
-      height="20"
-      increment="0.5"
-      label="Low"
-      label_width="37"
-      layout="topleft"
-      left="10"
-      max_val="500"
-      min_val="-500"
-      name="height_start_spin_1"
-      top_delta="15"
-      width="100" />  
-<!--    northeast low-->
-      <spinner
-       follows="left|top"
-       height="20"
-       increment="0.5"
-       label="Low"
-       label_width="37"
-       layout="topleft"
-       left_pad="10"
-       max_val="500"
-       min_val="-500"
-       name="height_start_spin_3"
-       top_delta="0"
-       width="100" />
-<!--  northwest high-->
-     <spinner
-      follows="left|top"
-      height="20"
-      increment="0.5"
-      label="High"
-      label_width="37"
-      layout="topleft"
-      left="10"
-      max_val="500"
-      min_val="-500"
-      name="height_range_spin_1"
-      top_delta="20"
-      width="100" />
-<!--  northeast high-->
-    <spinner
-       follows="left|top"
-       height="20"
-       increment="0.5"
-       label="High"
-       label_width="37"
-       layout="topleft"
-       left_pad="10"
-       max_val="500"
-       min_val="-500"
-       name="height_range_spin_3"
-       top_delta="0"
-       width="100" />
-    <text
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left="51"
-     name="height_text_lbl8"
-     top_pad="10"
-     width="100">
-        Southwest
-    </text>
-    <text
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left_pad="10"
-     name="height_text_lbl9"
-     top_delta="0"
-     width="100">
-        Southeast
-    </text>
-<!--  southwest low-->
-    <spinner
-     follows="left|top"
-     height="20"
-     increment="0.5"
-     label="Low"
-     label_width="37"
-     layout="topleft"
-     left="10"
-     max_val="500"
-     min_val="-500"
-     name="height_start_spin_0"
-     top_delta="15"
-     width="100" />
-<!--  southeast low-->
-    <spinner
-     follows="left|top"
-     height="20"
-     increment="0.5"
-     label="Low"
-     label_width="37"
-     layout="topleft"
-     left_pad="10"
-     max_val="500"
-     min_val="-500"
-     name="height_start_spin_2"
-     top_delta="0"
-     width="100" />
-<!--southwest high-->
-    <spinner
-     follows="left|top"
-     height="20"
-     increment="0.5"
-     label="High"
-     label_width="37"
-     layout="topleft"
-     left="10"
-     max_val="500"
-     min_val="-500"
-     name="height_range_spin_0"
-     top_delta="20"
-     width="100" />
-<!--  southeast high-->
-    <spinner
-     follows="left|top"
-     height="20"
-     increment="0.5"
-     label="High"
-     label_width="37"
-     layout="topleft"
-     left_pad="10"
-     max_val="500"
-     min_val="-500"
-     name="height_range_spin_2"
-     top_delta="0"
-     width="100" />
-    <text
-     follows="left|top"
-     height="20"
-     layout="topleft"
-     left="10"
-     name="height_text_lbl10"
-     top_delta="30"
-     width="400"
-     word_wrap="true">
-      These values represent the blend range for the textures above.
-    </text>
-    <text
-       follows="left|top"
-       height="20"
-       layout="topleft"
-       left_delta="0"
-       name="height_text_lbl11"
-       top_delta="32"
-       width="400"
-       word_wrap="true">
-        Measured in meters, the LOW value is the MAXIMUM height of Texture #1, and the HIGH value is the MINIMUM height of Texture #4.
-      </text>
-    <button
-     enabled="false"
-     follows="left|bottom"
-     height="20"
-     label="Apply"
-     layout="topleft"
-     left="350"
-     name="apply_btn"
-     top="290"
-     width="100" />
-</panel>
diff --git a/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml
deleted file mode 100644
index 9c3ac1be0e..0000000000
--- a/indra/newview/skins/default/xui/es/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="EDITOR DEL CICLO DE UN DÍA">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="Ciclo de un día" name="Day Cycle">
-			<button label="?" name="WLDayCycleHelp"/>
-			<text name="WL12am">
-				12 am
-			</text>
-			<text name="WL3am">
-				3 am
-			</text>
-			<text name="WL6am">
-				6 am
-			</text>
-			<text name="WL9amHash">
-				9 am
-			</text>
-			<text name="WL12pmHash">
-				12 pm
-			</text>
-			<text name="WL3pm">
-				3 pm
-			</text>
-			<text name="WL6pm">
-				6 pm
-			</text>
-			<text name="WL9pm">
-				9 pm
-			</text>
-			<text name="WL12am2">
-				12 am
-			</text>
-			<text name="WL12amHash">
-				|
-			</text>
-			<text name="WL3amHash">
-				I
-			</text>
-			<text name="WL6amHash">
-				|
-			</text>
-			<text name="WL9amHash2">
-				I
-			</text>
-			<text name="WL12pmHash2">
-				|
-			</text>
-			<text name="WL3pmHash">
-				I
-			</text>
-			<text name="WL6pmHash">
-				|
-			</text>
-			<text name="WL9pmHash">
-				I
-			</text>
-			<text name="WL12amHash2">
-				|
-			</text>
-			<button label="Añadir un punto" label_selected="Añadir un punto" name="WLAddKey"/>
-			<button label="Quitar un punto" label_selected="Quitar un punto" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				Configuración del fotograma clave:
-			</text>
-			<text name="WLCurKeyTimeText">
-				Hora clave:
-			</text>
-			<spinner label="Hora" name="WLCurKeyHour"/>
-			<spinner label="Min." name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				Modelo predefinido:
-			</text>
-			<combo_box label="Predefinido" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				Intervalo:
-			</text>
-			<combo_box label="5 min." name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				Duración del ciclo:
-			</text>
-			<spinner label="Hora" name="WLLengthOfDayHour"/>
-			<spinner label="Min." name="WLLengthOfDayMin"/>
-			<spinner label="Seg." name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				Vista previa:
-			</text>
-			<button label="Probar" label_selected="Probar" name="WLAnimSky"/>
-			<button label="Parar" label_selected="Parar" name="WLStopAnimSky"/>
-			<button label="Usar el horario del estado" label_selected="Ir al horario del estado" name="WLUseLindenTime"/>
-			<button label="Guardar este tipo de día" label_selected="Guardar este tipo de día" name="WLSaveDayCycle"/>
-			<button label="Cargar y probar un tipo de día" label_selected="Cargar y probar un tipo de día" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_env_settings.xml b/indra/newview/skins/default/xui/es/floater_env_settings.xml
deleted file mode 100644
index 195690f546..0000000000
--- a/indra/newview/skins/default/xui/es/floater_env_settings.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Environment Editor Floater" title="EDITOR DEL ENTORNO">
-	<floater.string name="timeStr">
-		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
-	</floater.string>
-	<text name="EnvTimeText">
-		Duración de
-un día
-	</text>
-	<text name="EnvTimeText2">
-		12:00 PM
-	</text>
-	<text name="EnvCloudText">
-		Nubosidad
-	</text>
-	<text name="EnvWaterColorText">
-		Color del
-agua
-	</text>
-	<color_swatch label="" name="EnvWaterColor" tool_tip="Pulsa para abrir el selector de color"/>
-	<text name="EnvWaterFogText">
-		Claridad del
-agua
-	</text>
-	<button bottom="-144" label="Usar el horario del estado" name="EnvUseEstateTimeButton" width="155"/>
-	<button label="Cielo avanzado" left="167" name="EnvAdvancedSkyButton" width="155"/>
-	<button label="Agua avanzada" left="326" name="EnvAdvancedWaterButton" width="155"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_water.xml b/indra/newview/skins/default/xui/es/floater_water.xml
deleted file mode 100644
index 2c1f6cfbfb..0000000000
--- a/indra/newview/skins/default/xui/es/floater_water.xml
+++ /dev/null
@@ -1,88 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Water Floater" title="EDITOR AVANZADO DEL AGUA">
-	<text name="KeyFramePresetsText">
-		Agua predefinida:
-	</text>
-	<button label="Nueva" label_selected="Nueva" name="WaterNewPreset"/>
-	<button label="Guardar" label_selected="Guardar" name="WaterSavePreset"/>
-	<button label="Borrar" label_selected="Borrar" name="WaterDeletePreset"/>
-	<tab_container name="Water Tabs">
-		<panel label="CONFIGURACIÓN" name="Settings">
-			<text name="BHText">
-				Color del agua
-			</text>
-			<button label="?" left="175" name="WaterFogColorHelp"/>
-			<color_swatch label="" name="WaterFogColor" tool_tip="Pulsa para abrir el selector de color"/>
-			<text name="WaterFogDensText">
-				Transparencia
-			</text>
-			<button label="?" left="175" name="WaterFogDensityHelp"/>
-			<text name="WaterUnderWaterFogModText">
-				Modificar la claridad del agua
-			</text>
-			<button label="?" left="175" name="WaterUnderWaterFogModHelp"/>
-			<text name="BDensText">
-				Tamaño de las ondulaciones
-			</text>
-			<button label="?" left="405" name="WaterNormalScaleHelp"/>
-			<text name="BHText2">
-				1
-			</text>
-			<text name="BHText3">
-				2
-			</text>
-			<text name="BHText4">
-				3
-			</text>
-			<text name="HDText">
-				Escala de Fresnel
-			</text>
-			<button label="?" left="405" name="WaterFresnelScaleHelp"/>
-			<text name="FresnelOffsetText">
-				Coeficiente de reflexión
-			</text>
-			<button label="?" left="405" name="WaterFresnelOffsetHelp"/>
-			<text name="DensMultText">
-				Refracción de la superficie
-			</text>
-			<button label="?" left="640" name="WaterScaleAboveHelp"/>
-			<text name="WaterScaleBelowText">
-				Refracción bajo la superficie
-			</text>
-			<button label="?" left="640" name="WaterScaleBelowHelp"/>
-			<text name="MaxAltText">
-				Desenfoque
-			</text>
-			<button label="?" left="640" name="WaterBlurMultiplierHelp"/>
-		</panel>
-		<panel label="IMAGEN" name="Waves">
-			<text name="BHText">
-				Sentido de la onda grande
-			</text>
-			<button label="?" left="170" name="WaterWave1Help"/>
-			<text name="WaterWave1DirXText">
-				X
-			</text>
-			<text name="WaterWave1DirYText">
-				Y
-			</text>
-			<text name="BHText2">
-				Sentido de la onda pequeña
-			</text>
-			<button label="?" left="170" name="WaterWave2Help"/>
-			<text name="WaterWave2DirXText">
-				X
-			</text>
-			<text name="WaterWave2DirYText">
-				Y
-			</text>
-			<text name="BHText3">
-				Vista Normal
-			</text>
-			<button label="?" name="WaterNormalMapHelp"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultWaterNames">
-		Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/es/floater_windlight_options.xml b/indra/newview/skins/default/xui/es/floater_windlight_options.xml
deleted file mode 100644
index 585a42e429..0000000000
--- a/indra/newview/skins/default/xui/es/floater_windlight_options.xml
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="WindLight floater" title="EDITOR AVANZADO DEL CIELO">
-	<text name="KeyFramePresetsText">
-		Cielos definidos:
-	</text>
-	<button label="Nuevo" label_selected="Nuevo" name="WLNewPreset"/>
-	<button label="Guardar" label_selected="Guardar" name="WLSavePreset"/>
-	<button label="Borrar" label_selected="Borrar" name="WLDeletePreset"/>
-	<button font="SansSerifSmall" label="Editor del ciclo de un día" label_selected="Editor del ciclo de un día" left_delta="90" name="WLDayCycleMenuButton" width="150"/>
-	<tab_container name="WindLight Tabs">
-		<panel label="ATMÓSFERA" name="Atmosphere">
-			<text name="BHText">
-				Coloración
-			</text>
-			<button label="?" name="WLBlueHorizonHelp"/>
-			<text name="BHText2">
-				R
-			</text>
-			<text name="BHText3">
-				V
-			</text>
-			<text name="BHText4">
-				A
-			</text>
-			<text name="BHText5">
-				I
-			</text>
-			<text name="BDensText">
-				Cantidad de bruma
-			</text>
-			<button label="?" name="WLHazeHorizonHelp"/>
-			<text name="BDensText2">
-				Saturación
-			</text>
-			<button label="?" name="WLBlueDensityHelp"/>
-			<text name="BHText6">
-				R
-			</text>
-			<text name="BHText7">
-				V
-			</text>
-			<text name="BHText8">
-				A
-			</text>
-			<text name="BHText9">
-				I
-			</text>
-			<text name="HDText">
-				Densidad de la bruma
-			</text>
-			<button label="?" name="WLHazeDensityHelp"/>
-			<text name="DensMultText">
-				Densidad
-			</text>
-			<button label="?" name="WLDensityMultHelp"/>
-			<text name="WLDistanceMultText">
-				Distancia
-			</text>
-			<button label="?" name="WLDistanceMultHelp"/>
-			<text name="MaxAltText">
-				Altitud máx.
-			</text>
-			<button label="?" name="WLMaxAltitudeHelp"/>
-		</panel>
-		<panel label="LUZ" name="Lighting">
-			<text name="SLCText">
-				Color del Sol y de la Luna
-			</text>
-			<button label="?" name="WLSunlightColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				V
-			</text>
-			<text name="BHText3">
-				A
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="TODText">
-				Posición del Sol y la Luna
-			</text>
-			<button label="?" name="WLTimeOfDayHelp"/>
-			<text name="WLAmbientText">
-				Ambiental
-			</text>
-			<button label="?" name="WLAmbientHelp"/>
-			<text name="BHText5">
-				R
-			</text>
-			<text name="BHText6">
-				V
-			</text>
-			<text name="BHText7">
-				A
-			</text>
-			<text name="BHText8">
-				I
-			</text>
-			<text name="WLEastAngleText">
-				Ángulo de elevación
-			</text>
-			<button label="?" name="WLEastAngleHelp"/>
-			<text name="SunGlowText">
-				Resplandor del Sol
-			</text>
-			<button label="?" name="WLSunGlowHelp"/>
-			<slider label="Visión" name="WLGlowB"/>
-			<slider label="Tamaño" name="WLGlowR"/>
-			<text name="SceneGammaText">
-				Gamma de la escena
-			</text>
-			<button label="?" name="WLSceneGammaHelp"/>
-			<text name="WLStarText">
-				Brillo de las estrellas
-			</text>
-			<button label="?" name="WLStarBrightnessHelp"/>
-		</panel>
-		<panel label="NUBES" name="Clouds">
-			<text name="WLCloudColorText">
-				Color de las nubes
-			</text>
-			<button label="?" left="190" name="WLCloudColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				V
-			</text>
-			<text name="BHText3">
-				A
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="WLCloudColorText2">
-				Posición/Densidad de las nubes
-			</text>
-			<button label="?" left="190" name="WLCloudDensityHelp"/>
-			<text name="BHText5">
-				X
-			</text>
-			<text name="BHText6">
-				Y
-			</text>
-			<text name="BHText7">
-				D
-			</text>
-			<text name="WLCloudCoverageText">
-				Nubosidad
-			</text>
-			<button label="?" name="WLCloudCoverageHelp"/>
-			<text name="WLCloudScaleText">
-				Altitud de las nubes
-			</text>
-			<button label="?" name="WLCloudScaleHelp"/>
-			<text font="SansSerifSmall" name="WLCloudDetailText">
-				Detalle de las nubes (Posición/Densidad)
-			</text>
-			<button label="?" name="WLCloudDetailHelp"/>
-			<text bottom="-113" name="BHText8">
-				X
-			</text>
-			<text name="BHText9">
-				Y
-			</text>
-			<text name="BHText10">
-				D
-			</text>
-			<slider bottom="-127" name="WLCloudDetailX"/>
-			<text name="WLCloudScrollXText">
-				Velocidad de X
-			</text>
-			<button label="?" name="WLCloudScrollXHelp"/>
-			<check_box label="Bloquear" name="WLCloudLockX"/>
-			<text name="WLCloudScrollYText">
-				Velocidad de Y
-			</text>
-			<button label="?" name="WLCloudScrollYHelp"/>
-			<check_box label="Bloquear" name="WLCloudLockY"/>
-			<check_box label="Incluir nubes clásicas" name="DrawClassicClouds"/>
-			<button label="?" left="618" name="WLClassicCloudsHelp"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultSkyNames">
-		A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
deleted file mode 100644
index 0ce17b9dc6..0000000000
--- a/indra/newview/skins/default/xui/fr/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="EDITEUR DU CYCLE DU JOUR">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="Cycle du jour" name="Day Cycle">
-			<button label="?" name="WLDayCycleHelp"/>
-			<text name="WL12am">
-				Min.
-			</text>
-			<text name="WL3am">
-				3h
-			</text>
-			<text name="WL6am">
-				6h
-			</text>
-			<text name="WL9amHash">
-				9h
-			</text>
-			<text name="WL12pmHash">
-				Midi
-			</text>
-			<text name="WL3pm">
-				15h
-			</text>
-			<text name="WL6pm">
-				18h
-			</text>
-			<text name="WL9pm">
-				21h
-			</text>
-			<text name="WL12am2">
-				Min.
-			</text>
-			<text name="WL12amHash">
-				|
-			</text>
-			<text name="WL3amHash">
-				I
-			</text>
-			<text name="WL6amHash">
-				|
-			</text>
-			<text name="WL9amHash2">
-				I
-			</text>
-			<text name="WL12pmHash2">
-				|
-			</text>
-			<text name="WL3pmHash">
-				I
-			</text>
-			<text name="WL6pmHash">
-				|
-			</text>
-			<text name="WL9pmHash">
-				I
-			</text>
-			<text name="WL12amHash2">
-				|
-			</text>
-			<button label="Ajouter clé" label_selected="Ajouter clé" name="WLAddKey"/>
-			<button label="Supprimer clé" label_selected="Supprimer clé" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				Réglages des images-clés :
-			</text>
-			<text name="WLCurKeyTimeText">
-				Heure de la clé :
-			</text>
-			<spinner label="Heure" name="WLCurKeyHour"/>
-			<spinner label="Min" name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				Préréglages clés :
-			</text>
-			<combo_box label="Préréglage" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				Snap :
-			</text>
-			<combo_box label="5 min" name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				Durée du cycle :
-			</text>
-			<spinner label="Heure" name="WLLengthOfDayHour"/>
-			<spinner label="Min" name="WLLengthOfDayMin"/>
-			<spinner label="Sec" name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				Aperçu :
-			</text>
-			<button label="Lire" label_selected="Lire" name="WLAnimSky"/>
-			<button label="Arrêter" label_selected="Stop" name="WLStopAnimSky"/>
-			<button label="Utiliser heure domaine" label_selected="Aller heure domaine" name="WLUseLindenTime"/>
-			<button label="Enregistrer jour test" label_selected="Enregistrer jour test" name="WLSaveDayCycle"/>
-			<button label="Charger jour test" label_selected="Charger jour test" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_env_settings.xml b/indra/newview/skins/default/xui/fr/floater_env_settings.xml
deleted file mode 100644
index dd714e85b6..0000000000
--- a/indra/newview/skins/default/xui/fr/floater_env_settings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Environment Editor Floater" title="ÉDITEUR D&apos;ENVIRONNEMENT">
-	<floater.string name="timeStr">
-		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
-	</floater.string>
-	<text bottom="-45" name="EnvTimeText" top="29">
-		Heure de la
-journée
-	</text>
-	<text bottom_delta="-36" name="EnvTimeText2">
-		Midi
-	</text>
-	<text name="EnvCloudText">
-		Couverture
-nuageuse
-	</text>
-	<text bottom="-45" name="EnvWaterColorText" top="29">
-		Couleur de
-l&apos;eau
-	</text>
-	<color_swatch name="EnvWaterColor" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
-	<text name="EnvWaterFogText">
-		Brouillard
-dans l&apos;eau
-	</text>
-	<button bottom="-144" label="Utiliser heure du domaine" name="EnvUseEstateTimeButton" width="152"/>
-	<button label="Ciel avancé" left="162" name="EnvAdvancedSkyButton" width="145"/>
-	<button label="Eau avancée" left="316" name="EnvAdvancedWaterButton" width="145"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_water.xml b/indra/newview/skins/default/xui/fr/floater_water.xml
deleted file mode 100644
index 7d1e3cd65c..0000000000
--- a/indra/newview/skins/default/xui/fr/floater_water.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Water Floater" title="ÉDITEUR D&apos;EAU AVANCÉ">
-	<floater.string name="WLDefaultWaterNames">
-		Valeur par défaut:Transparente:Bassin:Trouble:Première plaie:SERPENT !!!:Valdez
-	</floater.string>
-	<text name="KeyFramePresetsText" width="120">
-		Préréglages :
-	</text>
-	<button label="Nouveau" label_selected="Nouveau" name="WaterNewPreset"/>
-	<button label="Enregistrer" label_selected="Enregistrer" left_delta="75" name="WaterSavePreset" width="75"/>
-	<button label="Supprimer" label_selected="Supprimer" left_delta="80" name="WaterDeletePreset"/>
-	<tab_container name="Water Tabs">
-		<panel label="PARAMÈTRES" name="Settings">
-			<text name="BHText">
-				Couleur du brouillard dans l&apos;eau
-			</text>
-			<color_swatch left="75" name="WaterFogColor" tool_tip="Cliquez pour ouvrir le sélecteur de couleurs"/>
-			<text name="WaterFogDensText">
-				Densité du brouillard
-			</text>
-			<text name="WaterUnderWaterFogModText">
-				Brouillard sous-marin
-			</text>
-			<text name="BDensText">
-				Échelle des vaguelettes
-			</text>
-			<slider label="1" name="WaterNormalScaleX"/>
-			<slider label="2" name="WaterNormalScaleY"/>
-			<slider label="3" name="WaterNormalScaleZ"/>
-			<text name="HDText">
-				Échelle Fresnel
-			</text>
-			<text name="FresnelOffsetText">
-				Décalage Fresnel
-			</text>
-			<text name="DensMultText">
-				Réfraction au-dessus
-			</text>
-			<text name="WaterScaleBelowText">
-				Réfraction en dessous
-			</text>
-			<text name="MaxAltText">
-				Multiplicateur de flou
-			</text>
-		</panel>
-		<panel label="IMAGE" name="Waves">
-			<text name="BHText">
-				Direction grande vague
-			</text>
-			<text name="WaterWave1DirXText">
-				X
-			</text>
-			<text name="WaterWave1DirYText">
-				Y
-			</text>
-			<text name="BHText2">
-				Direction petite vague
-			</text>
-			<text name="WaterWave2DirXText">
-				X
-			</text>
-			<text name="WaterWave2DirYText">
-				Y
-			</text>
-			<text name="BHText3">
-				Normal Map
-			</text>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/fr/floater_windlight_options.xml b/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
deleted file mode 100644
index 657e5f5051..0000000000
--- a/indra/newview/skins/default/xui/fr/floater_windlight_options.xml
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="WindLight floater" title="ÉDITEUR DE CIEL AVANCÉ" width="706">
-	<text name="KeyFramePresetsText">
-		Préréglages :
-	</text>
-	<button label="Nouveau" label_selected="Nouveau" name="WLNewPreset"/>
-	<button label="Enregistrer" label_selected="Enregistrer" left_delta="75" name="WLSavePreset" width="75"/>
-	<button label="Supprimer" label_selected="Supprimer" left_delta="80" name="WLDeletePreset"/>
-	<button label="Éditeur du cycle du jour" label_selected="Éditeur du cycle du jour" left_delta="95" left_pad="20" name="WLDayCycleMenuButton" width="150"/>
-	<tab_container name="WindLight Tabs" width="706">
-		<panel label="ATMOSPHÈRE" name="Atmosphere">
-			<text name="BHText">
-				Bleu de l&apos;horizon
-			</text>
-			<button label="?" name="WLBlueHorizonHelp"/>
-			<text name="BHText2">
-				R
-			</text>
-			<text name="BHText3">
-				V
-			</text>
-			<text name="BHText4">
-				B
-			</text>
-			<text name="BHText5">
-				I
-			</text>
-			<text name="BDensText">
-				Quantité de brume
-			</text>
-			<button label="?" name="WLHazeHorizonHelp"/>
-			<text name="BDensText2">
-				Densité du bleu
-			</text>
-			<button label="?" name="WLBlueDensityHelp"/>
-			<text name="BHText6">
-				R
-			</text>
-			<text name="BHText7">
-				V
-			</text>
-			<text name="BHText8">
-				B
-			</text>
-			<text name="BHText9">
-				I
-			</text>
-			<text name="HDText">
-				Densité de la brume
-			</text>
-			<button label="?" name="WLHazeDensityHelp"/>
-			<text name="DensMultText">
-				Multiplicateur de densité
-			</text>
-			<button label="?" name="WLDensityMultHelp"/>
-			<text name="WLDistanceMultText">
-				Multiplicateur de distance
-			</text>
-			<button label="?" name="WLDistanceMultHelp"/>
-			<text name="MaxAltText">
-				Altitude maximum
-			</text>
-			<button label="?" name="WLMaxAltitudeHelp"/>
-		</panel>
-		<panel label="LUMIÈRE" name="Lighting">
-			<text name="SLCText">
-				Couleur soleil/lune
-			</text>
-			<button label="?" name="WLSunlightColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				V
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="TODText">
-				Position soleil/lune
-			</text>
-			<button label="?" name="WLTimeOfDayHelp"/>
-			<text name="WLAmbientText">
-				Éclairage ambiant
-			</text>
-			<button label="?" name="WLAmbientHelp"/>
-			<text name="BHText5">
-				R
-			</text>
-			<text name="BHText6">
-				V
-			</text>
-			<text name="BHText7">
-				B
-			</text>
-			<text name="BHText8">
-				I
-			</text>
-			<text name="WLEastAngleText">
-				Angle du levant
-			</text>
-			<button label="?" name="WLEastAngleHelp"/>
-			<text name="SunGlowText">
-				Rayonnement du soleil
-			</text>
-			<button label="?" name="WLSunGlowHelp"/>
-			<slider label="Netteté " name="WLGlowB"/>
-			<slider label="Taille    " name="WLGlowR"/>
-			<text name="SceneGammaText">
-				Gamma de la scène
-			</text>
-			<button label="?" name="WLSceneGammaHelp"/>
-			<text name="WLStarText">
-				Éclat des étoiles
-			</text>
-			<button label="?" name="WLStarBrightnessHelp"/>
-		</panel>
-		<panel label="NUAGES" name="Clouds">
-			<text name="WLCloudColorText">
-				Couleur des nuages
-			</text>
-			<button label="?" name="WLCloudColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				V
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="WLCloudColorText2">
-				Nuages XY/densité
-			</text>
-			<button label="?" name="WLCloudDensityHelp"/>
-			<text name="BHText5">
-				X
-			</text>
-			<text name="BHText6">
-				Y
-			</text>
-			<text name="BHText7">
-				D
-			</text>
-			<text name="WLCloudCoverageText">
-				Couverture nuageuse
-			</text>
-			<button label="?" left="407" name="WLCloudCoverageHelp"/>
-			<text name="WLCloudScaleText">
-				Altitude des nuages
-			</text>
-			<button label="?" left="407" name="WLCloudScaleHelp"/>
-			<text name="WLCloudDetailText">
-				Détails nuages (XY/densité)
-			</text>
-			<button bottom_delta="-2" label="?" left="407" name="WLCloudDetailHelp"/>
-			<text name="BHText8">
-				X
-			</text>
-			<text name="BHText9">
-				Y
-			</text>
-			<text name="BHText10">
-				D
-			</text>
-			<text name="WLCloudScrollXText">
-				Direction et vitesse X
-			</text>
-			<button label="?" name="WLCloudScrollXHelp"/>
-			<check_box label="Verrouiller" name="WLCloudLockX"/>
-			<text name="WLCloudScrollYText">
-				Direction et vitesse Y
-			</text>
-			<button label="?" name="WLCloudScrollYHelp"/>
-			<check_box label="Verrouiller" name="WLCloudLockY"/>
-			<check_box label="Nuages classiques" name="DrawClassicClouds"/>
-			<button label="?" name="WLClassicCloudsHelp"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultSkyNames">
-		A-Minuit:A-Midi:A-3h:A-15h:A-16h30:A-6h:A-18h:A-9h:A-21h:Barcelone:Blizzard:Bleu mi-journée:Après-midi sur la côte:Coucher de soleil (côte):Valeur par défaut:Coucher de soleil (désert):Belle journée:Gros nuages floconneux:Brumeux:Funky Funky:Funky Funky Funky:Gelatto:Fantôme:Vérités incohérentes:Mi-journée 1:Mi-journée 2:Mi-journée 3:Mi-journée 4:Nuit:Pirate:Mauve:Rêve de navigateur:Sensualité pure
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml
deleted file mode 100644
index 98c385d29f..0000000000
--- a/indra/newview/skins/default/xui/it/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="EDITOR DELLE CICLO GIORNO/NOTTE">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="Ciclo giorno/notte" name="Day Cycle">
-			<button label="?" name="WLDayCycleHelp"/>
-			<text name="WL12am">
-				0:00
-			</text>
-			<text name="WL3am">
-				3:00
-			</text>
-			<text name="WL6am">
-				6:00
-			</text>
-			<text name="WL9amHash">
-				9:00
-			</text>
-			<text name="WL12pmHash">
-				12:00
-			</text>
-			<text name="WL3pm">
-				15:00
-			</text>
-			<text name="WL6pm">
-				18:00
-			</text>
-			<text name="WL9pm">
-				21:00
-			</text>
-			<text name="WL12am2">
-				24:00
-			</text>
-			<text name="WL12amHash">
-				|
-			</text>
-			<text name="WL3amHash">
-				I
-			</text>
-			<text name="WL6amHash">
-				|
-			</text>
-			<text name="WL9amHash2">
-				I
-			</text>
-			<text name="WL12pmHash2">
-				|
-			</text>
-			<text name="WL3pmHash">
-				I
-			</text>
-			<text name="WL6pmHash">
-				|
-			</text>
-			<text name="WL9pmHash">
-				I
-			</text>
-			<text name="WL12amHash2">
-				|
-			</text>
-			<button label="Aggiungi voce" label_selected="Aggiungi voce" name="WLAddKey"/>
-			<button label_selected="Cancella voce" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				Impostazioni del fotogramma chiave:
-			</text>
-			<text name="WLCurKeyTimeText">
-				Tempo:
-			</text>
-			<spinner label="Ora" name="WLCurKeyHour"/>
-			<spinner label="Min" name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				Impostazione chiave:
-			</text>
-			<combo_box label="Programma:" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				Raggruppa:
-			</text>
-			<combo_box label="5 min" name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				Lunghezza del ciclo:
-			</text>
-			<spinner label="Ore" name="WLLengthOfDayHour"/>
-			<spinner label="Min" name="WLLengthOfDayMin"/>
-			<spinner label="Sec" name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				Anteprima:
-			</text>
-			<button label="Avvia" label_selected="Avvia" name="WLAnimSky"/>
-			<button label="Arresta!" label_selected="Arresta" name="WLStopAnimSky"/>
-			<button label="Usa l&apos;ora della proprietà" label_selected="Vai all&apos;ora della proprietà" name="WLUseLindenTime"/>
-			<button label="Salva il test del giorno" label_selected="Salva il test del giorno" name="WLSaveDayCycle"/>
-			<button label="Carica il test del giorno" label_selected="Carica il test del giorno" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_env_settings.xml b/indra/newview/skins/default/xui/it/floater_env_settings.xml
deleted file mode 100644
index 1c17c18e84..0000000000
--- a/indra/newview/skins/default/xui/it/floater_env_settings.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Environment Editor Floater" title="EDITOR DELL&apos;AMBIENTE">
-	<floater.string name="timeStr">
-		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
-	</floater.string>
-	<text name="EnvTimeText">
-		Ora del
-giorno
-	</text>
-	<text name="EnvTimeText2">
-		12:00 PM
-	</text>
-	<text name="EnvCloudText">
-		Intensità delle
-Nuvole
-	</text>
-	<text name="EnvWaterColorText">
-		Colore
-dell&apos;Acqua
-	</text>
-	<color_swatch label="" name="EnvWaterColor" tool_tip="Clicca per aprire il selettore dei colori"/>
-	<text name="EnvWaterFogText">
-		Nebbiosità
-dell&apos;acqua
-	</text>
-	<button bottom="-144" label="Usa orario della regione" name="EnvUseEstateTimeButton" width="145"/>
-	<button label="Cielo avanzato" name="EnvAdvancedSkyButton"/>
-	<button label="Acqua avanzata" name="EnvAdvancedWaterButton"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_water.xml b/indra/newview/skins/default/xui/it/floater_water.xml
deleted file mode 100644
index b25f0a6266..0000000000
--- a/indra/newview/skins/default/xui/it/floater_water.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Water Floater" title="EDITOR AVANZATO DELL&apos;ACQUA">
-	<text name="KeyFramePresetsText" width="245">
-		Impostazioni predeterminate dell&apos;acqua:
-	</text>
-	<combo_box left_delta="245" name="WaterPresetsCombo" width="150"/>
-	<button label="Nuovo" label_selected="Nuovo" name="WaterNewPreset"/>
-	<button label="Salva" label_selected="Salva" name="WaterSavePreset"/>
-	<button label="Cancella" label_selected="Cancella" name="WaterDeletePreset"/>
-	<tab_container name="Water Tabs">
-		<panel label="IMPOSTAZIONI" name="Settings">
-			<text name="BHText">
-				Colore della nebbiosità dell&apos;acqua
-			</text>
-			<button label="?" left="209" name="WaterFogColorHelp"/>
-			<color_swatch label="" name="WaterFogColor" tool_tip="Clicca per aprire il selettore dei colori"/>
-			<text font="SansSerifSmall" name="WaterFogDensText">
-				Esponente di densità della nebbia
- dell&apos;acqua
-			</text>
-			<slider bottom_delta="-40" name="WaterFogDensity"/>
-			<button label="?" left="209" name="WaterFogDensityHelp"/>
-			<text bottom="-140" font="SansSerifSmall" name="WaterUnderWaterFogModText">
-				Regolatore effetto nebbia subacquea
-			</text>
-			<button label="?" left="209" name="WaterUnderWaterFogModHelp"/>
-			<text name="BDensText">
-				Scala di riflessione delle onde
-			</text>
-			<button label="?" left="415" name="WaterNormalScaleHelp"/>
-			<text name="BHText2">
-				1
-			</text>
-			<text name="BHText3">
-				2
-			</text>
-			<text name="BHText4">
-				3
-			</text>
-			<text name="HDText">
-				Scala Fresnel
-			</text>
-			<button label="?" left="415" name="WaterFresnelScaleHelp"/>
-			<text name="FresnelOffsetText">
-				Offset Fresnel
-			</text>
-			<button label="?" left="415" name="WaterFresnelOffsetHelp"/>
-			<text font="SansSerifSmall" name="DensMultText">
-				Scala di rifrazione nell&apos;acqua
- dall&apos;alto
-			</text>
-			<slider bottom_delta="-40" name="WaterScaleAbove"/>
-			<button label="?" left="650" name="WaterScaleAboveHelp"/>
-			<text bottom="-70" font="SansSerifSmall" name="WaterScaleBelowText">
-				Scala di rifrazione nell&apos;acqua
- dal basso
-			</text>
-			<slider bottom_delta="-40" name="WaterScaleBelow"/>
-			<button label="?" left="650" name="WaterScaleBelowHelp"/>
-			<text bottom="-122" name="MaxAltText">
-				Moltiplicatore della sfocatura
-			</text>
-			<button label="?" left="650" name="WaterBlurMultiplierHelp"/>
-		</panel>
-		<panel label="IMMAGINE" name="Waves">
-			<text name="BHText">
-				Direzione della grande onda
-			</text>
-			<button label="?" left="170" name="WaterWave1Help"/>
-			<text name="WaterWave1DirXText">
-				X
-			</text>
-			<text name="WaterWave1DirYText">
-				Y
-			</text>
-			<text name="BHText2">
-				Direzione della piccola onda
-			</text>
-			<button label="?" left="170" name="WaterWave2Help"/>
-			<text name="WaterWave2DirXText">
-				X
-			</text>
-			<text name="WaterWave2DirYText">
-				Y
-			</text>
-			<text name="BHText3">
-				Mappatura normale
-			</text>
-			<button label="?" name="WaterNormalMapHelp"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultWaterNames">
-		Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/it/floater_windlight_options.xml b/indra/newview/skins/default/xui/it/floater_windlight_options.xml
deleted file mode 100644
index 6828d05be0..0000000000
--- a/indra/newview/skins/default/xui/it/floater_windlight_options.xml
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="WindLight floater" title="EDITOR AVANZATO DEL CIELO">
-	<text name="KeyFramePresetsText" width="105">
-		Cieli predefiniti:
-	</text>
-	<combo_box left_delta="105" name="WLPresetsCombo"/>
-	<button label="Nuovo" label_selected="Nuovo" name="WLNewPreset"/>
-	<button label="Salva" label_selected="Salva" left_delta="72" name="WLSavePreset"/>
-	<button label="Elimina" label_selected="Elimina" left_delta="72" name="WLDeletePreset"/>
-	<button font="SansSerifSmall" label="Editor del ciclo giorno/notte" label_selected="Editor del ciclo giorno/notte" left_delta="85" name="WLDayCycleMenuButton" width="165"/>
-	<tab_container name="WindLight Tabs">
-		<panel label="ATMOSFERA" name="Atmosphere">
-			<text name="BHText">
-				Blu dell&apos;Orizzonte
-			</text>
-			<button label="?" left="189" name="WLBlueHorizonHelp"/>
-			<text name="BHText2">
-				R
-			</text>
-			<text name="BHText3">
-				G
-			</text>
-			<text name="BHText4">
-				B
-			</text>
-			<text name="BHText5">
-				I
-			</text>
-			<text font="SansSerifSmall" name="BDensText">
-				Altezza della Foschia all&apos;Orizzonte
-			</text>
-			<button label="?" left="189" name="WLHazeHorizonHelp"/>
-			<text name="BDensText2">
-				Densità del Blu
-			</text>
-			<button label="?" name="WLBlueDensityHelp"/>
-			<text name="BHText6">
-				R
-			</text>
-			<text name="BHText7">
-				G
-			</text>
-			<text name="BHText8">
-				B
-			</text>
-			<text name="BHText9">
-				I
-			</text>
-			<text name="HDText">
-				Densità  della Foschia
-			</text>
-			<button label="?" name="WLHazeDensityHelp"/>
-			<text name="DensMultText">
-				Moltiplicatore di Densità
-			</text>
-			<button label="?" left="645" name="WLDensityMultHelp"/>
-			<text name="WLDistanceMultText">
-				Moltiplicatore della Distanza
-			</text>
-			<button label="?" left="645" name="WLDistanceMultHelp"/>
-			<text name="MaxAltText">
-				Altitudine Massima
-			</text>
-			<button label="?" left="645" name="WLMaxAltitudeHelp"/>
-		</panel>
-		<panel label="ILLUMINAZIONE" name="Lighting">
-			<text name="SLCText">
-				Colore Sole/Luna
-			</text>
-			<button label="?" name="WLSunlightColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="TODText">
-				Posizione Sole/Luna
-			</text>
-			<button label="?" name="WLTimeOfDayHelp"/>
-			<text name="WLAmbientText">
-				Ambiente
-			</text>
-			<button label="?" name="WLAmbientHelp"/>
-			<text name="BHText5">
-				R
-			</text>
-			<text name="BHText6">
-				G
-			</text>
-			<text name="BHText7">
-				B
-			</text>
-			<text name="BHText8">
-				I
-			</text>
-			<text name="WLEastAngleText">
-				Angolo Est
-			</text>
-			<button label="?" name="WLEastAngleHelp"/>
-			<text name="SunGlowText">
-				Corona intorno al sole
-			</text>
-			<button label="?" name="WLSunGlowHelp"/>
-			<slider label="Focus" name="WLGlowB"/>
-			<slider label="Grandezza" name="WLGlowR"/>
-			<text name="SceneGammaText">
-				Gamma della Scena
-			</text>
-			<button label="?" name="WLSceneGammaHelp"/>
-			<text name="WLStarText">
-				Luminosità  delle stelle
-			</text>
-			<button label="?" name="WLStarBrightnessHelp"/>
-		</panel>
-		<panel label="NUVOLE" name="Clouds">
-			<text name="WLCloudColorText">
-				Colore delle Nuvole
-			</text>
-			<button label="?" name="WLCloudColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="WLCloudColorText2">
-				Nuvole XY/Densità
-			</text>
-			<button label="?" name="WLCloudDensityHelp"/>
-			<text name="BHText5">
-				X
-			</text>
-			<text name="BHText6">
-				Y
-			</text>
-			<text name="BHText7">
-				D
-			</text>
-			<text name="WLCloudCoverageText">
-				Copertura delle Nuvole
-			</text>
-			<button label="?" left="415" name="WLCloudCoverageHelp"/>
-			<text name="WLCloudScaleText">
-				Altitudine delle Nuvole
-			</text>
-			<button label="?" left="415" name="WLCloudScaleHelp"/>
-			<text name="WLCloudDetailText">
-				Dettagli Nuvole (XY/ Densità)
-			</text>
-			<button label="?" left="415" name="WLCloudDetailHelp"/>
-			<text name="BHText8">
-				X
-			</text>
-			<text name="BHText9">
-				Y
-			</text>
-			<text name="BHText10">
-				D
-			</text>
-			<text name="WLCloudScrollXText">
-				Scorrimento delle X
-			</text>
-			<button label="?" name="WLCloudScrollXHelp"/>
-			<check_box label="Blocca" name="WLCloudLockX"/>
-			<text name="WLCloudScrollYText">
-				Scorrimento delle Y
-			</text>
-			<button label="?" name="WLCloudScrollYHelp"/>
-			<check_box label="Blocca" name="WLCloudLockY"/>
-			<check_box label="Mostra le Nuvole Classiche" name="DrawClassicClouds"/>
-			<button label="?" left="645" name="WLClassicCloudsHelp"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultSkyNames">
-		A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml
deleted file mode 100644
index b0949cd4e0..0000000000
--- a/indra/newview/skins/default/xui/ja/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="デイサイクル編集">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="デイサイクル" name="Day Cycle">
-			<button label="?" name="WLDayCycleHelp"/>
-			<text name="WL12am">
-				深夜 12時
-			</text>
-			<text name="WL3am">
-				午前 3時
-			</text>
-			<text name="WL6am">
-				午前 6時
-			</text>
-			<text name="WL9amHash">
-				午前 9時
-			</text>
-			<text name="WL12pmHash">
-				正午 12時
-			</text>
-			<text name="WL3pm">
-				午後 3時
-			</text>
-			<text name="WL6pm">
-				午後 6時
-			</text>
-			<text name="WL9pm">
-				午後 9時
-			</text>
-			<text name="WL12am2">
-				深夜 12時
-			</text>
-			<text name="WL12amHash">
-				|
-			</text>
-			<text name="WL3amHash">
-				I
-			</text>
-			<text name="WL6amHash">
-				|
-			</text>
-			<text name="WL9amHash2">
-				I
-			</text>
-			<text name="WL12pmHash2">
-				|
-			</text>
-			<text name="WL3pmHash">
-				I
-			</text>
-			<text name="WL6pmHash">
-				|
-			</text>
-			<text name="WL9pmHash">
-				I
-			</text>
-			<text name="WL12amHash2">
-				|
-			</text>
-			<button label="キーの追加" label_selected="キーの追加" name="WLAddKey"/>
-			<button label="キーの削除" label_selected="キーの削除" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				キーフレームの設定:
-			</text>
-			<text name="WLCurKeyTimeText">
-				キータイム:
-			</text>
-			<spinner label="時間" name="WLCurKeyHour"/>
-			<spinner label="分" name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				キーの事前設定:
-			</text>
-			<combo_box label="事前設定" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				スナップ:
-			</text>
-			<combo_box label="5 分" name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				サイクルの長さ:
-			</text>
-			<spinner label="時間" name="WLLengthOfDayHour"/>
-			<spinner label="分" name="WLLengthOfDayMin"/>
-			<spinner label="秒" name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				プレビュー:
-			</text>
-			<button label="再生" label_selected="再生" name="WLAnimSky"/>
-			<button label="停止" label_selected="停止" name="WLStopAnimSky"/>
-			<button label="不動産の時刻を使用" label_selected="不動産の時刻に変更" name="WLUseLindenTime"/>
-			<button label="デイテストを保存" label_selected="デイテストを保存" name="WLSaveDayCycle"/>
-			<button label="デイテストをロード" label_selected="デイテストをロード" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_env_settings.xml b/indra/newview/skins/default/xui/ja/floater_env_settings.xml
deleted file mode 100644
index 1d5f26a6eb..0000000000
--- a/indra/newview/skins/default/xui/ja/floater_env_settings.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Environment Editor Floater" title="自然環境エディター">
-	<floater.string name="timeStr">
-		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
-	</floater.string>
-	<text name="EnvTimeText">
-		時刻
-	</text>
-	<text name="EnvTimeText2">
-		正午 12:00
-	</text>
-	<text name="EnvCloudText">
-		雲の量
-	</text>
-	<text name="EnvWaterColorText">
-		水の色
-	</text>
-	<color_swatch name="EnvWaterColor" tool_tip="クリックしてカラーピッカーを開きます"/>
-	<text name="EnvWaterFogText">
-		水中照度
-	</text>
-	<button label="不動産の時刻を使用" name="EnvUseEstateTimeButton"/>
-	<button label="空の高度な設定" name="EnvAdvancedSkyButton"/>
-	<button label="水の高度な設定" name="EnvAdvancedWaterButton"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_water.xml b/indra/newview/skins/default/xui/ja/floater_water.xml
deleted file mode 100644
index fb64332e79..0000000000
--- a/indra/newview/skins/default/xui/ja/floater_water.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Water Floater" title="水の高度な編集">
-	<floater.string name="WLDefaultWaterNames">
-		Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
-	</floater.string>
-	<text name="KeyFramePresetsText">
-		水の事前設定:
-	</text>
-	<button label="新規" label_selected="新規" name="WaterNewPreset"/>
-	<button label="保存" label_selected="保存" name="WaterSavePreset"/>
-	<button label="削除" label_selected="削除" name="WaterDeletePreset"/>
-	<tab_container name="Water Tabs">
-		<panel label="設定" name="Settings">
-			<text name="BHText">
-				水中のフォグ効果の色
-			</text>
-			<color_swatch name="WaterFogColor" tool_tip="クリックしてカラーピッカーを開きます"/>
-			<text name="WaterFogDensText">
-				水中の透明度指数
-			</text>
-			<text name="WaterUnderWaterFogModText">
-				水中のフォグ効果加減
-			</text>
-			<text name="BDensText">
-				さざ波の反射スケール
-			</text>
-			<slider label="1" name="WaterNormalScaleX"/>
-			<slider label="2" name="WaterNormalScaleY"/>
-			<slider label="3" name="WaterNormalScaleZ"/>
-			<text name="HDText">
-				フレネルのスケール
-			</text>
-			<text name="FresnelOffsetText">
-				フレネルのオフセット
-			</text>
-			<text name="DensMultText">
-				水面の屈折スケール
-			</text>
-			<text name="WaterScaleBelowText">
-				水中の屈折スケール
-			</text>
-			<text name="MaxAltText">
-				不透明度の増幅
-			</text>
-		</panel>
-		<panel label="画像" name="Waves">
-			<text name="BHText">
-				大波の方向
-			</text>
-			<text name="WaterWave1DirXText">
-				X
-			</text>
-			<text name="WaterWave1DirYText">
-				Y
-			</text>
-			<text name="BHText2">
-				小波の方向
-			</text>
-			<text name="WaterWave2DirXText">
-				X
-			</text>
-			<text name="WaterWave2DirYText">
-				Y
-			</text>
-			<text name="BHText3">
-				ノーマルマップ
-			</text>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/ja/floater_windlight_options.xml b/indra/newview/skins/default/xui/ja/floater_windlight_options.xml
deleted file mode 100644
index feb94ef73e..0000000000
--- a/indra/newview/skins/default/xui/ja/floater_windlight_options.xml
+++ /dev/null
@@ -1,189 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="WindLight floater" title="空の高度な編集">
-	<text name="KeyFramePresetsText">
-		空の事前設定:
-	</text>
-	<button label="新規" label_selected="新規" name="WLNewPreset"/>
-	<button label="保存" label_selected="保存" name="WLSavePreset"/>
-	<button label="削除" label_selected="削除" name="WLDeletePreset"/>
-	<button label="デイサイクル編集" label_selected="デイサイクル編集" name="WLDayCycleMenuButton"/>
-	<tab_container name="WindLight Tabs">
-		<panel label="大気" name="Atmosphere">
-			<text name="BHText">
-				空の配色
-			</text>
-			<button label="?" name="WLBlueHorizonHelp"/>
-			<text name="BHText2">
-				R
-			</text>
-			<text name="BHText3">
-				G
-			</text>
-			<text name="BHText4">
-				B
-			</text>
-			<text name="BHText5">
-				I
-			</text>
-			<text name="BDensText">
-				空と遠景の露光
-			</text>
-			<button label="?" name="WLHazeHorizonHelp"/>
-			<text name="BDensText2">
-				空の配色と濃度
-			</text>
-			<button label="?" name="WLBlueDensityHelp"/>
-			<text name="BHText6">
-				R
-			</text>
-			<text name="BHText7">
-				G
-			</text>
-			<text name="BHText8">
-				B
-			</text>
-			<text name="BHText9">
-				I
-			</text>
-			<text name="HDText">
-				大気の不透明度
-			</text>
-			<button label="?" name="WLHazeDensityHelp"/>
-			<text name="DensMultText">
-				大気の不透明度の増幅
-			</text>
-			<button label="?" name="WLDensityMultHelp"/>
-			<text name="WLDistanceMultText">
-				視界の増幅
-			</text>
-			<button label="?" name="WLDistanceMultHelp"/>
-			<text name="MaxAltText">
-				最大高度
-			</text>
-			<button label="?" name="WLMaxAltitudeHelp"/>
-		</panel>
-		<panel label="ライティング" name="Lighting">
-			<text name="SLCText">
-				太陽/月の色
-			</text>
-			<button label="?" name="WLSunlightColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="TODText">
-				太陽/月の位置
-			</text>
-			<button label="?" name="WLTimeOfDayHelp"/>
-			<text name="WLAmbientText">
-				アンビエント
-			</text>
-			<button label="?" name="WLAmbientHelp"/>
-			<text name="BHText5">
-				R
-			</text>
-			<text name="BHText6">
-				G
-			</text>
-			<text name="BHText7">
-				B
-			</text>
-			<text name="BHText8">
-				I
-			</text>
-			<text name="WLEastAngleText">
-				東の角度
-			</text>
-			<button label="?" name="WLEastAngleHelp"/>
-			<text name="SunGlowText">
-				太陽の輝き
-			</text>
-			<button label="?" name="WLSunGlowHelp"/>
-			<slider label="フォーカス " name="WLGlowB"/>
-			<slider label="サイズ    " name="WLGlowR"/>
-			<text name="SceneGammaText">
-				風景ガンマ
-			</text>
-			<button label="?" name="WLSceneGammaHelp"/>
-			<text name="WLStarText">
-				星の輝き
-			</text>
-			<button label="?" name="WLStarBrightnessHelp"/>
-		</panel>
-		<panel label="雲" name="Clouds">
-			<text name="WLCloudColorText">
-				雲の色
-			</text>
-			<button label="?" name="WLCloudColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="WLCloudColorText2">
-				雲の XY/密度
-			</text>
-			<button label="?" name="WLCloudDensityHelp"/>
-			<text name="BHText5">
-				X
-			</text>
-			<text name="BHText6">
-				Y
-			</text>
-			<text name="BHText7">
-				D
-			</text>
-			<text name="WLCloudCoverageText">
-				雲の量
-			</text>
-			<button label="?" name="WLCloudCoverageHelp"/>
-			<text name="WLCloudScaleText">
-				雲のスケール
-			</text>
-			<button label="?" name="WLCloudScaleHelp"/>
-			<text name="WLCloudDetailText">
-				雲の詳細 (XY/密度)
-			</text>
-			<button label="?" name="WLCloudDetailHelp"/>
-			<text name="BHText8">
-				X
-			</text>
-			<text name="BHText9">
-				Y
-			</text>
-			<text name="BHText10">
-				D
-			</text>
-			<text name="WLCloudScrollXText">
-				雲の移動速度 (X 方向)
-			</text>
-			<button label="?" name="WLCloudScrollXHelp"/>
-			<check_box label="ロック" name="WLCloudLockX"/>
-			<text name="WLCloudScrollYText">
-				雲の移動速度 (Y 方向)
-			</text>
-			<button label="?" name="WLCloudScrollYHelp"/>
-			<check_box label="ロック" name="WLCloudLockY"/>
-			<check_box label="従来の雲を描画" name="DrawClassicClouds"/>
-			<button label="?" name="WLClassicCloudsHelp"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultSkyNames">
-		A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/nl/floater_day_cycle_options.xml
deleted file mode 100644
index 1f3e045a75..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="DAGCYCLUS EDITOR">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="Dagcyclus" name="Day Cycle">
-			<button label="?" name="WLDayCycleHelp"/>
-			<text name="WL12am">
-				0:00
-			</text>
-			<text name="WL3am">
-				3:00
-			</text>
-			<text name="WL6am">
-				6:00
-			</text>
-			<text name="WL9amHash">
-				9:00
-			</text>
-			<text name="WL12pmHash">
-				12:00
-			</text>
-			<text name="WL3pm">
-				15:00
-			</text>
-			<text name="WL6pm">
-				18:00
-			</text>
-			<text name="WL9pm">
-				21:00
-			</text>
-			<text name="WL12am2">
-				0:00
-			</text>
-			<text name="WL12amHash">
-				|
-			</text>
-			<text name="WL3amHash">
-				I
-			</text>
-			<text name="WL6amHash">
-				|
-			</text>
-			<text name="WL9amHash2">
-				I
-			</text>
-			<text name="WL12pmHash2">
-				|
-			</text>
-			<text name="WL3pmHash">
-				I
-			</text>
-			<text name="WL6pmHash">
-				|
-			</text>
-			<text name="WL9pmHash">
-				I
-			</text>
-			<text name="WL12amHash2">
-				|
-			</text>
-			<button label="Key toevoegen" label_selected="Key toevoegen" name="WLAddKey"/>
-			<button label="Key verwijderen" label_selected="Key verwijderen" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				Gemarkeerde frame instelling:
-			</text>
-			<text name="WLCurKeyTimeText">
-				Markering tijd:
-			</text>
-			<spinner label="Uur" name="WLCurKeyHour"/>
-			<spinner label="Min" name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				Markering voorinstelling:
-			</text>
-			<combo_box label="Voorinstelling" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				Snap:
-			</text>
-			<combo_box label="5 min" name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				Lengte van cyclus:
-			</text>
-			<spinner label="Uur" name="WLLengthOfDayHour"/>
-			<spinner label="Min" name="WLLengthOfDayMin"/>
-			<spinner label="Sec" name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				Voorbeeld:
-			</text>
-			<button label="Afspelen" label_selected="Afspelen" name="WLAnimSky"/>
-			<button label="Stop!" label_selected="Stop" name="WLStopAnimSky"/>
-			<button label="Gebruik estatetijd" label_selected="Ga naar Estate tijd" name="WLUseLindenTime"/>
-			<button label="Opslaan testdag" label_selected="Opslaan testdag" name="WLSaveDayCycle"/>
-			<button label="Laad testdag" label_selected="Laad testdag" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_env_settings.xml b/indra/newview/skins/default/xui/nl/floater_env_settings.xml
deleted file mode 100644
index 3c207040d2..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_env_settings.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Environment Editor Floater" title="OMGEVING EDITOR">
-	<text bottom="-42" name="EnvTimeText">
-		Tijd van de 
-dag
-	</text>
-	<text bottom_delta="-36" name="EnvTimeText2">
-		0:00
-	</text>
-	<text name="EnvCloudText">
-		Wolkendek
-	</text>
-	<text name="EnvWaterColorText">
-		Waterkleur
-	</text>
-	<color_swatch label="" name="EnvWaterColor" tool_tip="Klik om de kleurkiezer te openen"/>
-	<text name="EnvWaterFogText">
-		Watermist
-	</text>
-	<button label="Gebruik estate tijd" name="EnvUseEstateTimeButton"/>
-	<button label="Geavanceerde lucht" name="EnvAdvancedSkyButton"/>
-	<button label="Geavanceerd water" name="EnvAdvancedWaterButton"/>
-	<button label="?" name="EnvSettingsHelpButton"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_water.xml b/indra/newview/skins/default/xui/nl/floater_water.xml
deleted file mode 100644
index 1fb1ca241b..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_water.xml
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Water Floater" title="GEAVANCEERDE WATER EDITOR">
-	<combo_box bottom="-50" height="18" left_delta="116" name="WaterPresetsCombo" width="150" />
-	<text name="KeyFramePresetsText">
-		Watervoorinstellingen
-	</text>
-	<button label="Nieuw" label_selected="Nieuw" name="WaterNewPreset" left_delta="190"/>
-	<button label="Opslaan" label_selected="Opslaan" name="WaterSavePreset"/>
-	<button label="Verwijderen" label_selected="Verwijderen" name="WaterDeletePreset" width="80"/>
-	<tab_container name="Water Tabs">
-		<panel label="Instellingen" name="Settings">
-			<text name="BHText">
-				Watermistkleur
-			</text>
-			<button label="?" name="WaterFogColorHelp"/>
-			<color_swatch label="" name="WaterFogColor" tool_tip="Klik om de kleurkiezer te openen"/>
-			<text name="WaterFogDensText">
-				Mistdichtheidsexponent
-			</text>
-			<button label="?" name="WaterFogDensityHelp"/>
-			<text name="WaterUnderWaterFogModText">
-				Onderwatermist wijziger
-			</text>
-			<button label="?" name="WaterUnderWaterFogModHelp"/>
-			<text name="BDensText">
-				Reflectie wavelet schaal
-			</text>
-			<button label="?" name="WaterNormalScaleHelp"/>
-			<text name="BHText2">
-				1
-			</text>
-			<text name="BHText3">
-				2
-			</text>
-			<text name="BHText4">
-				3
-			</text>
-			<text name="HDText">
-				Fresnelschaal
-			</text>
-			<button label="?" name="WaterFresnelScaleHelp"/>
-			<text name="FresnelOffsetText">
-				Fresnelverplaatsing
-			</text>
-			<button label="?" name="WaterFresnelOffsetHelp"/>
-			<text name="DensMultText">
-				Refractieschaal boven
-			</text>
-			<button label="?" name="WaterScaleAboveHelp"/>
-			<text name="WaterScaleBelowText">
-				Refractieschaal onder
-			</text>
-			<button label="?" name="WaterScaleBelowHelp"/>
-			<text name="MaxAltText">
-				Wazigheidvermeerderaar
-			</text>
-			<button label="?" name="WaterBlurMultiplierHelp"/>
-		</panel>
-		<panel label="Afbeelding" name="Waves">
-			<text name="BHText">
-				Grote golven richting
-			</text>
-			<button label="?" name="WaterWave1Help"/>
-			<text name="WaterWave1DirXText">
-				X
-			</text>
-			<text name="WaterWave1DirYText">
-				Y
-			</text>
-			<text name="BHText2">
-				Kleine golf richting
-			</text>
-			<button label="?" name="WaterWave2Help"/>
-			<text name="WaterWave2DirXText">
-				X
-			</text>
-			<text name="WaterWave2DirYText">
-				Y
-			</text>
-			<text name="BHText3">
-				Normaalmap
-			</text>
-			<button label="?" name="WaterNormalMapHelp"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultWaterNames">
-		Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/nl/floater_windlight_options.xml b/indra/newview/skins/default/xui/nl/floater_windlight_options.xml
deleted file mode 100644
index b26dd7916e..0000000000
--- a/indra/newview/skins/default/xui/nl/floater_windlight_options.xml
+++ /dev/null
@@ -1,190 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="WindLight floater" title="GEAVANCEERDE LUCHT EDITOR">
-	<combo_box allow_text_entry="false" follows="left|top" mouse_opaque="true" name="WLPresetsCombo"/>
-	<text name="KeyFramePresetsText">
-		Lucht voorinstellingen
-	</text>
-	<button label="Nieuw" label_selected="Nieuw" name="WLNewPreset"/>
-	<button label="Opslaan" label_selected="Opslaan" name="WLSavePreset"/>
-	<button label="Verwijderen" label_selected="Verwijderen" name="WLDeletePreset"/>
-	<button label="Dag cyclus editor" label_selected="Dag cyclus editor" name="WLDayCycleMenuButton"/>
-	<tab_container name="WindLight Tabs">
-		<panel label="Atmosfeer" name="Atmosphere">
-			<text name="BHText">
-				Blauw Horizon
-			</text>
-			<button label="?" name="WLBlueHorizonHelp"/>
-			<text name="BHText2">
-				R
-			</text>
-			<text name="BHText3">
-				G
-			</text>
-			<text name="BHText4">
-				B
-			</text>
-			<text name="BHText5">
-				I
-			</text>
-			<text name="BDensText">
-				Nevel horizon
-			</text>
-			<button label="?" name="WLHazeHorizonHelp"/>
-			<text name="BDensText2">
-				Blauw dichtheid
-			</text>
-			<button label="?" name="WLBlueDensityHelp"/>
-			<text name="BHText6">
-				R
-			</text>
-			<text name="BHText7">
-				G
-			</text>
-			<text name="BHText8">
-				B
-			</text>
-			<text name="BHText9">
-				I
-			</text>
-			<text name="HDText">
-				Nevel dichtheid
-			</text>
-			<button label="?" name="WLHazeDensityHelp"/>
-			<text name="DensMultText">
-				Dichtheidsfactor
-			</text>
-			<button label="?" name="WLDensityMultHelp"/>
-			<text name="WLDistanceMultText">
-				Afstandsfactor
-			</text>
-			<button label="?" name="WLDistanceMultHelp"/>
-			<text name="MaxAltText">
-				Max hoogte
-			</text>
-			<button label="?" name="WLMaxAltitudeHelp"/>
-		</panel>
-		<panel label="Licht" name="Lighting">
-			<text name="SLCText">
-				Zon/maan kleur
-			</text>
-			<button label="?" name="WLSunlightColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="TODText">
-				Zon/maan positie
-			</text>
-			<button label="?" name="WLTimeOfDayHelp"/>
-			<text name="WLAmbientText">
-				Omgeving
-			</text>
-			<button label="?" name="WLAmbientHelp"/>
-			<text name="BHText5">
-				R
-			</text>
-			<text name="BHText6">
-				G
-			</text>
-			<text name="BHText7">
-				B
-			</text>
-			<text name="BHText8">
-				I
-			</text>
-			<text name="WLEastAngleText">
-				Oosthoek
-			</text>
-			<button label="?" name="WLEastAngleHelp"/>
-			<text name="SunGlowText">
-				Zonnegloed
-			</text>
-			<button label="?" name="WLSunGlowHelp"/>
-			<slider label="Focus  " name="WLGlowB"/>
-			<slider label="Grootte" name="WLGlowR"/>
-			<text name="SceneGammaText">
-				Scenegamma
-			</text>
-			<button label="?" name="WLSceneGammaHelp"/>
-			<text name="WLStarText">
-				Ster helderheid
-			</text>
-			<button label="?" name="WLStarBrightnessHelp"/>
-		</panel>
-		<panel label="Wolken" name="Clouds">
-			<text name="WLCloudColorText">
-				Wolkenkleur
-			</text>
-			<button label="?" name="WLCloudColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="WLCloudColorText2">
-				Wolken (XY/Dichtheid)
-			</text>
-			<button label="?" name="WLCloudDensityHelp"/>
-			<text name="BHText5">
-				X
-			</text>
-			<text name="BHText6">
-				Y
-			</text>
-			<text name="BHText7">
-				D
-			</text>
-			<text name="WLCloudCoverageText">
-				Wolkenbedekking
-			</text>
-			<button label="?" name="WLCloudCoverageHelp"/>
-			<text name="WLCloudScaleText">
-				Wolkenschaal
-			</text>
-			<button label="?" name="WLCloudScaleHelp"/>
-			<text name="WLCloudDetailText">
-				Wolkendetail (XY/Dichtheid)
-			</text>
-			<button label="?" name="WLCloudDetailHelp" left="404"/>
-			<text name="BHText8">
-				X
-			</text>
-			<text name="BHText9">
-				Y
-			</text>
-			<text name="BHText10">
-				D
-			</text>
-			<text name="WLCloudScrollXText">
-				Wolk verplaatsing X
-			</text>
-			<button label="?" name="WLCloudScrollXHelp" left="600"/>
-			<check_box label="Vastzetten" name="WLCloudLockX" left="622"/>
-			<text name="WLCloudScrollYText">
-				Wolk verplaatsing Y
-			</text>
-			<button label="?" name="WLCloudScrollYHelp" left="600"/>
-			<check_box label="Vastzetten" name="WLCloudLockY" left="622"/>
-			<check_box label="Teken klassieke wolken" name="DrawClassicClouds"/>
-			<button label="?" name="WLClassicCloudsHelp" left="620"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultSkyNames">
-		A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
deleted file mode 100644
index f3929df3e3..0000000000
--- a/indra/newview/skins/default/xui/pl/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="EDYTOR CYKLU DNIA">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="Cykl dnia" name="Day Cycle">
-			<button label="?" name="WLDayCycleHelp"/>
-			<multi_slider label="" name="WLTimeSlider"/>
-			<multi_slider label="" name="WLDayCycleKeys"/>
-			<text name="WL12am">
-				12am
-			</text>
-			<text name="WL3am">
-				3am
-			</text>
-			<text name="WL6am">
-				6am
-			</text>
-			<text name="WL9amHash">
-				9am
-			</text>
-			<text name="WL12pmHash">
-				12pm
-			</text>
-			<text name="WL3pm">
-				3pm
-			</text>
-			<text name="WL6pm">
-				6pm
-			</text>
-			<text name="WL9pm">
-				9pm
-			</text>
-			<text name="WL12am2">
-				12am
-			</text>
-			<text name="WL12amHash">
-				|
-			</text>
-			<text name="WL3amHash">
-				I
-			</text>
-			<text name="WL6amHash">
-				|
-			</text>
-			<text name="WL9amHash2">
-				I
-			</text>
-			<text name="WL12pmHash2">
-				|
-			</text>
-			<text name="WL3pmHash">
-				I
-			</text>
-			<text name="WL6pmHash">
-				|
-			</text>
-			<text name="WL9pmHash">
-				I
-			</text>
-			<text name="WL12amHash2">
-				|
-			</text>
-			<button label="Dodaj" label_selected="Dodaj" name="WLAddKey"/>
-			<button label="Usuń" label_selected="Usuń" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				Preferencje czasu:
-			</text>
-			<text name="WLCurKeyTimeText">
-				Czas:
-			</text>
-			<spinner label="Godz" name="WLCurKeyHour"/>
-			<spinner label="Min" name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				Ustawienia:
-			</text>
-			<combo_box label="Preset" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				Przerwij:
-			</text>
-			<combo_box label="5 min" name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				Długość cyklu:
-			</text>
-			<spinner label="Godz" name="WLLengthOfDayHour"/>
-			<spinner label="Min" name="WLLengthOfDayMin"/>
-			<spinner label="Sek" name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				Przeglądaj:
-			</text>
-			<button label="Start" label_selected="Start" name="WLAnimSky"/>
-			<button label="Stop" label_selected="Stop" name="WLStopAnimSky"/>
-			<button label="Używaj czasu regionu" label_selected="Używaj czasu regionu" name="WLUseLindenTime"/>
-			<button label="Zapisz test dnia" label_selected="Zapisz test dnia" name="WLSaveDayCycle"/>
-			<button label="Załaduj test dnia" label_selected="Załaduj test dnia" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_env_settings.xml b/indra/newview/skins/default/xui/pl/floater_env_settings.xml
deleted file mode 100644
index 3ab854fbbb..0000000000
--- a/indra/newview/skins/default/xui/pl/floater_env_settings.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Environment Editor Floater" title="EDYTOR ŚRODOWISKA">
-	<floater.string name="timeStr">
-		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
-	</floater.string>
-	<text name="EnvTimeText">
-		Czas
-	</text>
-	<text name="EnvTimeText2">
-		12:00 PM
-	</text>
-	<slider label="" name="EnvTimeSlider"/>
-	<text name="EnvCloudText">
-		Chmury:
-	</text>
-	<slider label="" name="EnvCloudSlider"/>
-	<text name="EnvWaterColorText">
-		Kolor wody
-	</text>
-	<color_swatch label="" name="EnvWaterColor" tool_tip="Kliknij aby wybrać kolor"/>
-	<text name="EnvWaterFogText">
-		Zamglenie:
-	</text>
-	<slider label="" name="EnvWaterFogSlider"/>
-	<button label="Używaj czasu regionu" name="EnvUseEstateTimeButton"/>
-	<button label="Zaawansowane niebo" name="EnvAdvancedSkyButton"/>
-	<button label="Zaawansowana woda" name="EnvAdvancedWaterButton"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_water.xml b/indra/newview/skins/default/xui/pl/floater_water.xml
deleted file mode 100644
index 9720dae516..0000000000
--- a/indra/newview/skins/default/xui/pl/floater_water.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Water Floater" title="ZAAWANSOWANY EDYTOR WODY">
-	<text name="KeyFramePresetsText">
-		Ustawienia wody:
-	</text>
-	<button label="Nowe" label_selected="Nowe" name="WaterNewPreset"/>
-	<button label="Zapisz" label_selected="Zapisz" name="WaterSavePreset"/>
-	<button label="Usuń" label_selected="Usuń" name="WaterDeletePreset"/>
-	<tab_container name="Water Tabs">
-		<panel label="USTAWIENIA" name="Settings">
-			<text name="BHText">
-				Kolor podwodnej mgły
-			</text>
-			<button label="?" name="WaterFogColorHelp"/>
-			<color_swatch label="" name="WaterFogColor" tool_tip="Kliknij aby wybrać kolor"/>
-			<text name="WaterFogDensText">
-				Wykładnik gęstości mgły
-			</text>
-			<button label="?" name="WaterFogDensityHelp"/>
-			<slider label="" name="WaterFogDensity"/>
-			<text name="WaterUnderWaterFogModText">
-				Modyfikator mgły
-			</text>
-			<button label="?" name="WaterUnderWaterFogModHelp"/>
-			<slider label="" name="WaterUnderWaterFogMod"/>
-			<text name="BDensText">
-				Skala zmarszczeń
-			</text>
-			<button label="?" name="WaterNormalScaleHelp"/>
-			<text name="BHText2">
-				1
-			</text>
-			<text name="BHText3">
-				2
-			</text>
-			<text name="BHText4">
-				3
-			</text>
-			<slider label="" name="WaterNormalScaleX"/>
-			<slider label="" name="WaterNormalScaleY"/>
-			<slider label="" name="WaterNormalScaleZ"/>
-			<text name="HDText">
-				Skala Fresnela
-			</text>
-			<button label="?" name="WaterFresnelScaleHelp"/>
-			<slider label="" name="WaterFresnelScale"/>
-			<text name="FresnelOffsetText">
-				Przesunięcie Fresnela
-			</text>
-			<button label="?" name="WaterFresnelOffsetHelp"/>
-			<slider label="" name="WaterFresnelOffset"/>
-			<text name="DensMultText">
-				Górna refrakcja
-			</text>
-			<button label="?" name="WaterScaleAboveHelp"/>
-			<slider label="" name="WaterScaleAbove"/>
-			<text name="WaterScaleBelowText">
-				Dolna refrakcja
-			</text>
-			<button label="?" name="WaterScaleBelowHelp"/>
-			<slider label="" name="WaterScaleBelow"/>
-			<text name="MaxAltText">
-				Mnożnik rozmycia
-			</text>
-			<button label="?" name="WaterBlurMultiplierHelp"/>
-			<slider label="" name="WaterBlurMult"/>
-		</panel>
-		<panel label="OBRAZ" name="Waves">
-			<text name="BHText">
-				Kierunek dużych fal
-			</text>
-			<button label="?" name="WaterWave1Help"/>
-			<text name="WaterWave1DirXText">
-				X
-			</text>
-			<text name="WaterWave1DirYText">
-				Y
-			</text>
-			<slider label="" name="WaterWave1DirX"/>
-			<slider label="" name="WaterWave1DirY"/>
-			<text name="BHText2">
-				Kierunek małych fal
-			</text>
-			<button label="?" name="WaterWave2Help"/>
-			<text name="WaterWave2DirXText">
-				X
-			</text>
-			<text name="WaterWave2DirYText">
-				Y
-			</text>
-			<slider label="" name="WaterWave2DirX"/>
-			<slider label="" name="WaterWave2DirY"/>
-			<text name="BHText3">
-				Mapa normalnych
-			</text>
-			<button label="?" name="WaterNormalMapHelp"/>
-			<texture_picker label="" name="WaterNormalMap"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultWaterNames">
-		Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml b/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
deleted file mode 100644
index 930e904464..0000000000
--- a/indra/newview/skins/default/xui/pl/floater_windlight_options.xml
+++ /dev/null
@@ -1,228 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="WindLight floater" title="ZAAWANSOWANY EDYTOR NIEBA">
-	<text name="KeyFramePresetsText">
-		Ustawienia nieba:
-	</text>
-	<button label="Nowe" label_selected="Nowe" name="WLNewPreset"/>
-	<button label="Zapisz" label_selected="Zapisz" name="WLSavePreset"/>
-	<button label="Usuń" label_selected="Usuń" name="WLDeletePreset"/>
-	<button label="Edytor cyklu dnia" label_selected="Edytor cyklu dnia" name="WLDayCycleMenuButton"/>
-	<tab_container name="WindLight Tabs">
-		<panel label="ATMOSFERA" name="Atmosphere">
-			<text name="BHText">
-				Horyzont błękitu
-			</text>
-			<button label="?" name="WLBlueHorizonHelp"/>
-			<text name="BHText2">
-				R
-			</text>
-			<text name="BHText3">
-				G
-			</text>
-			<text name="BHText4">
-				B
-			</text>
-			<text name="BHText5">
-				I
-			</text>
-			<slider label="" name="WLBlueHorizonR"/>
-			<slider label="" name="WLBlueHorizonG"/>
-			<slider label="" name="WLBlueHorizonB"/>
-			<slider label="" name="WLBlueHorizonI"/>
-			<text name="BDensText">
-				Horyzont zamglenia
-			</text>
-			<button label="?" name="WLHazeHorizonHelp"/>
-			<slider label="" name="WLHazeHorizon"/>
-			<text name="BDensText2">
-				Gęstość błękitu
-			</text>
-			<button label="?" name="WLBlueDensityHelp"/>
-			<text name="BHText6">
-				R
-			</text>
-			<text name="BHText7">
-				G
-			</text>
-			<text name="BHText8">
-				B
-			</text>
-			<text name="BHText9">
-				I
-			</text>
-			<slider label="" name="WLBlueDensityR"/>
-			<slider label="" name="WLBlueDensityG"/>
-			<slider label="" name="WLBlueDensityB"/>
-			<slider label="" name="WLBlueDensityI"/>
-			<text name="HDText">
-				Gęstość zamglenia
-			</text>
-			<button label="?" name="WLHazeDensityHelp"/>
-			<slider label="" name="WLHazeDensity"/>
-			<text name="DensMultText">
-				Mnożnik gęsości
-			</text>
-			<button label="?" name="WLDensityMultHelp"/>
-			<slider label="" name="WLDensityMult"/>
-			<text name="WLDistanceMultText">
-				Mnożnik dystansu
-			</text>
-			<button label="?" name="WLDistanceMultHelp"/>
-			<slider label="" name="WLDistanceMult"/>
-			<text name="MaxAltText">
-				Max wysokość
-			</text>
-			<button label="?" name="WLMaxAltitudeHelp"/>
-			<slider label="" name="WLMaxAltitude"/>
-		</panel>
-		<panel label="ŚWIATŁO" name="Lighting">
-			<text name="SLCText">
-				Kolor Słońca/Księżyca
-			</text>
-			<button label="?" name="WLSunlightColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<slider label="" name="WLSunlightR"/>
-			<slider label="" name="WLSunlightG"/>
-			<slider label="" name="WLSunlightB"/>
-			<slider label="" name="WLSunlightI"/>
-			<text name="TODText">
-				Pozycja Słońca/Księżyca
-			</text>
-			<button label="?" name="WLTimeOfDayHelp"/>
-			<slider label="" name="WLSunAngle"/>
-			<text name="WLAmbientText">
-				Otoczenie
-			</text>
-			<button label="?" name="WLAmbientHelp"/>
-			<text name="BHText5">
-				R
-			</text>
-			<text name="BHText6">
-				G
-			</text>
-			<text name="BHText7">
-				B
-			</text>
-			<text name="BHText8">
-				I
-			</text>
-			<slider label="" name="WLAmbientR"/>
-			<slider label="" name="WLAmbientG"/>
-			<slider label="" name="WLAmbientB"/>
-			<slider label="" name="WLAmbientI"/>
-			<text name="WLEastAngleText">
-				Pozycja wschodu
-			</text>
-			<button label="?" name="WLEastAngleHelp"/>
-			<slider label="" name="WLEastAngle"/>
-			<text name="SunGlowText">
-				Blask Słońca
-			</text>
-			<button label="?" name="WLSunGlowHelp"/>
-			<slider label="Ostrość" name="WLGlowB"/>
-			<slider label="Rozmiar" name="WLGlowR"/>
-			<text name="SceneGammaText">
-				Jasność obrazu
-			</text>
-			<button label="?" name="WLSceneGammaHelp"/>
-			<slider label="" name="WLGamma"/>
-			<text name="WLStarText">
-				Blask gwiazd
-			</text>
-			<button label="?" name="WLStarBrightnessHelp"/>
-			<slider label="" name="WLStarAlpha"/>
-		</panel>
-		<panel label="CHMURY" name="Clouds">
-			<text name="WLCloudColorText">
-				Kolor chmur
-			</text>
-			<button label="?" name="WLCloudColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<slider label="" name="WLCloudColorR"/>
-			<slider label="" name="WLCloudColorG"/>
-			<slider label="" name="WLCloudColorB"/>
-			<slider label="" name="WLCloudColorI"/>
-			<text name="WLCloudColorText2">
-				Chmury (XY/Gęstość)
-			</text>
-			<button label="?" name="WLCloudDensityHelp"/>
-			<text name="BHText5">
-				X
-			</text>
-			<text name="BHText6">
-				Y
-			</text>
-			<text name="BHText7">
-				G
-			</text>
-			<slider label="" name="WLCloudX"/>
-			<slider label="" name="WLCloudY"/>
-			<slider label="" name="WLCloudDensity"/>
-			<text name="WLCloudCoverageText">
-				Pokrycie chmur
-			</text>
-			<button label="?" name="WLCloudCoverageHelp"/>
-			<slider label="" name="WLCloudCoverage"/>
-			<text name="WLCloudScaleText">
-				Skala chmur
-			</text>
-			<button label="?" name="WLCloudScaleHelp"/>
-			<slider label="" name="WLCloudScale"/>
-			<text name="WLCloudDetailText">
-				Szczegóły (XY/gęstość)
-			</text>
-			<button label="?" name="WLCloudDetailHelp"/>
-			<text name="BHText8">
-				X
-			</text>
-			<text name="BHText9">
-				Y
-			</text>
-			<text name="BHText10">
-				G
-			</text>
-			<slider label="" name="WLCloudDetailX"/>
-			<slider label="" name="WLCloudDetailY"/>
-			<slider label="" name="WLCloudDetailDensity"/>
-			<text name="WLCloudScrollXText">
-				Przewijanie chmur X
-			</text>
-			<button label="?" name="WLCloudScrollXHelp"/>
-			<check_box label="Zablokuj" name="WLCloudLockX"/>
-			<slider label="" name="WLCloudScrollX"/>
-			<text name="WLCloudScrollYText">
-				Przewijanie chmur Y
-			</text>
-			<button label="?" name="WLCloudScrollYHelp"/>
-			<check_box label="Zablokuj" name="WLCloudLockY"/>
-			<slider label="" name="WLCloudScrollY"/>
-			<check_box label="Klasyczne chmury" name="DrawClassicClouds"/>
-			<button label="?" name="WLClassicCloudsHelp"/>
-		</panel>
-	</tab_container>
-	<string name="WLDefaultSkyNames">
-		A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
-	</string>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/pt/floater_day_cycle_options.xml
deleted file mode 100644
index 9560a3b418..0000000000
--- a/indra/newview/skins/default/xui/pt/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="EDITOR DE CICLO DE DIA">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="Ciclo do dia" name="Day Cycle">
-			<button label="?" name="WLDayCycleHelp"/>
-			<text name="WL12am">
-				0:00
-			</text>
-			<text name="WL3am">
-				3:00
-			</text>
-			<text name="WL6am">
-				6:00
-			</text>
-			<text name="WL9amHash">
-				9:00
-			</text>
-			<text name="WL12pmHash">
-				12:00
-			</text>
-			<text name="WL3pm">
-				15:00
-			</text>
-			<text name="WL6pm">
-				18:00
-			</text>
-			<text name="WL9pm">
-				21:00
-			</text>
-			<text name="WL12am2">
-				24:00
-			</text>
-			<button label="Adicionar chave" label_selected="Adicionar chave" name="WLAddKey"/>
-			<button label="Apagar chave" label_selected="Apagar chave" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				Configurações de Quadro-chave:
-			</text>
-			<text name="WLCurKeyTimeText">
-				Tempo-chave:
-			</text>
-			<spinner label="Hora" name="WLCurKeyHour"/>
-			<spinner label="Minutos" name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				Ajuste-chave:
-			</text>
-			<combo_box label="Ajuste" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				Grudar:
-			</text>
-			<combo_box label="5 minutos" name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				Duração do Ciclo:
-			</text>
-			<spinner label="Hora" name="WLLengthOfDayHour"/>
-			<spinner label="Min." name="WLLengthOfDayMin"/>
-			<spinner label="Seg." name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				Visualizar
-			</text>
-			<button label="Tocar" label_selected="Tocar" name="WLAnimSky"/>
-			<button label="Pare!" label_selected="Pare" name="WLStopAnimSky"/>
-			<button label="Usar o horário da Propriedade" label_selected="Ir para o horário da Propriedade" name="WLUseLindenTime"/>
-			<button label="Salvar o Dia teste" label_selected="Salvar o Dia teste" name="WLSaveDayCycle"/>
-			<button label="Carregar o Dia teste" label_selected="Carregar o Dia teste" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_env_settings.xml b/indra/newview/skins/default/xui/pt/floater_env_settings.xml
deleted file mode 100644
index 3ca8d934c9..0000000000
--- a/indra/newview/skins/default/xui/pt/floater_env_settings.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Environment Editor Floater" title="EDITOR DO AMBIENTE">
-	<floater.string name="timeStr">
-		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
-	</floater.string>
-	<text name="EnvTimeText">
-		Hora do Dia
-	</text>
-	<text name="EnvTimeText2">
-		12:00 PM
-	</text>
-	<text name="EnvCloudText">
-		Cobertura de
-Nuvens
-	</text>
-	<text name="EnvWaterColorText">
-		Cor da água
-	</text>
-	<color_swatch label="" name="EnvWaterColor" tool_tip="Selecionar a cor"/>
-	<text name="EnvWaterFogText">
-		Névoa da
-água
-	</text>
-	<button bottom="-144" label="Usar hora da propriedade" name="EnvUseEstateTimeButton" width="155"/>
-	<button label="Céu Avançado" left="167" name="EnvAdvancedSkyButton" width="155"/>
-	<button label="Água Avançada" left="326" name="EnvAdvancedWaterButton" width="155"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_water.xml b/indra/newview/skins/default/xui/pt/floater_water.xml
deleted file mode 100644
index b2a06f4ff2..0000000000
--- a/indra/newview/skins/default/xui/pt/floater_water.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Water Floater" title="EDITOR DE ÁGUA AVANÇADO">
-	<text name="KeyFramePresetsText" width="175">
-		Pré-configurações da Água:
-	</text>
-	<combo_box left_delta="175" name="WaterPresetsCombo" width="150"/>
-	<button label="Novo" label_selected="Novo" name="WaterNewPreset"/>
-	<button label="Salvar" label_selected="Salvar" name="WaterSavePreset"/>
-	<button label="Deletar" label_selected="Deletar" name="WaterDeletePreset"/>
-	<tab_container name="Water Tabs">
-		<panel label="DEFINIÇÕES" name="Settings">
-			<text name="BHText">
-				Cor da névoa da Água
-			</text>
-			<button label="?" name="WaterFogColorHelp"/>
-			<color_swatch label="" name="WaterFogColor" tool_tip="Selecionar a cor"/>
-			<text name="WaterFogDensText">
-				Expoente da Densidade de névoa
-			</text>
-			<button label="?" left="209" name="WaterFogDensityHelp"/>
-			<text name="WaterUnderWaterFogModText">
-				Modificador da névoa Subaquática
-			</text>
-			<button label="?" left="209" name="WaterUnderWaterFogModHelp"/>
-			<text name="BDensText">
-				Escala da Marola de Reflexão
-			</text>
-			<button label="?" left="415" name="WaterNormalScaleHelp"/>
-			<text name="BHText2">
-				1
-			</text>
-			<text name="BHText3">
-				2
-			</text>
-			<text name="BHText4">
-				3
-			</text>
-			<text name="HDText">
-				Escala de Fresnel
-			</text>
-			<button label="?" left="415" name="WaterFresnelScaleHelp"/>
-			<text name="FresnelOffsetText">
-				Deslocamento de Fresnel
-			</text>
-			<button label="?" left="415" name="WaterFresnelOffsetHelp"/>
-			<text name="DensMultText">
-				Refratar a Escala para Cima
-			</text>
-			<button label="?" left="640" name="WaterScaleAboveHelp"/>
-			<text name="WaterScaleBelowText">
-				Refratar a Escala para Baixo
-			</text>
-			<button label="?" left="640" name="WaterScaleBelowHelp"/>
-			<text name="MaxAltText">
-				Multiplicador de Difusão
-			</text>
-			<button label="?" left="640" name="WaterBlurMultiplierHelp"/>
-		</panel>
-		<panel label="IMAGEM" name="Waves">
-			<text name="BHText">
-				Direção da Onda Maior
-			</text>
-			<button label="?" left="170" name="WaterWave1Help"/>
-			<text name="WaterWave1DirXText">
-				X
-			</text>
-			<text name="WaterWave1DirYText">
-				Y
-			</text>
-			<text name="BHText2">
-				Direção da Onda Pequena
-			</text>
-			<button label="?" left="170" name="WaterWave2Help"/>
-			<text name="WaterWave2DirXText">
-				X
-			</text>
-			<text name="WaterWave2DirYText">
-				Y
-			</text>
-			<text name="BHText3">
-				Mapa Normal
-			</text>
-			<button label="?" name="WaterNormalMapHelp"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/pt/floater_windlight_options.xml b/indra/newview/skins/default/xui/pt/floater_windlight_options.xml
deleted file mode 100644
index ec459bbb26..0000000000
--- a/indra/newview/skins/default/xui/pt/floater_windlight_options.xml
+++ /dev/null
@@ -1,187 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="WindLight floater" title="EDITOR DE CÉU AVANÇADO">
-	<text name="KeyFramePresetsText" width="140">
-		Pré-definições de Céu:
-	</text>
-	<combo_box left_delta="140" name="WLPresetsCombo"/>
-	<button label="Novo" label_selected="Novo" name="WLNewPreset"/>
-	<button label="Salvar" label_selected="Salvar" left_delta="72" name="WLSavePreset"/>
-	<button label="Deletar" label_selected="Deletar" left_delta="72" name="WLDeletePreset"/>
-	<button label="Editor de Ciclos do Dia" label_selected="Editor de Ciclos do Dia" left_delta="84" name="WLDayCycleMenuButton" width="150"/>
-	<tab_container name="WindLight Tabs">
-		<panel label="ATMOSFERA" name="Atmosphere">
-			<text name="BHText">
-				Horizonte Azul
-			</text>
-			<button label="?" name="WLBlueHorizonHelp"/>
-			<text name="BHText2">
-				R
-			</text>
-			<text name="BHText3">
-				G
-			</text>
-			<text name="BHText4">
-				B
-			</text>
-			<text name="BHText5">
-				I
-			</text>
-			<text name="BDensText">
-				Horizonte da Neblina
-			</text>
-			<button label="?" name="WLHazeHorizonHelp"/>
-			<text name="BDensText2">
-				Densidade de Azul
-			</text>
-			<button label="?" name="WLBlueDensityHelp"/>
-			<text name="BHText6">
-				R
-			</text>
-			<text name="BHText7">
-				G
-			</text>
-			<text name="BHText8">
-				B
-			</text>
-			<text name="BHText9">
-				I
-			</text>
-			<text name="HDText">
-				Densidade da Neblina
-			</text>
-			<button label="?" name="WLHazeDensityHelp"/>
-			<text name="DensMultText">
-				Multiplicador de Densidade
-			</text>
-			<button label="?" left="635" name="WLDensityMultHelp"/>
-			<text name="WLDistanceMultText">
-				Multiplicador de Distância
-			</text>
-			<button label="?" left="635" name="WLDistanceMultHelp"/>
-			<text name="MaxAltText">
-				Altitude Máxima
-			</text>
-			<button label="?" left="635" name="WLMaxAltitudeHelp"/>
-		</panel>
-		<panel label="ILUMINAÇÃO" name="Lighting">
-			<text name="SLCText">
-				Cor do Sol/Lua
-			</text>
-			<button label="?" name="WLSunlightColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="TODText">
-				Posição do Sol/Lua
-			</text>
-			<button label="?" name="WLTimeOfDayHelp"/>
-			<text name="WLAmbientText">
-				Ambiente
-			</text>
-			<button label="?" name="WLAmbientHelp"/>
-			<text name="BHText5">
-				R
-			</text>
-			<text name="BHText6">
-				G
-			</text>
-			<text name="BHText7">
-				B
-			</text>
-			<text name="BHText8">
-				I
-			</text>
-			<text name="WLEastAngleText">
-				Ângulo Leste
-			</text>
-			<button label="?" name="WLEastAngleHelp"/>
-			<text name="SunGlowText">
-				Brilho do Sol
-			</text>
-			<button label="?" name="WLSunGlowHelp"/>
-			<slider label="Foco" name="WLGlowB"/>
-			<slider label="Tamanho" name="WLGlowR"/>
-			<text name="SceneGammaText">
-				Gamma da Cena
-			</text>
-			<button label="?" name="WLSceneGammaHelp"/>
-			<text name="WLStarText">
-				Brilho da Estrela
-			</text>
-			<button label="?" name="WLStarBrightnessHelp"/>
-		</panel>
-		<panel label="NUVENS" name="Clouds">
-			<text name="WLCloudColorText">
-				Cor da Nuvem
-			</text>
-			<button label="?" name="WLCloudColorHelp"/>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="WLCloudColorText2">
-				Densidade/ XY da Nuvem
-			</text>
-			<button label="?" name="WLCloudDensityHelp"/>
-			<text name="BHText5">
-				X
-			</text>
-			<text name="BHText6">
-				Y
-			</text>
-			<text name="BHText7">
-				D
-			</text>
-			<text name="WLCloudCoverageText">
-				Cobertura da Nuvem
-			</text>
-			<button label="?" name="WLCloudCoverageHelp"/>
-			<text name="WLCloudScaleText">
-				Escala da Nuvem
-			</text>
-			<button label="?" name="WLCloudScaleHelp"/>
-			<text font="SansSerifSmall" name="WLCloudDetailText">
-				Detalhe da Nuvem (XY/Densidade)
-			</text>
-			<button label="?" left="421" name="WLCloudDetailHelp"/>
-			<text name="BHText8">
-				X
-			</text>
-			<text name="BHText9">
-				Y
-			</text>
-			<text name="BHText10">
-				D
-			</text>
-			<text name="WLCloudScrollXText">
-				Rolagem X da Nuvem
-			</text>
-			<button label="?" name="WLCloudScrollXHelp"/>
-			<check_box label="Travar" name="WLCloudLockX"/>
-			<text name="WLCloudScrollYText">
-				Rolagem Y da Nuvem
-			</text>
-			<button label="?" name="WLCloudScrollYHelp"/>
-			<check_box label="Travar" name="WLCloudLockY"/>
-			<check_box label="Desenhar Nuvens Clássicas" name="DrawClassicClouds"/>
-			<button label="?" left="645" name="WLClassicCloudsHelp"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml b/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml
deleted file mode 100644
index 28d2ba6ed4..0000000000
--- a/indra/newview/skins/default/xui/zh/floater_day_cycle_options.xml
+++ /dev/null
@@ -1,95 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Day Cycle Floater" title="日循環編輯器">
-	<tab_container name="Day Cycle Tabs">
-		<panel label="日循環" name="Day Cycle">
-			<multi_slider initial_value="0" name="WLTimeSlider"/>
-			<multi_slider initial_value="0" name="WLDayCycleKeys"/>
-			<text name="WL12am">
-				12am
-			</text>
-			<text name="WL3am">
-				3am
-			</text>
-			<text name="WL6am">
-				6am
-			</text>
-			<text name="WL9amHash">
-				9am
-			</text>
-			<text name="WL12pmHash">
-				12pm
-			</text>
-			<text name="WL3pm">
-				3pm
-			</text>
-			<text name="WL6pm">
-				6pm
-			</text>
-			<text name="WL9pm">
-				9pm
-			</text>
-			<text name="WL12am2">
-				12am
-			</text>
-			<text name="WL12amHash">
-				|
-			</text>
-			<text name="WL3amHash">
-				I
-			</text>
-			<text name="WL6amHash">
-				|
-			</text>
-			<text name="WL9amHash2">
-				I
-			</text>
-			<text name="WL12pmHash2">
-				|
-			</text>
-			<text name="WL3pmHash">
-				I
-			</text>
-			<text name="WL6pmHash">
-				|
-			</text>
-			<text name="WL9pmHash">
-				I
-			</text>
-			<text name="WL12amHash2">
-				|
-			</text>
-			<button label="Add Key" label_selected="Add Key" name="WLAddKey"/>
-			<button label="Delete Key" label_selected="Delete Key" name="WLDeleteKey"/>
-			<text name="WLCurKeyFrameText">
-				Key Frame Settings:
-			</text>
-			<text name="WLCurKeyTimeText">
-				Key Time:
-			</text>
-			<spinner label="Hour" name="WLCurKeyHour"/>
-			<spinner label="Min" name="WLCurKeyMin"/>
-			<text name="WLCurKeyTimeText2">
-				Key Preset:
-			</text>
-			<combo_box label="Preset" name="WLKeyPresets"/>
-			<text name="DayCycleText">
-				Snap:
-			</text>
-			<combo_box label="五分鐘" name="WLSnapOptions"/>
-			<text name="DayCycleText2">
-				Length of Cycle:
-			</text>
-			<spinner label="小時" name="WLLengthOfDayHour"/>
-			<spinner label="分" name="WLLengthOfDayMin"/>
-			<spinner label="秒" name="WLLengthOfDaySec"/>
-			<text name="DayCycleText3">
-				預覽:
-			</text>
-			<button label="Play" label_selected="Play" name="WLAnimSky"/>
-			<button label="停止!" label_selected="停止" name="WLStopAnimSky"/>
-			<button label="Use Estate Time" label_selected="Go to Estate Time" name="WLUseLindenTime"/>
-			<button label="Save Test Day" label_selected="Save Test Day" name="WLSaveDayCycle"/>
-			<button label="Load Test Day" label_selected="Load Test Day" name="WLLoadDayCycle"/>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_env_settings.xml b/indra/newview/skins/default/xui/zh/floater_env_settings.xml
deleted file mode 100644
index 65a97f0cff..0000000000
--- a/indra/newview/skins/default/xui/zh/floater_env_settings.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Environment Editor Floater" title="ENVIRONMENT EDITOR">
-	<floater.string name="timeStr">
-		[hour12,datetime,utc]:[min,datetime,utc] [ampm,datetime,utc]
-	</floater.string>
-	<text name="EnvTimeText">
-		Time of Day
-	</text>
-	<text name="EnvTimeText2">
-		12:00 PM
-	</text>
-	<text name="EnvCloudText">
-		Cloud Cover
-	</text>
-	<text name="EnvWaterColorText">
-		Water Color
-	</text>
-	<color_swatch name="EnvWaterColor" tool_tip="Click to open color picker"/>
-	<text name="EnvWaterFogText">
-		Water Fog
-	</text>
-	<button label="Use Estate Time" name="EnvUseEstateTimeButton"/>
-	<button label="Advanced Sky" name="EnvAdvancedSkyButton"/>
-	<button label="Advanced Water" name="EnvAdvancedWaterButton"/>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_water.xml b/indra/newview/skins/default/xui/zh/floater_water.xml
deleted file mode 100644
index 5fb57272af..0000000000
--- a/indra/newview/skins/default/xui/zh/floater_water.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="Water Floater" title="進階水文編輯器">
-	<floater.string name="WLDefaultWaterNames">
-		Default:Glassy:Pond:Murky:Second Plague:SNAKE!!!:Valdez
-	</floater.string>
-	<text name="KeyFramePresetsText">
-		Water Presets:
-	</text>
-	<button label="新增" label_selected="新增" name="WaterNewPreset"/>
-	<button label="儲存" label_selected="儲存" name="WaterSavePreset"/>
-	<button label="刪除" label_selected="刪除" name="WaterDeletePreset"/>
-	<tab_container name="Water Tabs">
-		<panel label="設定" name="Settings">
-			<text name="BHText">
-				Water Fog Color
-			</text>
-			<color_swatch name="WaterFogColor" tool_tip="點擊以開啟顏色挑選器"/>
-			<text name="WaterFogDensText">
-				Fog Density Exponent
-			</text>
-			<text name="WaterUnderWaterFogModText">
-				Underwater Fog Modifier
-			</text>
-			<text name="BDensText">
-				Reflection Wavelet Scale
-			</text>
-			<slider label="1" name="WaterNormalScaleX"/>
-			<slider label="2" name="WaterNormalScaleY"/>
-			<slider label="3" name="WaterNormalScaleZ"/>
-			<text name="HDText">
-				Fresnel Scale
-			</text>
-			<text name="FresnelOffsetText">
-				Fresnel Offset
-			</text>
-			<text name="DensMultText">
-				Refract Scale Above
-			</text>
-			<text name="WaterScaleBelowText">
-				Refract Scale Below
-			</text>
-			<text name="MaxAltText">
-				Blur Multiplier
-			</text>
-		</panel>
-		<panel label="圖像" name="Waves">
-			<text name="BHText">
-				Big Wave Direction
-			</text>
-			<text name="WaterWave1DirXText">
-				X
-			</text>
-			<text name="WaterWave1DirYText">
-				Y
-			</text>
-			<text name="BHText2">
-				Little Wave Direction
-			</text>
-			<text name="WaterWave2DirXText">
-				X
-			</text>
-			<text name="WaterWave2DirYText">
-				Y
-			</text>
-			<text name="BHText3">
-				正常地圖
-			</text>
-		</panel>
-	</tab_container>
-</floater>
diff --git a/indra/newview/skins/default/xui/zh/floater_windlight_options.xml b/indra/newview/skins/default/xui/zh/floater_windlight_options.xml
deleted file mode 100644
index fce851cc90..0000000000
--- a/indra/newview/skins/default/xui/zh/floater_windlight_options.xml
+++ /dev/null
@@ -1,167 +0,0 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<floater name="WindLight floater" title="進階天空編輯器">
-	<floater.string name="WLDefaultSkyNames">
-		A-12AM:A-12PM:A-3AM:A-3PM:A-4.30PM:A-6AM:A-6PM:A-9AM:A-9PM:Barcelona:Blizzard:Blue Midday:Coastal Afternoon:Coastal Sunset:Default:Desert Sunset:Fine Day:Fluffy Big Clouds:Foggy:Funky Funky:Funky Funky Funky:Gelatto:Ghost:Incongruent Truths:Midday 1:Midday 2:Midday 3:Midday 4:Night:Pirate:Purple:Sailor&apos;s Delight:Sheer Sensuality
-	</floater.string>
-	<text name="KeyFramePresetsText">
-		Sky Presets:
-	</text>
-	<button label="新增" label_selected="新增" name="WLNewPreset"/>
-	<button label="儲存" label_selected="儲存" name="WLSavePreset"/>
-	<button label="刪除" label_selected="刪除" name="WLDeletePreset"/>
-	<button label="Day Cycle Editor" label_selected="Day Cycle Editor" name="WLDayCycleMenuButton"/>
-	<tab_container name="WindLight Tabs">
-		<panel label="ATMOSPHERE" name="Atmosphere">
-			<text name="BHText">
-				Blue Horizon
-			</text>
-			<text name="BHText2">
-				R
-			</text>
-			<text name="BHText3">
-				G
-			</text>
-			<text name="BHText4">
-				B
-			</text>
-			<text name="BHText5">
-				I
-			</text>
-			<text name="BDensText">
-				Haze Horizon
-			</text>
-			<text name="BDensText2">
-				Blue Density
-			</text>
-			<text name="BHText6">
-				R
-			</text>
-			<text name="BHText7">
-				G
-			</text>
-			<text name="BHText8">
-				B
-			</text>
-			<text name="BHText9">
-				I
-			</text>
-			<text name="HDText">
-				Haze Density
-			</text>
-			<text name="DensMultText">
-				Density Multiplier
-			</text>
-			<text name="WLDistanceMultText">
-				Distance Multiplier
-			</text>
-			<text name="MaxAltText">
-				Max Altitude
-			</text>
-		</panel>
-		<panel label="LIGHTING" name="Lighting">
-			<text name="SLCText">
-				Sun/Moon Color
-			</text>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="TODText">
-				Sun/Moon Position
-			</text>
-			<text name="WLAmbientText">
-				Ambient
-			</text>
-			<text name="BHText5">
-				R
-			</text>
-			<text name="BHText6">
-				G
-			</text>
-			<text name="BHText7">
-				B
-			</text>
-			<text name="BHText8">
-				I
-			</text>
-			<text name="WLEastAngleText">
-				East Angle
-			</text>
-			<text name="SunGlowText">
-				Sun Glow
-			</text>
-			<slider label="Focus" name="WLGlowB"/>
-			<slider label="尺寸" name="WLGlowR"/>
-			<text name="SceneGammaText">
-				Scene Gamma
-			</text>
-			<text name="WLStarText">
-				Star Brightness
-			</text>
-		</panel>
-		<panel label="CLOUDS" name="Clouds">
-			<text name="WLCloudColorText">
-				Cloud Color
-			</text>
-			<text name="BHText">
-				R
-			</text>
-			<text name="BHText2">
-				G
-			</text>
-			<text name="BHText3">
-				B
-			</text>
-			<text name="BHText4">
-				I
-			</text>
-			<text name="WLCloudColorText2">
-				Cloud XY/Density
-			</text>
-			<text name="BHText5">
-				X
-			</text>
-			<text name="BHText6">
-				Y
-			</text>
-			<text name="BHText7">
-				D
-			</text>
-			<text name="WLCloudCoverageText">
-				Cloud Coverage
-			</text>
-			<text name="WLCloudScaleText">
-				Cloud Scale
-			</text>
-			<text name="WLCloudDetailText">
-				Cloud Detail (XY/Density)
-			</text>
-			<text name="BHText8">
-				X
-			</text>
-			<text name="BHText9">
-				Y
-			</text>
-			<text name="BHText10">
-				D
-			</text>
-			<text name="WLCloudScrollXText">
-				Cloud Scroll X
-			</text>
-			<check_box label="Lock" name="WLCloudLockX"/>
-			<text name="WLCloudScrollYText">
-				Cloud Scroll Y
-			</text>
-			<check_box label="Lock" name="WLCloudLockY"/>
-			<check_box label="Draw Classic Clouds" name="DrawClassicClouds"/>
-		</panel>
-	</tab_container>
-</floater>
-- 
cgit v1.2.3


From 6c0d6956da046df9638932030d4c95ff299ca76f Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Thu, 7 Jul 2011 14:05:56 -0400
Subject: CHOP-753: add stats from GetProcessMemoryInfo() on Windows. Introduce
 StatsArray helper class to facilitate accumulating stats in the
 array-of-pair-arrays form cached internally by LLMemoryInfo.

---
 indra/llcommon/llsys.cpp | 96 +++++++++++++++++++++++++++++++++---------------
 1 file changed, 66 insertions(+), 30 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index e0ce74234d..cec1cd90e9 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -58,7 +58,8 @@ using namespace llsd;
 #	define WIN32_LEAN_AND_MEAN
 #	include <winsock2.h>
 #	include <windows.h>
-#   include <psapi.h>
+#   include <psapi.h>               // GetPerformanceInfo() et al.
+#   include <kfuncs.h>              // GetCurrentProcess()
 #elif LL_DARWIN
 #	include <errno.h>
 #	include <sys/sysctl.h>
@@ -640,6 +641,26 @@ void LLCPUInfo::stream(std::ostream& s) const
 	s << "->mCPUString:  " << mCPUString << std::endl;
 }
 
+// Helper class for LLMemoryInfo: accumulate stats in the array-of-pair-arrays
+// form we store for LLMemoryInfo::getStatsArray().
+class StatsArray
+{
+public:
+	StatsArray():
+		mStats(LLSD::emptyArray())
+	{}
+
+	void add(const LLSD::String& name, LLSD::Integer value)
+	{
+		mStats.append(LLSDArray(name)(value));
+	}
+
+	LLSD get() const { return mStats; }
+
+private:
+	LLSD mStats;
+};
+
 LLMemoryInfo::LLMemoryInfo()
 {
 	refresh();
@@ -859,39 +880,54 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 LLSD LLMemoryInfo::loadStatsArray()
 {
 	// This implementation is derived from stream() code (as of 2011-06-29).
-	LLSD statsArray(LLSD::emptyArray());
+	StatsArray stats;
 
 #if LL_WINDOWS
 	MEMORYSTATUSEX state;
 	state.dwLength = sizeof(state);
 	GlobalMemoryStatusEx(&state);
 
-	statsArray.append(LLSDArray("Percent Memory use")(LLSD::Integer(state.dwMemoryLoad)));
-	statsArray.append(LLSDArray("Total Physical KB") (LLSD::Integer(state.ullTotalPhys/1024)));
-	statsArray.append(LLSDArray("Avail Physical KB") (LLSD::Integer(state.ullAvailPhys/1024)));
-	statsArray.append(LLSDArray("Total page KB")     (LLSD::Integer(state.ullTotalPageFile/1024)));
-	statsArray.append(LLSDArray("Avail page KB")     (LLSD::Integer(state.ullAvailPageFile/1024)));
-	statsArray.append(LLSDArray("Total Virtual KB")  (LLSD::Integer(state.ullTotalVirtual/1024)));
-	statsArray.append(LLSDArray("Avail Virtual KB")  (LLSD::Integer(state.ullAvailVirtual/1024)));
+	stats.add("Percent Memory use", state.dwMemoryLoad);
+	stats.add("Total Physical KB",  state.ullTotalPhys/1024);
+	stats.add("Avail Physical KB",  state.ullAvailPhys/1024);
+	stats.add("Total page KB",      state.ullTotalPageFile/1024);
+	stats.add("Avail page KB",      state.ullAvailPageFile/1024);
+	stats.add("Total Virtual KB",   state.ullTotalVirtual/1024);
+	stats.add("Avail Virtual KB",   state.ullAvailVirtual/1024);
 
 	PERFORMANCE_INFORMATION perf;
 	perf.cb = sizeof(perf);
 	GetPerformanceInfo(&perf, sizeof(perf));
 
 	SIZE_T pagekb(perf.PageSize/1024);
-	statsArray.append(LLSDArray("CommitTotal KB")	(LLSD::Integer(perf.CommitTotal * pagekb)));
-	statsArray.append(LLSDArray("CommitLimit KB")	(LLSD::Integer(perf.CommitLimit * pagekb)));
-	statsArray.append(LLSDArray("CommitPeak KB")	(LLSD::Integer(perf.CommitPeak * pagekb)));
-	statsArray.append(LLSDArray("PhysicalTotal KB") (LLSD::Integer(perf.PhysicalTotal * pagekb)));
-	statsArray.append(LLSDArray("PhysicalAvail KB") (LLSD::Integer(perf.PhysicalAvailable * pagekb)));
-	statsArray.append(LLSDArray("SystemCache KB")	(LLSD::Integer(perf.SystemCache * pagekb)));
-	statsArray.append(LLSDArray("KernelTotal KB")	(LLSD::Integer(perf.KernelTotal * pagekb)));
-	statsArray.append(LLSDArray("KernelPaged KB")	(LLSD::Integer(perf.KernelPaged * pagekb)));
-	statsArray.append(LLSDArray("KernelNonpaged KB")(LLSD::Integer(perf.KernelNonpaged * pagekb)));
-	statsArray.append(LLSDArray("PageSize KB")		(LLSD::Integer(pagekb)));
-	statsArray.append(LLSDArray("HandleCount")		(LLSD::Integer(perf.HandleCount)));
-	statsArray.append(LLSDArray("ProcessCount")		(LLSD::Integer(perf.ProcessCount)));
-	statsArray.append(LLSDArray("ThreadCount")		(LLSD::Integer(perf.ThreadCount)));
+	stats.add("CommitTotal KB",     perf.CommitTotal * pagekb);
+	stats.add("CommitLimit KB",     perf.CommitLimit * pagekb);
+	stats.add("CommitPeak KB",      perf.CommitPeak * pagekb);
+	stats.add("PhysicalTotal KB",   perf.PhysicalTotal * pagekb);
+	stats.add("PhysicalAvail KB",   perf.PhysicalAvailable * pagekb);
+	stats.add("SystemCache KB",     perf.SystemCache * pagekb);
+	stats.add("KernelTotal KB",     perf.KernelTotal * pagekb);
+	stats.add("KernelPaged KB",     perf.KernelPaged * pagekb);
+	stats.add("KernelNonpaged KB",  perf.KernelNonpaged * pagekb);
+	stats.add("PageSize KB",        pagekb);
+	stats.add("HandleCount",        perf.HandleCount);
+	stats.add("ProcessCount",       perf.ProcessCount);
+	stats.add("ThreadCount",        perf.ThreadCount);
+
+	PROCESS_MEMORY_COUNTERS_EX pmem;
+	pmem.cb = sizeof(pmem);
+	GetProcessMemoryInfo(GetCurrentProcess(), &pmem, sizeof(pmem));
+
+	stats.add("Page Fault Count",              pmem.PageFaultCount);
+	stats.add("PeakWorkingSetSize KB",         pmem.PeakWorkingSetSize/1024);
+	stats.add("WorkingSetSize KB",             pmem.WorkingSetSize/1024);
+	stats.add("QutaPeakPagedPoolUsage KB",     pmem.QuotaPeakPagedPoolUsage/1024);
+	stats.add("QuotaPagedPoolUsage KB",        pmem.QuotaPagedPoolUsage/1024);
+	stats.add("QuotaPeakNonPagedPoolUsage KB", pmem.QuotaPeakNonPagedPoolUsage/1024);
+	stats.add("QuotaNonPagedPoolUsage KB",     pmem.QuotaNonPagedPoolUsage/1024);
+	stats.add("PagefileUsage KB",              pmem.PagefileUsage/1024);
+	stats.add("PeakPagefileUsage KB",          pmem.PeakPagefileUsage/1024);
+	stats.add("PrivateUsage KB",               pmem.PrivateUsage/1024);
 
 #elif LL_DARWIN
 	uint64_t phys = 0;
@@ -900,7 +936,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 	
 	if (sysctlbyname("hw.memsize", &phys, &len, NULL, 0) == 0)
 	{
-		statsArray.append(LLSDArray("Total Physical KB")(LLSD::Integer(phys/1024)));
+		stats.add("Total Physical KB", phys/1024);
 	}
 	else
 	{
@@ -962,7 +998,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 											 << "' in vm_stat line: " << line << LL_ENDL;
 					continue;
 				}
-				statsArray.append(LLSDArray("page size")(pagesizekb));
+				stats.add("page size", pagesizekb);
 			}
 			else if (boost::regex_match(line, matched, stat_rx))
 			{
@@ -988,7 +1024,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 					continue;
 				}
 				// Store this statistic.
-				statsArray.append(LLSDArray(key)(value));
+				stats.add(key, value);
 				// Is this in units of pages? If so, convert to Kb.
 				static const LLSD::String pages("Pages ");
 				if (key.substr(0, pages.length()) == pages)
@@ -996,7 +1032,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 					// Synthesize a new key with kb in place of Pages
 					LLSD::String kbkey("kb ");
 					kbkey.append(key.substr(pages.length()));
-					statsArray.append(LLSDArray(kbkey)(value * pagesizekb));
+					stats.add(kbkey, value * pagesizekb);
 				}
 			}
 			else if (boost::regex_match(line, matched, cache_rx))
@@ -1018,7 +1054,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 												 << "' in vm_stat line: " << line << LL_ENDL;
 						continue;
 					}
-					statsArray.append(LLSDArray(cache_keys[i])(value));
+					stats.add(cache_keys[i], value);
 				}
 			}
 			else
@@ -1034,7 +1070,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 
 	phys = (U64)(sysconf(_SC_PHYS_PAGES)) * (U64)(sysconf(_SC_PAGESIZE)/1024);
 
-	statsArray.append(LLSDArray("Total Physical KB")(phys));
+	stats.add("Total Physical KB", phys);
 
 #elif LL_LINUX
 	std::ifstream meminfo(MEMINFO_FILE);
@@ -1085,7 +1121,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 					continue;
 				}
 				// Store this statistic.
-				statsArray.append(LLSDArray(key)(value));
+				stats.add(key, value);
 			}
 			else
 			{
@@ -1104,7 +1140,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 
 #endif
 
-	return statsArray;
+	return stats.get();
 }
 
 LLSD LLMemoryInfo::loadStatsMap(const LLSD& statsArray)
-- 
cgit v1.2.3


From be2c0c1f0b6e04e278dbd1cdd84299aa26dec4b7 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Thu, 7 Jul 2011 14:17:28 -0400
Subject: disable watchdog

---
 indra/newview/app_settings/settings.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 9161519a10..fc7fd2dd8a 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -12406,7 +12406,7 @@
       <key>Type</key>
       <string>S32</string>
       <key>Value</key>
-      <integer>20</integer>
+      <integer>-1</integer>
     </map>
     <key>WaterEditPresets</key>
     <map>
-- 
cgit v1.2.3


From 65657b9f5cf04b5a84e566b7491daabb1291ace9 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Thu, 7 Jul 2011 14:20:37 -0400
Subject: CHOP-753: uh, Microsoft docs lied about header file to use? Remove
 <kfuncs.h>, documented header file for GetCurrentProcess().

---
 indra/llcommon/llsys.cpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index cec1cd90e9..68566cdbfa 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -59,7 +59,6 @@ using namespace llsd;
 #	include <winsock2.h>
 #	include <windows.h>
 #   include <psapi.h>               // GetPerformanceInfo() et al.
-#   include <kfuncs.h>              // GetCurrentProcess()
 #elif LL_DARWIN
 #	include <errno.h>
 #	include <sys/sysctl.h>
-- 
cgit v1.2.3


From 774306bc25b4b737d318bdd28ab0b078dc60db74 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Thu, 7 Jul 2011 14:47:20 -0400
Subject: CHOP-753: have to cast pointer passed to GetProcessMemoryInfo().
 GetProcessMemoryInfo() is prototyped with PROCESS_MEMORY_COUNTERS*, so to
 accept PROCESS_MEMORY_COUNTERS_EX* as documented, have to cast.

---
 indra/llcommon/llsys.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 68566cdbfa..b3ab5008fb 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -915,7 +915,13 @@ LLSD LLMemoryInfo::loadStatsArray()
 
 	PROCESS_MEMORY_COUNTERS_EX pmem;
 	pmem.cb = sizeof(pmem);
-	GetProcessMemoryInfo(GetCurrentProcess(), &pmem, sizeof(pmem));
+	// GetProcessMemoryInfo() is documented to accept either
+	// PROCESS_MEMORY_COUNTERS* or PROCESS_MEMORY_COUNTERS_EX*, presumably
+	// using the redundant size info to distinguish. But its prototype
+	// specifically accepts PROCESS_MEMORY_COUNTERS*, and since this is a
+	// classic-C API, PROCESS_MEMORY_COUNTERS_EX isn't a subclass. Cast the
+	// pointer.
+	GetProcessMemoryInfo(GetCurrentProcess(), PPROCESS_MEMORY_COUNTERS(&pmem), sizeof(pmem));
 
 	stats.add("Page Fault Count",              pmem.PageFaultCount);
 	stats.add("PeakWorkingSetSize KB",         pmem.PeakWorkingSetSize/1024);
-- 
cgit v1.2.3


From 9c147be92e81062f8f668b5d5c3331e8d1f395f7 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Fri, 8 Jul 2011 14:18:56 -0400
Subject: storm-899 and vwr-26095: correct xml to restore body parts accordian
 in appearance editor

---
 indra/newview/skins/default/xui/en/panel_cof_wearables.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
index bbeb592e96..9e70706603 100644
--- a/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
+++ b/indra/newview/skins/default/xui/en/panel_cof_wearables.xml
@@ -52,7 +52,7 @@
              multi_select="true"
              name="list_attachments"
              top="0"
-             width="311">
+             width="311"/>
         </accordion_tab>
         <accordion_tab
          layout="topleft"
-- 
cgit v1.2.3


From 5927345ee0c43159e9ab9d2349d1a7586517284c Mon Sep 17 00:00:00 2001
From: eli_linden <none@none>
Date: Fri, 8 Jul 2011 15:05:11 -0700
Subject: sync with viewer-development

---
 indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml
index 7aae966879..d9a3ad0c4b 100644
--- a/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml
+++ b/indra/newview/skins/default/xui/en/floater_edit_day_cycle.xml
@@ -67,7 +67,7 @@
      height="10"
      layout="topleft"
      left="10"    
-     name="water_color_label"
+     name="hint_item1"
      top="100"
      width="300">
      - Click on a tab to edit the specific sky settings and time.
@@ -76,7 +76,7 @@
      follows="left|top|right"
      height="10"
      layout="topleft"    
-     name="water_color_label"
+     name="hint_item2"
      top_pad="10"
      width="300">
      - Click and drag the tabs to set the transition times.
@@ -85,7 +85,7 @@
      follows="left|top|right"
      height="10"
      layout="topleft"
-     name="water_color_label"
+     name="hint_item3"
      top_pad="10"
      width="300">
      - Use the scrubber to preview your day cycle.
@@ -402,7 +402,7 @@
      height="16"
      layout="topleft"
      left_delta="192"
-     name="WLCurKeyTimeText2"
+     name="WLCurKeyPresetText"
      top_pad="10"
      width="80">
         Sky Setting:
@@ -423,7 +423,7 @@
      height="16"
      layout="topleft"
      left_delta="-40"
-     name="WLCurKeyTimeText2"
+     name="WLCurKeyTimeText"
      top_pad="15"
      width="35">
         Time:
-- 
cgit v1.2.3


From 1927214e665112134d1f99cdf11ea26fda6300cb Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Mon, 11 Jul 2011 08:43:23 -0400
Subject: Added tag 2.8.0-start for changeset e1ed60913230

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index 8043bf9f40..b6a9eca2ca 100644
--- a/.hgtags
+++ b/.hgtags
@@ -143,3 +143,4 @@ a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release
 19a498fa62570f352d7d246f17e3c81cc1d82d8b 2.7.5-start
 09984bfa6cae17e0f72d02b75c1b7393c65eecfc DRTVWR-69_2.7.5-beta1
 09984bfa6cae17e0f72d02b75c1b7393c65eecfc 2.7.5-beta1
+e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-start
-- 
cgit v1.2.3


From c94bc42892610c905942c73d960e9d186da640e5 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Mon, 11 Jul 2011 08:44:19 -0400
Subject: increment viewer version to 2.8.1

---
 indra/llcommon/llversionviewer.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index 3dcaca4f16..0018b8e844 100644
--- a/indra/llcommon/llversionviewer.h
+++ b/indra/llcommon/llversionviewer.h
@@ -29,7 +29,7 @@
 
 const S32 LL_VERSION_MAJOR = 2;
 const S32 LL_VERSION_MINOR = 8;
-const S32 LL_VERSION_PATCH = 0;
+const S32 LL_VERSION_PATCH = 1;
 const S32 LL_VERSION_BUILD = 0;
 
 const char * const LL_CHANNEL = "Second Life Developer";
-- 
cgit v1.2.3


From 607f60d6f6ddf18e69b5106bbb6ef31b72ba78f2 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Mon, 11 Jul 2011 10:57:14 -0400
Subject: CHOP-753: Add timestamp to LLMemoryInfo's LLSD stats block. For
 postprocessing these stats, we'll want the time at which they were captured.
 We'll want the current framerate too, but handle that at a higher level.

---
 indra/llcommon/llsys.cpp | 38 ++++++++++++++++++++++++++++++++++----
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index b3ab5008fb..74a9a68dc8 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -51,6 +51,9 @@
 #include <boost/foreach.hpp>
 #include <boost/lexical_cast.hpp>
 #include <boost/range.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_float.hpp>
 
 using namespace llsd;
 
@@ -649,7 +652,24 @@ public:
 		mStats(LLSD::emptyArray())
 	{}
 
-	void add(const LLSD::String& name, LLSD::Integer value)
+	// Store every integer type as LLSD::Integer.
+	template <class T>
+	void add(const LLSD::String& name, const T& value,
+			 typename boost::enable_if<boost::is_integral<T> >::type* = 0)
+	{
+		mStats.append(LLSDArray(name)(LLSD::Integer(value)));
+	}
+
+	// Store every floating-point type as LLSD::Real.
+	template <class T>
+	void add(const LLSD::String& name, const T& value,
+			 typename boost::enable_if<boost::is_float<T> >::type* = 0)
+	{
+		mStats.append(LLSDArray(name)(LLSD::Real(value)));
+	}
+
+	// Hope that LLSD::Date values are sufficiently unambiguous.
+	void add(const LLSD::String& name, const LLSD::Date& value)
 	{
 		mStats.append(LLSDArray(name)(value));
 	}
@@ -847,9 +867,16 @@ void LLMemoryInfo::stream(std::ostream& s) const
 	// Now stream stats
 	BOOST_FOREACH(LLSD pair, inArray(mStatsArray))
 	{
-		s << pfx << std::setw(key_width+1) << (pair[0].asString() + ':')
-		  << ' '
-		  << std::setw(12) << pair[1].asInteger() << std::endl;
+		s << pfx << std::setw(key_width+1) << (pair[0].asString() + ':') << ' ';
+		if (pair[1].isInteger())
+			s << std::setw(12) << pair[1].asInteger();
+		else if (pair[1].isReal())
+			s << std::fixed << std::setprecision(1) << pair[1].asReal();
+		else if (pair[1].isDate())
+			pair[1].asDate().toStream(s);
+		else
+			s << pair[1];           // just use default LLSD formatting
+		s << std::endl;
 	}
 }
 
@@ -881,6 +908,9 @@ LLSD LLMemoryInfo::loadStatsArray()
 	// This implementation is derived from stream() code (as of 2011-06-29).
 	StatsArray stats;
 
+	// associate timestamp for analysis over time
+	stats.add("timestamp", LLDate::now());
+
 #if LL_WINDOWS
 	MEMORYSTATUSEX state;
 	state.dwLength = sizeof(state);
-- 
cgit v1.2.3


From 8fcda650a71d4784dcb24e86b3fc59ad15bc6a2d Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Mon, 11 Jul 2011 14:24:28 -0400
Subject: CHOP-753: Add classic-C-style diagnostics around popen("vm_stat"). On
 Mac, where LLMemoryInfo relies on a child process rather than any sort of
 internal system API, try to produce more informative LL_WARNS output if
 popen() fails to run vm_stat, or if vm_stat terminates with nonzero rc.

---
 indra/llcommon/llsys.cpp | 62 ++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 58 insertions(+), 4 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 74a9a68dc8..9390fc170c 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -68,6 +68,8 @@ using namespace llsd;
 #	include <sys/utsname.h>
 #	include <stdint.h>
 #	include <Carbon/Carbon.h>
+#   include <sys/wait.h>
+#   include <string.h>
 #elif LL_LINUX
 #	include <errno.h>
 #	include <sys/utsname.h>
@@ -979,11 +981,23 @@ LLSD LLMemoryInfo::loadStatsArray()
 	}
 
 	FILE* pout = popen("vm_stat 2>&1", "r");
-	if (! pout)
+	if (! pout)                     // popen() couldn't run vm_stat
 	{
-		LL_WARNS("LLMemoryInfo") << "Unable to collect vm_stat memory information" << LL_ENDL;
+		// Save errno right away.
+		int popen_errno(errno);
+		LL_WARNS("LLMemoryInfo") << "Unable to collect vm_stat memory information: ";
+		char buffer[256];
+		if (0 == strerror_r(popen_errno, buffer, sizeof(buffer)))
+		{
+			LL_CONT << buffer;
+		}
+		else
+		{
+			LL_CONT << "errno " << popen_errno;
+		}
+		LL_CONT << LL_ENDL;
 	}
-	else
+	else                            // popen() launched vm_stat
 	{
 		// Mach Virtual Memory Statistics: (page size of 4096 bytes)
 		// Pages free:					 462078.
@@ -1097,7 +1111,47 @@ LLSD LLMemoryInfo::loadStatsArray()
 				LL_WARNS("LLMemoryInfo") << "unrecognized vm_stat line: " << line << LL_ENDL;
 			}
 		}
-		fclose(pout);
+		int status(pclose(pout));
+		if (status == -1)           // pclose() couldn't retrieve rc
+		{
+			// Save errno right away.
+			int pclose_errno(errno);
+			// The ECHILD error happens so frequently that unless filtered,
+			// the warning below spams the log file. This is too bad, because
+			// sometimes the logic above fails to produce any output derived
+			// from vm_stat, but we've been unable to observe any specific
+			// error indicating the problem.
+			if (pclose_errno != ECHILD)
+			{
+				LL_WARNS("LLMemoryInfo") << "Unable to obtain vm_stat termination code: ";
+				char buffer[256];
+				if (0 == strerror_r(pclose_errno, buffer, sizeof(buffer)))
+				{
+					LL_CONT << buffer;
+				}
+				else
+				{
+					LL_CONT << "errno " << pclose_errno;
+				}
+				LL_CONT << LL_ENDL;
+			}
+		}
+		else                        // pclose() retrieved rc; analyze
+		{
+			if (WIFEXITED(status))
+			{
+				int rc(WEXITSTATUS(status));
+				if (rc != 0)
+				{
+					LL_WARNS("LLMemoryInfo") << "vm_stat terminated with rc " << rc << LL_ENDL;
+				}
+			}
+			else if (WIFSIGNALED(status))
+			{
+				LL_WARNS("LLMemoryInfo") << "vm_stat terminated by signal " << WTERMSIG(status)
+										 << LL_ENDL;
+			}
+		}
 	}
 
 #elif LL_SOLARIS
-- 
cgit v1.2.3


From 4e2355036358ed712dd7df2668ec705931ad13a1 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 12 Jul 2011 13:34:09 -0400
Subject: CHOP-753: make getAvailableMemoryKB() only load data on Windows. (per
 Monty code review) Other platforms return -1 anyway, so don't need to call
 load methods.

---
 indra/llcommon/llsys.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index 9390fc170c..aa71590eae 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -755,11 +755,11 @@ U32 LLMemoryInfo::getPhysicalMemoryClamped() const
 //static
 void LLMemoryInfo::getAvailableMemoryKB(U32& avail_physical_mem_kb, U32& avail_virtual_mem_kb)
 {
+#if LL_WINDOWS
 	// Sigh, this shouldn't be a static method, then we wouldn't have to
 	// reload this data separately from refresh()
 	LLSD statsMap(loadStatsMap(loadStatsArray()));
 
-#if LL_WINDOWS
 	avail_physical_mem_kb = statsMap["Avail Physical KB"].asInteger();
 	avail_virtual_mem_kb  = statsMap["Avail Virtual KB"].asInteger();
 
-- 
cgit v1.2.3


From e58a0e9b26dc374155b90a8f42c3a5b09e8ed1f7 Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 12 Jul 2011 14:34:31 -0400
Subject: CHOP-753: Defend against boost::regex exceptions. (per Monty code
 review) Explain why we intentionally don't suppress exceptions from
 boost::regex objects constructed with string literals. Catch
 std::runtime_error from boost::regex_search() and boost::regex_match(); log
 and return false.

---
 indra/llcommon/llsys.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 46 insertions(+), 4 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index aa71590eae..ebdef56c2a 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -70,11 +70,13 @@ using namespace llsd;
 #	include <Carbon/Carbon.h>
 #   include <sys/wait.h>
 #   include <string.h>
+#   include <stdexcept>
 #elif LL_LINUX
 #	include <errno.h>
 #	include <sys/utsname.h>
 #	include <unistd.h>
 #	include <sys/sysinfo.h>
+#   include <stdexcept>
 const char MEMINFO_FILE[] = "/proc/meminfo";
 #elif LL_SOLARIS
 #	include <stdio.h>
@@ -682,6 +684,38 @@ private:
 	LLSD mStats;
 };
 
+// Wrap boost::regex_match() with a function that doesn't throw.
+template <typename S, typename M, typename R>
+static bool regex_match_no_exc(const S& string, M& match, const R& regex)
+{
+    try
+    {
+        return boost::regex_match(string, match, regex);
+    }
+    catch (const std::runtime_error& e)
+    {
+        LL_WARNS("LLMemoryInfo") << "error matching with '" << regex.str() << "': "
+                                 << e.what() << ":\n'" << string << "'" << LL_ENDL;
+        return false;
+    }
+}
+
+// Wrap boost::regex_search() with a function that doesn't throw.
+template <typename S, typename M, typename R>
+static bool regex_search_no_exc(const S& string, M& match, const R& regex)
+{
+    try
+    {
+        return boost::regex_search(string, match, regex);
+    }
+    catch (const std::runtime_error& e)
+    {
+        LL_WARNS("LLMemoryInfo") << "error searching with '" << regex.str() << "': "
+                                 << e.what() << ":\n'" << string << "'" << LL_ENDL;
+        return false;
+    }
+}
+
 LLMemoryInfo::LLMemoryInfo()
 {
 	refresh();
@@ -1012,6 +1046,10 @@ LLSD LLMemoryInfo::loadStatsArray()
 		// Pageouts:					  41759.
 		// Object cache: 841598 hits of 7629869 lookups (11% hit rate)
 
+		// Intentionally don't pass the boost::no_except flag. These
+		// boost::regex objects are constructed with string literals, so they
+		// should be valid every time. If they become invalid, we WANT an
+		// exception, hopefully even before the dev checks in.
 		boost::regex pagesize_rx("\\(page size of ([0-9]+) bytes\\)");
 		boost::regex stat_rx("(.+): +([0-9]+)\\.");
 		boost::regex cache_rx("Object cache: ([0-9]+) hits of ([0-9]+) lookups "
@@ -1031,7 +1069,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 				line[--linelen] = '\0';
 			}
 			LL_DEBUGS("LLMemoryInfo") << line << LL_ENDL;
-			if (boost::regex_search(line, matched, pagesize_rx))
+			if (regex_search_no_exc(line, matched, pagesize_rx))
 			{
 				// "Mach Virtual Memory Statistics: (page size of 4096 bytes)"
 				std::string pagesize_str(matched[1].first, matched[1].second);
@@ -1049,7 +1087,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 				}
 				stats.add("page size", pagesizekb);
 			}
-			else if (boost::regex_match(line, matched, stat_rx))
+			else if (regex_match_no_exc(line, matched, stat_rx))
 			{
 				// e.g. "Pages free:					 462078."
 				// Strip double-quotes off certain statistic names
@@ -1084,7 +1122,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 					stats.add(kbkey, value * pagesizekb);
 				}
 			}
-			else if (boost::regex_match(line, matched, cache_rx))
+			else if (regex_match_no_exc(line, matched, cache_rx))
 			{
 				// e.g. "Object cache: 841598 hits of 7629869 lookups (11% hit rate)"
 				static const char* cache_keys[] = { "cache hits", "cache lookups", "cache hit%" };
@@ -1185,6 +1223,10 @@ LLSD LLMemoryInfo::loadStatsArray()
 		// DirectMap4k:		 434168 kB
 		// DirectMap2M:		 477184 kB
 
+		// Intentionally don't pass the boost::no_except flag. This
+		// boost::regex object is constructed with a string literal, so it
+		// should be valid every time. If it becomes invalid, we WANT an
+		// exception, hopefully even before the dev checks in.
 		boost::regex stat_rx("(.+): +([0-9]+)( kB)?");
 		boost::smatch matched;
 
@@ -1192,7 +1234,7 @@ LLSD LLMemoryInfo::loadStatsArray()
 		while (std::getline(meminfo, line))
 		{
 			LL_DEBUGS("LLMemoryInfo") << line << LL_ENDL;
-			if (boost::regex_match(line, matched, stat_rx))
+			if (regex_match_no_exc(line, matched, stat_rx))
 			{
 				// e.g. "MemTotal:		4108424 kB"
 				LLSD::String key(matched[1].first, matched[1].second);
-- 
cgit v1.2.3


From c37a986c9a2fca2a6321b2f76ac60e7e2f381dc0 Mon Sep 17 00:00:00 2001
From: eli_linden <none@none>
Date: Tue, 12 Jul 2011 12:12:48 -0700
Subject: sync with viewer-development

---
 .../skins/default/xui/da/panel_edit_pick.xml       |   2 +-
 indra/newview/skins/default/xui/da/strings.xml     |   7 +-
 .../skins/default/xui/de/panel_edit_pick.xml       |   2 +-
 indra/newview/skins/default/xui/de/strings.xml     |   7 +-
 .../skins/default/xui/en/floater_about_land.xml    |  65 +++++-
 .../skins/default/xui/en/floater_help_browser.xml  |   2 +
 .../skins/default/xui/en/floater_media_browser.xml |   2 +-
 .../skins/default/xui/en/floater_web_content.xml   |  11 +-
 .../skins/default/xui/en/menu_inventory_add.xml    |   4 +-
 indra/newview/skins/default/xui/en/menu_viewer.xml |  12 +
 .../skins/default/xui/en/menu_wearing_gear.xml     |   7 +
 .../newview/skins/default/xui/en/notifications.xml |   9 +
 .../skins/default/xui/en/panel_edit_pick.xml       |   2 +-
 .../skins/default/xui/en/panel_inbox_inventory.xml |  17 ++
 .../default/xui/en/panel_outbox_inventory.xml      |  17 ++
 .../skins/default/xui/en/panel_place_profile.xml   |  35 ++-
 .../skins/default/xui/en/panel_progress.xml        |   8 +
 .../skins/default/xui/en/panel_region_estate.xml   |  29 ++-
 .../skins/default/xui/en/panel_side_tray.xml       |   1 +
 .../skins/default/xui/en/panel_topinfo_bar.xml     |  10 +
 .../skins/default/xui/en/sidepanel_inventory.xml   | 230 ++++++++++++++++++--
 indra/newview/skins/default/xui/en/strings.xml     |  16 +-
 .../newview/skins/default/xui/en/widgets/badge.xml |  17 ++
 .../skins/default/xui/en/widgets/button.xml        |   1 +
 .../xui/en/widgets/inbox_folder_view_folder.xml    |  10 +
 .../xui/en/widgets/inbox_inventory_panel.xml       |   2 +
 .../default/xui/en/widgets/inventory_panel.xml     |  10 +-
 .../default/xui/en/widgets/location_input.xml      |   8 +
 .../newview/skins/default/xui/en/widgets/panel.xml |   3 +-
 .../skins/default/xui/es/panel_edit_pick.xml       |   2 +-
 indra/newview/skins/default/xui/es/strings.xml     |   7 +-
 .../skins/default/xui/fr/panel_edit_pick.xml       |   2 +-
 indra/newview/skins/default/xui/fr/strings.xml     |   7 +-
 .../skins/default/xui/it/panel_edit_pick.xml       |   2 +-
 indra/newview/skins/default/xui/it/strings.xml     |   7 +-
 .../skins/default/xui/ja/panel_edit_pick.xml       |   2 +-
 indra/newview/skins/default/xui/ja/strings.xml     |   3 -
 indra/newview/skins/default/xui/nl/strings.xml     |   7 +-
 .../skins/default/xui/pl/panel_edit_pick.xml       |   2 +-
 indra/newview/skins/default/xui/pl/strings.xml     |   7 +-
 .../skins/default/xui/pt/panel_edit_pick.xml       |   2 +-
 indra/newview/skins/default/xui/pt/strings.xml     |   7 +-
 .../skins/default/xui/zh/panel_edit_pick.xml       |   2 +-
 indra/newview/skins/default/xui/zh/strings.xml     |   7 +-
 .../skins/minimal/xui/en/floater_help_browser.xml  |  11 +-
 .../skins/minimal/xui/en/floater_web_content.xml   |  11 +-
 .../minimal/xui/en/panel_im_control_panel.xml      | 242 +++++++++++++--------
 .../minimal/xui/en/widgets/location_input.xml      |   8 +
 48 files changed, 692 insertions(+), 192 deletions(-)
 create mode 100644 indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
 create mode 100644 indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
 create mode 100644 indra/newview/skins/default/xui/en/widgets/badge.xml
 create mode 100644 indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
 create mode 100644 indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml

diff --git a/indra/newview/skins/default/xui/da/panel_edit_pick.xml b/indra/newview/skins/default/xui/da/panel_edit_pick.xml
index fd287b1a0a..3036f30240 100644
--- a/indra/newview/skins/default/xui/da/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/da/panel_edit_pick.xml
@@ -29,7 +29,7 @@
 			<layout_panel name="layout_panel1">
 				<button label="Gem valgte" name="save_changes_btn"/>
 			</layout_panel>
-			<layout_panel name="layout_panel1">
+			<layout_panel name="layout_panel2">
 				<button label="Annullér" name="cancel_btn"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/da/strings.xml b/indra/newview/skins/default/xui/da/strings.xml
index 68b861fe92..b5d8ac44bc 100644
--- a/indra/newview/skins/default/xui/da/strings.xml
+++ b/indra/newview/skins/default/xui/da/strings.xml
@@ -1209,9 +1209,6 @@ Prøv venligst om lidt igen.
 	<string name="InvFolder My Inventory">
 		Min beholdning
 	</string>
-	<string name="InvFolder My Favorites">
-		Mine favoritter
-	</string>
 	<string name="InvFolder Library">
 		Bibliotek
 	</string>
@@ -1270,10 +1267,10 @@ Prøv venligst om lidt igen.
 		Bevægelser
 	</string>
 	<string name="InvFolder Favorite">
-		Favoritter
+		Mine favoritter
 	</string>
 	<string name="InvFolder favorite">
-		Favoritter
+		Mine favoritter
 	</string>
 	<string name="InvFolder Current Outfit">
 		Nuværende sæt
diff --git a/indra/newview/skins/default/xui/de/panel_edit_pick.xml b/indra/newview/skins/default/xui/de/panel_edit_pick.xml
index 3c56df763d..aafffc7ae3 100644
--- a/indra/newview/skins/default/xui/de/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/de/panel_edit_pick.xml
@@ -29,7 +29,7 @@
 			<layout_panel name="layout_panel1">
 				<button label="Auswahl speichern" name="save_changes_btn"/>
 			</layout_panel>
-			<layout_panel name="layout_panel1">
+			<layout_panel name="layout_panel2">
 				<button label="Abbrechen" name="cancel_btn"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index d77b4a1e44..ed38267466 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -1238,9 +1238,6 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 	<string name="InvFolder My Inventory">
 		Mein Inventar
 	</string>
-	<string name="InvFolder My Favorites">
-		Meine Favoriten
-	</string>
 	<string name="InvFolder Library">
 		Bibliothek
 	</string>
@@ -1299,10 +1296,10 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden.
 		Gesten
 	</string>
 	<string name="InvFolder Favorite">
-		Favoriten
+		Meine Favoriten
 	</string>
 	<string name="InvFolder favorite">
-		Favoriten
+		Meine Favoriten
 	</string>
 	<string name="InvFolder Current Outfit">
 		Aktuelles Outfit
diff --git a/indra/newview/skins/default/xui/en/floater_about_land.xml b/indra/newview/skins/default/xui/en/floater_about_land.xml
index ecd2b119c9..07cb4c12f5 100644
--- a/indra/newview/skins/default/xui/en/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/en/floater_about_land.xml
@@ -1205,6 +1205,10 @@ Only large parcels can be listed in search.
              name="push_restrict_region_text">
                 No Pushing (Region Override)
             </panel.string>
+            <panel.string
+             name="see_avs_text">
+                 See and chat with residents on this parcel
+            </panel.string>
             <text
              type="string"
              length="1"
@@ -1314,7 +1318,7 @@ Only large parcels can be listed in search.
              name="check group scripts"
              top_delta="0"
              width="70" />
-            <text
+           <text
              type="string"
              text_color="white"
              length="1"
@@ -1515,10 +1519,32 @@ Only large parcels can be listed in search.
              type="string"
              length="1"
              follows="left|top"
+             text_color="white"
+             height="16"
+             layout="topleft"
+             left="230"
+             top="174"
+             name="allow_label5"
+             width="278">
+              Allow Residents on other parcels to:
+            </text>
+            <check_box
              height="16"
+             label="See Avatars"
+             follows="top"
              layout="topleft"
-             left="220"
-             top="180"
+             left="230"
+             name="SeeAvatarsCheck"
+             tool_tip="Allows residents on other parcels to see and chat with residents on this parcel, and you to see and chat with them."
+             width="120" />
+            <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="16"
+             layout="topleft"
+             left="230"
+             top="230"
              text_color="white"
              name="landing_point"
              word_wrap="true"
@@ -1532,7 +1558,7 @@ Only large parcels can be listed in search.
              label_selected="Set"
              layout="topleft"
              name="Set"
-             right="-68"
+             left="230"
              tool_tip="Sets the landing point where visitors arrive. Sets to your avatar&apos;s location inside this parcel."
              width="50" />
             <button
@@ -1544,7 +1570,6 @@ Only large parcels can be listed in search.
              left_pad="5"
              name="Clear"
              tool_tip="Clear the landing point"
-             right="-10"
              width="55" />
             <text
              type="string"
@@ -1553,7 +1578,7 @@ Only large parcels can be listed in search.
              follows="left|top"
              height="16"
              layout="topleft"
-             left="220"
+             left="230"
              top_pad="10"
              name="Teleport Routing: "
              width="200">
@@ -1846,6 +1871,34 @@ Only large parcels can be listed in search.
              name="check sound local"
              left_pad="0"
              width="292" />
+          <text
+             type="string"
+             length="1"
+             follows="left|top"
+             height="16"
+             layout="topleft"
+             left="10"
+             name="Avatar Sounds:"
+             top_pad="10"
+             width="100">
+               Avatar Sounds:
+          </text>
+          <check_box
+             height="16"
+             label="Everyone"
+             layout="topleft"
+             left_pad="0"
+             name="all av sound check"
+             top_delta="0"
+             width="130" />
+          <check_box
+             height="16"
+             label="Group"
+             layout="topleft"
+             left_pad="0"
+             name="group av sound check"
+             top_delta="0"
+             width="70" />
             <text
              type="string"
              length="1"
diff --git a/indra/newview/skins/default/xui/en/floater_help_browser.xml b/indra/newview/skins/default/xui/en/floater_help_browser.xml
index 02e50ee584..de6d586f72 100644
--- a/indra/newview/skins/default/xui/en/floater_help_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_help_browser.xml
@@ -2,6 +2,8 @@
 <floater
  legacy_header_height="18"
  can_resize="true"
+ left="10000"
+ bottom="10000"
  height="600"
  layout="topleft"
  min_height="150"
diff --git a/indra/newview/skins/default/xui/en/floater_media_browser.xml b/indra/newview/skins/default/xui/en/floater_media_browser.xml
index 43729d7c9f..5a1f920398 100644
--- a/indra/newview/skins/default/xui/en/floater_media_browser.xml
+++ b/indra/newview/skins/default/xui/en/floater_media_browser.xml
@@ -5,7 +5,7 @@
  height="440"
  layout="topleft"
  min_height="140"
- min_width="467"
+ min_width="0"
  name="floater_about"
  help_topic="floater_about"
  save_rect="true"
diff --git a/indra/newview/skins/default/xui/en/floater_web_content.xml b/indra/newview/skins/default/xui/en/floater_web_content.xml
index e04a72cbc0..69e6057556 100644
--- a/indra/newview/skins/default/xui/en/floater_web_content.xml
+++ b/indra/newview/skins/default/xui/en/floater_web_content.xml
@@ -18,6 +18,7 @@
     follows="left|right|top|bottom"
     layout="topleft"
     left="5"
+    animate="false"
     name="stack1"
     orientation="vertical"
     top="20"
@@ -156,14 +157,20 @@
       name="external_controls"
       top_delta="0"
       user_resize="false"
+      auto_resize="true"
       width="585">
       <web_browser
-        bottom="-22"
+        bottom="-2"
         follows="all"
         layout="topleft"
         left="0"
         name="webbrowser"
         top="0"/>
+    </layout_panel>
+    <layout_panel name="status_bar" 
+                  height="23"
+                  auto_resize="false"
+                  user_resize="false">
       <text
         type="string"
         length="200"
@@ -174,7 +181,7 @@
         name="statusbartext"
         parse_urls="false"
         text_color="0.4 0.4 0.4 1"
-        top_pad="5"
+        top_pad="3"
         width="495"/>
       <progress_bar
         color_bar="0.3 1.0 0.3 1"
diff --git a/indra/newview/skins/default/xui/en/menu_inventory_add.xml b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
index b36b82ebd8..e0ccb18c08 100644
--- a/indra/newview/skins/default/xui/en/menu_inventory_add.xml
+++ b/indra/newview/skins/default/xui/en/menu_inventory_add.xml
@@ -42,7 +42,7 @@
                     <menu_item_call.on_enable
                      function="File.EnableUpload" />
                 </menu_item_call>
-		<menu_item_call
+                <menu_item_call
                  label="Model..."
                  layout="topleft"
                  name="Upload Model">
@@ -263,4 +263,4 @@
                      parameter="eyes" />
                 </menu_item_call>
             </menu>
-</menu>
+</menu>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 317c6fe9ac..e00586811b 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2931,6 +2931,18 @@
                  function="Floater.Toggle"
                  parameter="region_debug_console" />
             </menu_item_check>
+            <menu_item_check
+             label="Region Debug Console"
+             name="Region Debug Console"
+             shortcut="control|shift|`"
+             use_mac_ctrl="true">
+                <menu_item_check.on_check
+                 function="Floater.Visible"
+                 parameter="region_debug_console" />
+                <menu_item_check.on_click
+                 function="Floater.Toggle"
+                 parameter="region_debug_console" />
+            </menu_item_check>
             <menu_item_separator />
 
             <menu_item_check
diff --git a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
index 0ac2c14253..0e858ccf10 100644
--- a/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
+++ b/indra/newview/skins/default/xui/en/menu_wearing_gear.xml
@@ -20,4 +20,11 @@
          function="Gear.OnEnable"
          parameter="take_off" />
     </menu_item_call>
+    <menu_item_call
+     label="Copy outfit list to clipboard"
+     layout="topleft"
+     name="copy">
+        <on_click
+         function="Gear.Copy" />
+    </menu_item_call>
 </toggleable_menu>
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 4ef64269e8..661165069e 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -5626,6 +5626,15 @@ This area has voice chat disabled. You won&apos;t be able to hear anyone talking
 This area has building disabled. You can&apos;t build or rez objects here.
   </notification>
 
+  <notification
+   icon="notify.tga"
+   name="SeeAvatars"
+   persist="true"
+   type="notify"
+   unique="true">
+This parcel hides avatars and text chat from another parcel.   You can&apos;t see other residents outside the parcel, and those outside are not able to see you.  Regular text chat on channel 0 is also blocked.
+  </notification>
+
   <notification
    icon="notify.tga"
    name="ScriptsStopped"
diff --git a/indra/newview/skins/default/xui/en/panel_edit_pick.xml b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
index 82dfb445da..2ec2e03e8c 100644
--- a/indra/newview/skins/default/xui/en/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/en/panel_edit_pick.xml
@@ -220,7 +220,7 @@
 			  height="23"
 			  layout="topleft"
 			  left_pad="4"
-			  name="layout_panel1"
+			  name="layout_panel2"
 		      user_resize="false" 
 		      auto_resize="true"
 			  width="146">
diff --git a/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
new file mode 100644
index 0000000000..d06190ec54
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_inbox_inventory.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<inbox_inventory_panel
+    name="inventory_inbox"
+    start_folder="Received Items"
+    follows="all" layout="topleft"
+    top="0" left="0" height="165" width="308"
+	top_pad="0"
+    bg_opaque_color="DkGray2"
+    bg_alpha_color="DkGray2"
+    background_visible="true"
+    background_opaque="true"
+    border="false"
+    bevel_style="none"
+    show_item_link_overlays="true"
+    >
+    <scroll reserve_scroll_corner="false" />
+</inbox_inventory_panel>
diff --git a/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
new file mode 100644
index 0000000000..af32056428
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/panel_outbox_inventory.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<inventory_panel
+    name="inventory_outbox"
+    start_folder="Outbox"
+    follows="all" layout="topleft"
+    top="0" left="0" height="165" width="308"
+	top_pad="0"
+    bg_opaque_color="DkGray2"
+    bg_alpha_color="DkGray2"
+    background_visible="true"
+    background_opaque="true"
+    border="false"
+    bevel_style="none"
+    show_item_link_overlays="true"
+    >
+    <scroll reserve_scroll_corner="false" />
+</inventory_panel>
diff --git a/indra/newview/skins/default/xui/en/panel_place_profile.xml b/indra/newview/skins/default/xui/en/panel_place_profile.xml
index 774a9e8bbf..e280115bda 100644
--- a/indra/newview/skins/default/xui/en/panel_place_profile.xml
+++ b/indra/newview/skins/default/xui/en/panel_place_profile.xml
@@ -153,6 +153,14 @@
      name="icon_DamageNo"
      translate="false"
      value="Parcel_DamageNo_Dark" />
+    <string
+     name="icon_SeeAVs_Off"
+     translate="false"
+     value="Parcel_SeeAVsOff_Dark" />
+    <string
+     name="icon_SeeAVs_On"
+     translate="false"
+     value="Parcel_SeeAVsOn_Dark" />
     <button
      follows="top|left"
      height="24"
@@ -354,7 +362,7 @@
                  title="Parcel">
                     <panel
                      follows="all"
-                     height="175"
+                     height="200"
                      layout="topleft"
                      left="0"
                      name="parcel_characteristics_panel"
@@ -543,6 +551,31 @@
                          top_delta="0"
                          value="Off"
                          width="60" />
+                        <icon
+                         follows="top|left"
+                         height="18"
+                         image_name="Parcel_SeeAVsOff_Dark"
+                         layout="topleft"
+                         left="10"
+                         name="see_avatars_icon"
+                         top_pad="7"
+                         width="22" />
+                        <text
+                         follows="left|top"
+                         height="14"
+                         layout="topleft"
+                         left_pad="8"
+                         name="see_avatars_label"
+                         value="See Avatars:"
+                         width="90" />
+                        <text
+                         follows="left|top"
+                         height="14"
+                         layout="topleft"
+                         left_pad="0"
+                         name="see_avatars_value"
+                         value="Off"
+                         width="60" />
                         <button
                          follows="bottom|right"
                          height="23"
diff --git a/indra/newview/skins/default/xui/en/panel_progress.xml b/indra/newview/skins/default/xui/en/panel_progress.xml
index 2868d91cc7..4535c56339 100644
--- a/indra/newview/skins/default/xui/en/panel_progress.xml
+++ b/indra/newview/skins/default/xui/en/panel_progress.xml
@@ -132,4 +132,12 @@
      name="cancel_btn"
      top="700"
      width="90" />
+  <web_browser
+   follows="all"
+   layout="topleft"
+   left="0"
+   name="login_media_panel"
+   width="1024"
+   height="768"
+   top="0"/>
 </panel>
diff --git a/indra/newview/skins/default/xui/en/panel_region_estate.xml b/indra/newview/skins/default/xui/en/panel_region_estate.xml
index 450853993a..6b28639a77 100644
--- a/indra/newview/skins/default/xui/en/panel_region_estate.xml
+++ b/indra/newview/skins/default/xui/en/panel_region_estate.xml
@@ -79,13 +79,22 @@
         (unknown)
     </text>
 
+    <view_border
+     bevel_style="none"
+     follows="top|left"
+     height="95"
+     layout="topleft"
+     left="10"
+     top_pad="5"
+     width="470" />
+
     <check_box
      height="20"
      label="Allow Public Access"
      layout="topleft"
-     left="10"
+     left="20"
      name="externally_visible_check"
-     top_pad="6"
+     top_delta="5"
      width="200" />
 
     <check_box
@@ -104,6 +113,16 @@
      name="allow_direct_teleport"
      top_pad="4"
      width="80" />
+    <button
+     enabled="false"
+     follows="left|top"
+     height="23"
+     label="Apply"
+     layout="topleft"
+     name="apply_btn"
+     top_pad="15"
+     left_delta="0"
+     width="97" />
 
     <text
      type="string"
@@ -111,9 +130,9 @@
      follows="top|left"
      height="16"
      layout="topleft"
-     left="32"
+     left="20"
      name="Only Allow"
-     top_delta="0"
+     top_delta="-30"
      width="278">
         Restrict Access to accounts verified by:
     </text>
@@ -146,7 +165,7 @@
      height="20"
      layout="topleft"
      name="estate_manager_label"
-     top_pad="10"
+     top_pad="30"
      left="10"
      width="200">
         Estate Managers:
diff --git a/indra/newview/skins/default/xui/en/panel_side_tray.xml b/indra/newview/skins/default/xui/en/panel_side_tray.xml
index 6ef93406ec..0f330a7b98 100644
--- a/indra/newview/skins/default/xui/en/panel_side_tray.xml
+++ b/indra/newview/skins/default/xui/en/panel_side_tray.xml
@@ -142,6 +142,7 @@
     mouse_opaque="false"
     background_visible="true"
   >
+      <badge location="top_left" location_percent_vcenter="50" location_percent_hcenter="95" />
       <panel
         class="sidepanel_inventory"
         name="sidepanel_inventory"
diff --git a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
index 30d3064e14..79f29777ce 100644
--- a/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
+++ b/indra/newview/skins/default/xui/en/panel_topinfo_bar.xml
@@ -88,6 +88,16 @@
     visible="false"
     width="14"
     />
+  <icon
+    follows="right|top"
+    height="13"
+    image_name="Parcel_SeeAVsOff_Light"
+    left="2"
+    name="see_avatars_icon"
+    top="3"
+    visible="false"
+    width="14"
+    />
   <text
     follows="right|top"
     font="SansSerifSmall"
diff --git a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
index 8997c1a6d7..79a0ec7c72 100644
--- a/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
+++ b/indra/newview/skins/default/xui/en/sidepanel_inventory.xml
@@ -9,7 +9,7 @@
 	  min_width="240"
 	  name="objects panel"
 	  width="333">
-	 <panel
+    <panel
 		 follows="all"
 		 layout="topleft"
 		 left="0"
@@ -19,24 +19,226 @@
 		 height="570"
 		 visible="true"
 		 width="330">
-		<panel
-			 class="panel_main_inventory"
-			 filename="panel_main_inventory.xml"
-			 follows="all"
-			 layout="topleft"
-			 left="0"
-			 name="panel_main_inventory"
-			 top="0"
-			 label=""
-			 height="545"
-			 width="330" />
+         <layout_stack
+              follows="left|right|top|bottom"
+              layout="topleft"
+              left="0"
+              top="0"
+              orientation="vertical"
+              name="inventory_layout_stack"
+              height="535"
+              width="330">
+             <layout_panel
+                 name="main_inventory_layout_panel"
+                 min_dim="150"
+                 width="330"
+                 follows="bottom|left|right"
+                 user_resize="false"
+                 height="480">
+                 <panel
+                      class="panel_main_inventory"
+                      filename="panel_main_inventory.xml"
+                      follows="all"
+                      layout="topleft"
+                      left="0"
+                      name="panel_main_inventory"
+                      top="0"
+                      label=""
+                      height="480"
+                      width="330" />
+             </layout_panel>
+             <layout_panel
+                 width="330"
+                 auto_resize="true"
+                 user_resize="false"
+                 follows="bottom|left|right"
+                 name="inbox_layout_panel"
+                 visible="false"
+                 min_dim="35"
+                 max_dim="200"
+                 expanded_min_dim="90"
+                 height="200">
+                 <panel
+                      follows="all"
+                      layout="topleft"
+                      left="0"
+                      name="marketplace_inbox"
+                      class="panel_marketplace_inbox"
+                      top="0"
+                      label=""
+                      height="200"
+                      width="330">
+                     <string name="InboxLabelWithArg">Received Items ([NUM])</string>
+                     <string name="InboxLabelNoArg">Received Items</string>
+                     <button
+                        label="Received Items"
+                        name="inbox_btn"
+                        height="35"
+                        width="308"
+                        image_unselected="MarketplaceBtn_Off"
+                        image_selected="MarketplaceBtn_Selected"
+                        halign="left"
+                        handle_right_mouse="false"
+                        follows="top|left|right"
+                        is_toggle="true"
+                        tab_stop="false"
+                        pad_left="35"
+                        top="0"
+                        left="10" />
+                     <text
+                        type="string"
+                        length="1"
+                        follows="right|top"
+                        layout="topleft"
+                        height="13"
+                        top="10"
+                        right="-20"
+                        name="inbox_fresh_new_count"
+                        font="SansSerifMedium"
+                        halign="right"
+                        text_color="EmphasisColor"
+                        top_pad="0"
+                        width="300">
+                        [NUM] New
+                     </text>
+                     <panel
+                        follows="all"
+                        left="10"
+                        bottom="200"
+                        width="308"
+                        top="35"
+                        bg_opaque_color="InventoryBackgroundColor"
+                        background_visible="true"
+                        background_opaque="true"
+                        tool_tip="Drag and drop items to your inventory to manage and use them"
+                        >
+                        <text
+							name="inbox_inventory_placeholder"
+							type="string"
+							follows="all"
+							layout="topleft"
+							top="0"
+							left="0"
+							width="308"
+							height="165"
+							wrap="true"
+							halign="center">
+							Purchases from the marketplace will be delivered here.
+						</text>
+                    </panel>
+                 </panel>
+             </layout_panel>
+             <layout_panel
+                width="330"
+                auto_resize="true"
+                user_resize="false"
+                follows="bottom|left|right"
+                name="outbox_layout_panel"
+                visible="false"
+                min_dim="35"
+                max_dim="200"
+                expanded_min_dim="90"
+                height="200">
+                 <panel
+                      follows="all"
+                      layout="topleft"
+                      left="10"
+                      name="marketplace_outbox"
+                      class="panel_marketplace_outbox"
+                      top="0"
+                      label=""
+                      height="200"
+                      width="310">
+                     <button
+                        label="Merchant Outbox"
+                        is_toggle="true"
+                        handle_right_mouse="false"
+                        name="outbox_btn"
+                        follows="top|left|right"
+                        image_unselected="MarketplaceBtn_Off"
+                        image_selected="MarketplaceBtn_Selected"
+                        height="35"
+                        tab_stop="false"
+                        width="308"
+                        halign="left"
+                        pad_left="35"
+                        top="0"
+                        left="0" />
+                     <button
+                         image_unselected="OutboxPush_Off"
+                         image_selected="OutboxPush_Selected"
+                         image_hover_selected="OutboxPush_Selected_Over"
+                         image_hover_unselected="OutboxPush_Over"
+                         image_disabled_selected="OutboxPush_Selected_Disabled"
+                         image_disabled="OutboxPush_Disabled"
+                         image_pressed="OutboxPush_Press"
+                         image_pressed_selected="OutboxPush_Selected_Press"
+                         label=""
+                         tool_tip="Push to my Marketplace Storefront"
+                         is_toggle="false"
+                         name="outbox_sync_btn"
+                         follows="top|right"
+                         tab_stop="false"
+                         halign="center"
+                         top="6"
+                         left="-50"
+                         height="23"
+                         width="32"
+                         enabled="false" />
+                     <loading_indicator
+                        follows="top|right"
+                        name="outbox_sync_indicator"
+                        top="6"
+                        left="-50"
+                        height="23"
+                        width="32"
+                        images_per_sec="1.15"
+                        tab_stop="false"
+                        visible="false">
+                         <images>
+                             <image name="OutboxPush_Progress_1"/>
+                             <image name="OutboxPush_Progress_2"/>
+                             <image name="OutboxPush_Progress_3"/>
+                             <image name="OutboxPush_Progress_4"/>
+                             <image name="OutboxPush_Progress_5"/>
+                             <image name="OutboxPush_Progress_6"/>
+                         </images>
+                     </loading_indicator>
+                     <panel
+                        follows="all"
+                        left="10"
+                        bottom="200"
+                        width="308"
+                        top="35"
+                        bg_opaque_color="InventoryBackgroundColor"
+                        background_visible="true"
+                        background_opaque="true"
+                        tool_tip="Drag and drop items here to prepare them for sale on your storefront"
+                        >
+                        <text
+							name="outbox_inventory_placeholder"
+							type="string"
+							follows="all"
+							layout="topleft"
+							top="0"
+							left="0"
+							width="308"
+							height="165"
+							wrap="true"
+							halign="center">
+							Set up your merchant account to use this feature.
+						</text>
+                    </panel>
+                 </panel>
+             </layout_panel>
+         </layout_stack>
 		<panel
 		     follows="bottom|left|right"
-			 height="25"
+			 height="30"
 			 layout="topleft"
 			 name="button_panel"
 			 left="9"
-			 top_pad="-2"
+             top_pad="7"
 			 width="308">
 			<layout_stack
      	         follows="bottom|left|right"
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 09bff0a46c..022c97f341 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1759,10 +1759,10 @@ integer llGetParcelMaxPrims(vector pos, integer sim_wide)
 Returns the maximum number of prims allowed on the parcel at pos
 	</string>
 	<string name="LSLTipText_llGetParcelDetails" translate="false">
-list llGetParcelDetails(vector pos, list params)
-Returns the parcel details specified in params for the parcel at pos.
-Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA
-	</string>
+    list llGetParcelDetails(vector pos, list params)
+    Returns the parcel details specified in params for the parcel at pos.
+    Params is one or more of: PARCEL_DETAILS_NAME, _DESC, _OWNER, _GROUP, _AREA, _ID, _SEE_AVATARS
+  </string>
 	<string name="LSLTipText_llSetLinkPrimitiveParams" translate="false">
 llSetLinkPrimitiveParams(integer linknumber, list rules)
 Sets primitive parameters for linknumber based on rules
@@ -2021,6 +2021,8 @@ Returns a string with the requested data about the region
 	<string name="PlacesNoMatchingItems">Didn't find what you're looking for? Try [secondlife:///app/search/places/[SEARCH_TERM] Search].</string>
 	<string name="FavoritesNoMatchingItems">Drag a landmark here to add it to your favorites.</string>
 	<string name="InventoryNoTexture">You do not have a copy of this texture in your inventory</string>
+	<string name="InventoryInboxNoItems">Items purchased through the marketplace will be delivered here.</string>
+	<string name="InventoryOutboxNoItems">Drag items here in preparation for listing on your marketplace storefront.</string>
     <!-- use value="" because they have preceding spaces -->
 	<string name="no_transfer" value=" (no transfer)" />
 	<string name="no_modify"   value=" (no modify)" />
@@ -2067,7 +2069,6 @@ Returns a string with the requested data about the region
 
 	<!-- inventory folder -->
 	<string name="InvFolder My Inventory">My Inventory</string>
-	<string name="InvFolder My Favorites">My Favorites</string>
 	<string name="InvFolder Library">Library</string>
 	<string name="InvFolder Textures">Textures</string>
 	<string name="InvFolder Sounds">Sounds</string>
@@ -2087,10 +2088,10 @@ Returns a string with the requested data about the region
 	<string name="InvFolder Uncompressed Sounds">Uncompressed Sounds</string>
 	<string name="InvFolder Animations">Animations</string>
 	<string name="InvFolder Gestures">Gestures</string>
-	<string name="InvFolder Favorite">Favorites</string>
+	<string name="InvFolder Favorite">My Favorites</string>
   <!-- historically default name of the Favorites folder can start from either "f" or "F" letter.
   We should localize both of them with the same value -->
-	<string name="InvFolder favorite">Favorites</string>
+	<string name="InvFolder favorite">My Favorites</string>
 	<string name="InvFolder Current Outfit">Current Outfit</string>
 	<string name="InvFolder Initial Outfits">Initial Outfits</string>
 	<string name="InvFolder My Outfits">My Outfits</string>
@@ -3140,6 +3141,7 @@ If you continue to receive this message, contact the [SUPPORT_SITE].
   <string name="LocationCtrlAdultIconTooltip">Adult Region</string>
   <string name="LocationCtrlModerateIconTooltip">Moderate Region</string>
   <string name="LocationCtrlGeneralIconTooltip">General Region</string>
+  <string name="LocationCtrlSeeAVsTooltip">Avatars visible and chat allowed outside of this parcel</string>
 
   <!-- Strings used by the (currently Linux) auto-updater app -->
 	<string name="UpdaterWindowTitle">
diff --git a/indra/newview/skins/default/xui/en/widgets/badge.xml b/indra/newview/skins/default/xui/en/widgets/badge.xml
new file mode 100644
index 0000000000..f77c4b7178
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/badge.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<!-- Additional attributes:
+   -->
+<badge border_image="Badge_Border"
+       border_color="BadgeBorderColor"
+       font="SansSerifSmall"
+       image="Badge_Background"
+       image_color="BadgeImageColor"
+       label_color="BadgeLabelColor"
+       location="top_left"
+       location_percent_hcenter="85"
+       location_percent_vcenter="85"
+       padding_horiz="7"
+       padding_vert="4"
+       requests_front="true"
+       >
+</badge>
diff --git a/indra/newview/skins/default/xui/en/widgets/button.xml b/indra/newview/skins/default/xui/en/widgets/button.xml
index 16241ed84e..302014eb24 100644
--- a/indra/newview/skins/default/xui/en/widgets/button.xml
+++ b/indra/newview/skins/default/xui/en/widgets/button.xml
@@ -25,5 +25,6 @@
         pad_bottom="3" 
         height="23"
         scale_image="true"
+        handle_right_mouse="true"
         use_draw_context_alpha="true">
 </button>
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
new file mode 100644
index 0000000000..2c987b158d
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/inbox_folder_view_folder.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<inbox_folder_view_folder
+  folder_arrow_image="Folder_Arrow"
+  folder_indentation="8"
+  item_height="20" 
+  item_top_pad="4"
+  selection_image="Rounded_Square"
+  >
+	<new_badge label="New" location="right" location_percent_hcenter="70" />
+</inbox_folder_view_folder>
diff --git a/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
new file mode 100644
index 0000000000..830c27bdac
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/widgets/inbox_inventory_panel.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<inbox_inventory_panel show_load_status="false" />
diff --git a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
index 93875d66e6..00f4c43915 100644
--- a/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/inventory_panel.xml
@@ -3,4 +3,12 @@
   bg_opaque_color="InventoryBackgroundColor"
   background_visible="true"
   background_opaque="true"
-  />
+  show_load_status="true"
+  >
+    <scroll
+		name="Inventory Scroller"
+        follows="all"
+		reserve_scroll_corner="true"
+        tab_stop="true"
+        />
+</panel>
diff --git a/indra/newview/skins/default/xui/en/widgets/location_input.xml b/indra/newview/skins/default/xui/en/widgets/location_input.xml
index 37d60f1671..44436fb6f2 100644
--- a/indra/newview/skins/default/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/default/xui/en/widgets/location_input.xml
@@ -123,6 +123,14 @@
 	font="SansSerifSmall"
 	text_color="TextFgColor"
 	/>
+  <see_avatars_icon
+    name="see_avatars_icon"
+    width="22"
+    height="18"
+    top="21"
+    follows="right|top"
+    image_name="Parcel_SeeAVsOff_Light"
+    />
   <combo_button
 		name="Location History"
                 label=""
diff --git a/indra/newview/skins/default/xui/en/widgets/panel.xml b/indra/newview/skins/default/xui/en/widgets/panel.xml
index 9bf99fa363..47a210d9b7 100644
--- a/indra/newview/skins/default/xui/en/widgets/panel.xml
+++ b/indra/newview/skins/default/xui/en/widgets/panel.xml
@@ -10,4 +10,5 @@
        bg_alpha_image_overlay="White"
        background_visible="false"
        background_opaque="false"
-       chrome="false"/>
\ No newline at end of file
+       chrome="false"
+       accepts_badge="true"/>
\ No newline at end of file
diff --git a/indra/newview/skins/default/xui/es/panel_edit_pick.xml b/indra/newview/skins/default/xui/es/panel_edit_pick.xml
index 9b101ee4ba..cda465da9c 100644
--- a/indra/newview/skins/default/xui/es/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/es/panel_edit_pick.xml
@@ -29,7 +29,7 @@
 			<layout_panel name="layout_panel1">
 				<button label="Guardar" name="save_changes_btn"/>
 			</layout_panel>
-			<layout_panel name="layout_panel1">
+			<layout_panel name="layout_panel2">
 				<button label="Cancelar" name="cancel_btn"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index b759eed738..72d7493a02 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -1211,9 +1211,6 @@ Intenta iniciar sesión de nuevo en unos instantes.
 	<string name="InvFolder My Inventory">
 		Mi Inventario
 	</string>
-	<string name="InvFolder My Favorites">
-		Mis Favoritos
-	</string>
 	<string name="InvFolder Library">
 		Biblioteca
 	</string>
@@ -1272,10 +1269,10 @@ Intenta iniciar sesión de nuevo en unos instantes.
 		Gestos
 	</string>
 	<string name="InvFolder Favorite">
-		Favoritos
+		Mis Favoritos
 	</string>
 	<string name="InvFolder favorite">
-		Favoritos
+		Mis Favoritos
 	</string>
 	<string name="InvFolder Current Outfit">
 		Vestuario actual
diff --git a/indra/newview/skins/default/xui/fr/panel_edit_pick.xml b/indra/newview/skins/default/xui/fr/panel_edit_pick.xml
index 2364d9bbb2..247e18da82 100644
--- a/indra/newview/skins/default/xui/fr/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/fr/panel_edit_pick.xml
@@ -29,7 +29,7 @@
 			<layout_panel name="layout_panel1">
 				<button label="Enregistrer" name="save_changes_btn"/>
 			</layout_panel>
-			<layout_panel name="layout_panel1">
+			<layout_panel name="layout_panel2">
 				<button label="Annuler" name="cancel_btn"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 3ec85551da..077e545851 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1238,9 +1238,6 @@ Veuillez réessayer de vous connecter dans une minute.
 	<string name="InvFolder My Inventory">
 		Mon inventaire
 	</string>
-	<string name="InvFolder My Favorites">
-		Mes Favoris
-	</string>
 	<string name="InvFolder Library">
 		Bibliothèque
 	</string>
@@ -1299,10 +1296,10 @@ Veuillez réessayer de vous connecter dans une minute.
 		Gestes
 	</string>
 	<string name="InvFolder Favorite">
-		Favoris
+		Mes Favoris
 	</string>
 	<string name="InvFolder favorite">
-		Favoris
+		Mes Favoris
 	</string>
 	<string name="InvFolder Current Outfit">
 		Tenue actuelle
diff --git a/indra/newview/skins/default/xui/it/panel_edit_pick.xml b/indra/newview/skins/default/xui/it/panel_edit_pick.xml
index 8e464ca037..145b8cf4e3 100644
--- a/indra/newview/skins/default/xui/it/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/it/panel_edit_pick.xml
@@ -29,7 +29,7 @@
 			<layout_panel name="layout_panel1">
 				<button label="Salva luogo preferito" name="save_changes_btn"/>
 			</layout_panel>
-			<layout_panel name="layout_panel1">
+			<layout_panel name="layout_panel2">
 				<button label="Annulla" name="cancel_btn"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml
index cbe8ef24c4..6af515d82d 100644
--- a/indra/newview/skins/default/xui/it/strings.xml
+++ b/indra/newview/skins/default/xui/it/strings.xml
@@ -1217,9 +1217,6 @@ Prova ad accedere nuovamente tra un minuto.
 	<string name="InvFolder My Inventory">
 		Il mio inventario
 	</string>
-	<string name="InvFolder My Favorites">
-		I miei preferiti
-	</string>
 	<string name="InvFolder Library">
 		Libreria
 	</string>
@@ -1278,10 +1275,10 @@ Prova ad accedere nuovamente tra un minuto.
 		Gesture
 	</string>
 	<string name="InvFolder Favorite">
-		Preferiti
+		I miei preferiti
 	</string>
 	<string name="InvFolder favorite">
-		Preferiti
+		I miei preferiti
 	</string>
 	<string name="InvFolder Current Outfit">
 		Abbigliamento attuale
diff --git a/indra/newview/skins/default/xui/ja/panel_edit_pick.xml b/indra/newview/skins/default/xui/ja/panel_edit_pick.xml
index 4fb031b677..39ea1df1e3 100644
--- a/indra/newview/skins/default/xui/ja/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/ja/panel_edit_pick.xml
@@ -29,7 +29,7 @@
 			<layout_panel name="layout_panel1">
 				<button label="ピックを保存" name="save_changes_btn"/>
 			</layout_panel>
-			<layout_panel name="layout_panel1">
+			<layout_panel name="layout_panel2">
 				<button label="取り消し" name="cancel_btn"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml
index ff22221aab..fa6d25d238 100644
--- a/indra/newview/skins/default/xui/ja/strings.xml
+++ b/indra/newview/skins/default/xui/ja/strings.xml
@@ -1238,9 +1238,6 @@ support@secondlife.com にお問い合わせください。
 	<string name="InvFolder My Inventory">
 		持ち物
 	</string>
-	<string name="InvFolder My Favorites">
-		お気に入り
-	</string>
 	<string name="InvFolder Library">
 		ライブラリ
 	</string>
diff --git a/indra/newview/skins/default/xui/nl/strings.xml b/indra/newview/skins/default/xui/nl/strings.xml
index a53c0769dc..e9db237e82 100644
--- a/indra/newview/skins/default/xui/nl/strings.xml
+++ b/indra/newview/skins/default/xui/nl/strings.xml
@@ -849,9 +849,6 @@
 	<string name="InvFolder My Inventory">
 		Mijn Inventaris
 	</string>
-	<string name="InvFolder My Favorites">
-		Mijn Favorieten
-	</string>
 	<string name="InvFolder Library">
 		Bibliotheek
 	</string>
@@ -910,10 +907,10 @@
 		Gebaren
 	</string>
 	<string name="InvFolder Favorite">
-		Favoriten
+		Mijn Favorieten
 	</string>
 	<string name="InvFolder favorite">
-		Favoriten
+		Mijn Favorieten
 	</string>
 	<string name="InvFolder Current Outfit">
 		Huidige Uitrusting
diff --git a/indra/newview/skins/default/xui/pl/panel_edit_pick.xml b/indra/newview/skins/default/xui/pl/panel_edit_pick.xml
index 8a183c00cf..72c162f63d 100644
--- a/indra/newview/skins/default/xui/pl/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/pl/panel_edit_pick.xml
@@ -29,7 +29,7 @@
 			<layout_panel name="layout_panel1">
 				<button label="Zapisz obrazek" name="save_changes_btn"/>
 			</layout_panel>
-			<layout_panel name="layout_panel1">
+			<layout_panel name="layout_panel2">
 				<button label="Cofnij" name="cancel_btn"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/pl/strings.xml b/indra/newview/skins/default/xui/pl/strings.xml
index 6eceed46d3..e93da48dc0 100644
--- a/indra/newview/skins/default/xui/pl/strings.xml
+++ b/indra/newview/skins/default/xui/pl/strings.xml
@@ -1072,9 +1072,6 @@
 	<string name="InvFolder My Inventory">
 		Moja Szafa
 	</string>
-	<string name="InvFolder My Favorites">
-		Moje ulubione
-	</string>
 	<string name="InvFolder Library">
 		Biblioteka
 	</string>
@@ -1133,10 +1130,10 @@
 		Gesturki
 	</string>
 	<string name="InvFolder Favorite">
-		Ulubione
+		Moje ulubione
 	</string>
 	<string name="InvFolder favorite">
-		Ulubione
+		Moje ulubione
 	</string>
 	<string name="InvFolder Current Outfit">
 		Obecny strój
diff --git a/indra/newview/skins/default/xui/pt/panel_edit_pick.xml b/indra/newview/skins/default/xui/pt/panel_edit_pick.xml
index 432affcf09..5eb9987e71 100644
--- a/indra/newview/skins/default/xui/pt/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/pt/panel_edit_pick.xml
@@ -29,7 +29,7 @@
 			<layout_panel name="layout_panel1">
 				<button label="Salvar destaque" name="save_changes_btn"/>
 			</layout_panel>
-			<layout_panel name="layout_panel1">
+			<layout_panel name="layout_panel2">
 				<button label="Cancelar" name="cancel_btn"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml
index c5268966c1..ed93217d59 100644
--- a/indra/newview/skins/default/xui/pt/strings.xml
+++ b/indra/newview/skins/default/xui/pt/strings.xml
@@ -1172,9 +1172,6 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 	<string name="InvFolder My Inventory">
 		Meu inventário
 	</string>
-	<string name="InvFolder My Favorites">
-		Meus favoritos
-	</string>
 	<string name="InvFolder Library">
 		Biblioteca
 	</string>
@@ -1233,10 +1230,10 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar
 		Gestos
 	</string>
 	<string name="InvFolder Favorite">
-		Favoritos
+		Meus favoritos
 	</string>
 	<string name="InvFolder favorite">
-		Favoritos
+		Meus favoritos
 	</string>
 	<string name="InvFolder Current Outfit">
 		Look atual
diff --git a/indra/newview/skins/default/xui/zh/panel_edit_pick.xml b/indra/newview/skins/default/xui/zh/panel_edit_pick.xml
index 6ac7226185..a624877ab3 100644
--- a/indra/newview/skins/default/xui/zh/panel_edit_pick.xml
+++ b/indra/newview/skins/default/xui/zh/panel_edit_pick.xml
@@ -29,7 +29,7 @@
 			<layout_panel name="layout_panel1">
 				<button label="儲存精選地點" name="save_changes_btn"/>
 			</layout_panel>
-			<layout_panel name="layout_panel1">
+			<layout_panel name="layout_panel2">
 				<button label="取消" name="cancel_btn"/>
 			</layout_panel>
 		</layout_stack>
diff --git a/indra/newview/skins/default/xui/zh/strings.xml b/indra/newview/skins/default/xui/zh/strings.xml
index 986ab82523..28b8cce5b2 100644
--- a/indra/newview/skins/default/xui/zh/strings.xml
+++ b/indra/newview/skins/default/xui/zh/strings.xml
@@ -1099,9 +1099,6 @@
 	<string name="InvFolder My Inventory">
 		我的收納區
 	</string>
-	<string name="InvFolder My Favorites">
-		My Favorites
-	</string>
 	<string name="InvFolder Library">
 		Library
 	</string>
@@ -1160,10 +1157,10 @@
 		姿勢
 	</string>
 	<string name="InvFolder Favorite">
-		Favorites
+		My Favorites
 	</string>
 	<string name="InvFolder favorite">
-		Favorites
+		My Favorites
 	</string>
 	<string name="InvFolder Current Outfit">
 		目前裝扮
diff --git a/indra/newview/skins/minimal/xui/en/floater_help_browser.xml b/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
index cc551f7d58..477f210352 100644
--- a/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
+++ b/indra/newview/skins/minimal/xui/en/floater_help_browser.xml
@@ -3,14 +3,13 @@
  legacy_header_height="18"
  can_resize="true"
  can_minimize="false" 
- height="360"
+ height="460"
  layout="topleft"
  min_height="360"
- left="645"
+ left="10000"
  top="10" 
- min_width="345"
+ min_width="335"
  name="floater_help_browser"
- save_rect="true"
  single_instance="true"
  title="HOW TO"
  width="335">
@@ -22,7 +21,7 @@
      name="done_text">
     </floater.string>
     <layout_stack
-     bottom="360"
+     bottom="460"
      follows="left|right|top|bottom"
      layout="topleft"
      left="5"
@@ -38,7 +37,7 @@
          user_resize="false"
          width="325">
             <web_browser
-              trusted_content="true" 
+              trusted_content="true"  
              bottom="-5"
              follows="left|right|top|bottom"
              layout="topleft"
diff --git a/indra/newview/skins/minimal/xui/en/floater_web_content.xml b/indra/newview/skins/minimal/xui/en/floater_web_content.xml
index 50cb5b14ce..1d9a967d5a 100644
--- a/indra/newview/skins/minimal/xui/en/floater_web_content.xml
+++ b/indra/newview/skins/minimal/xui/en/floater_web_content.xml
@@ -17,6 +17,7 @@
     follows="left|right|top|bottom"
     layout="topleft"
     left="5"
+    animate="false"
     name="stack1"
     orientation="vertical"
     top="20"
@@ -155,14 +156,20 @@
       name="external_controls"
       top_delta="0"
       user_resize="false"
+      auto_resize="true"
       width="585">
       <web_browser
-        bottom="-22"
+        bottom="-2"
         follows="all"
         layout="topleft"
         left="0"
         name="webbrowser"
         top="0"/>
+      </layout_panel>
+    <layout_panel name="status_bar" 
+                  height="23"
+                  auto_resize="false"
+                  user_resize="false">
       <text
         type="string"
         length="200"
@@ -173,7 +180,7 @@
         name="statusbartext"
         parse_urls="false"
         text_color="0.4 0.4 0.4 1"
-        top_pad="5"
+        top_pad="3"
         width="495"/>
       <progress_bar
         color_bar="0.3 1.0 0.3 1"
diff --git a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
index be13bc1bb7..2cb77bcdf3 100644
--- a/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
+++ b/indra/newview/skins/minimal/xui/en/panel_im_control_panel.xml
@@ -23,102 +23,172 @@
      orientation="vertical"
      top_pad="5"
      width="145">
-      <layout_panel
-       auto_resize="false"
-       follows="top|left|right"
-       height="20"
-       layout="topleft"
-       left="2"
-       min_height="20"
-       width="140"
-       name="view_profile_btn_panel"
-       top="0"
-       user_resize="false">
-        <button
-         follows="left|top|right"
-         height="23"
-         label="Profile"
-         name="view_profile_btn"
+        <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="20"
+         layout="topleft"
+         left="2"
+         min_height="20"
+         width="140"
+         name="view_profile_btn_panel"
          top="0"
-         width="140" />
-      </layout_panel>
-      <layout_panel
-       auto_resize="false"
-       follows="top|left|right"
-       height="25"
-       layout="topleft"
-       min_height="25"
-       width="140"
-       name="add_friend_btn_panel"
-       user_resize="false">
-        <button
-         follows="left|top|right"
-         height="23"
-         label="Add Friend"
-         name="add_friend_btn"
-         top="5"
-         width="140" />
-      </layout_panel>
-      <layout_panel
-       auto_resize="false"
-       follows="top|left|right"
-       height="25"
-       layout="topleft"
-       min_height="25"
-       width="140"
-       name="teleport_btn_panel"
-       user_resize="false">
-        <button
-             auto_resize="false"
+         user_resize="false">
+            <button
+             follows="left|top|right"
+             height="23"
+             label="Profile"
+             name="view_profile_btn"
+             top="0"
+             width="140" />
+        </layout_panel>
+        <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="25"
+         layout="topleft"
+         min_height="25"
+         width="140"
+         name="add_friend_btn_panel"
+         user_resize="false">
+            <button
              follows="left|top|right"
              height="23"
-             label="Teleport"
-             name="teleport_btn"
-             tool_tip = "Offer to teleport this person"
+             label="Add Friend"
+             name="add_friend_btn"
+             top="5"
              width="140" />
-      </layout_panel>
-      <layout_panel
+        </layout_panel>
+        <layout_panel
          auto_resize="false"
          follows="top|left|right"
          height="25"
          layout="topleft"
          min_height="25"
          width="140"
-         name="call_btn_panel"
+         name="teleport_btn_panel"
          user_resize="false">
-        <button
-         follows="left|top|right"
-         height="23"
-         label="Call"
-         name="call_btn"
-         width="140" />
-      </layout_panel>
-      <layout_panel
-       auto_resize="false"
-       follows="top|left|right"
-       height="25"
-       layout="topleft"
-       min_height="25"
-       width="140"
-       name="end_call_btn_panel"
-       user_resize="false"
-       visible="false">
-        <button
-         follows="left|top|right"
-         height="23"
-         label="End Call"
-         name="end_call_btn"
-         width="140" />
-      </layout_panel>
-      <layout_panel
-       mouse_opaque="false"
-       auto_resize="true"
-       follows="top|left"
-       height="0"
-       layout="topleft"
-       min_height="0"
-       width="140"
-       name="spacer"
-       user_resize="false" />
+            <button
+                 auto_resize="false"
+                 follows="left|top|right"
+                 height="23"
+                 label="Teleport"
+                 name="teleport_btn"
+                 tool_tip = "Offer to teleport this person"
+                 width="140" />
+        </layout_panel>
+        <layout_panel
+           auto_resize="false"
+           follows="top|left|right"
+           height="25"
+           layout="topleft"
+           min_height="25"
+           width="140"
+           name="call_btn_panel"
+           user_resize="false">
+            <button
+             follows="left|top|right"
+             height="23"
+             label="Call"
+             name="call_btn"
+             width="140" />
+        </layout_panel>
+        <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="25"
+         layout="topleft"
+         min_height="25"
+         width="140"
+         name="end_call_btn_panel"
+         user_resize="false"
+         visible="false">
+            <button
+             follows="left|top|right"
+             height="23"
+             label="End Call"
+             name="end_call_btn"
+             width="140" />
+        </layout_panel>
+        <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="25"
+         layout="topleft"
+         min_height="25"
+         width="140"
+         name="block_btn_panel"
+         user_resize="false">
+            <button
+             follows="left|top|right"
+             height="23"
+             label="Block"
+             name="block_btn"
+             width="140" />
+        </layout_panel>
+        <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="25"
+         layout="topleft"
+         min_height="25"
+         width="140"
+         name="unblock_btn_panel"
+         user_resize="false"
+         visible="false">
+            <button
+             follows="left|top|right"
+             height="23"
+             label="Unblock"
+             name="unblock_btn"
+             width="140" />
+        </layout_panel>
+        <layout_panel
+         auto_resize="false"
+         follows="top|left|right"
+         height="25"
+         layout="topleft"
+         min_height="54"
+         width="140"
+         name="volume_ctrl_panel"
+         visible="false" 
+         user_resize="false">
+            <slider
+             follows="top|left"
+             height="23"
+             increment="0.01"
+             left="0"
+             max_val="0.95"
+             min_val="0.05"
+             name="volume_slider"
+             show_text="false"
+             tool_tip="Call Volume"
+             top_pad="32"
+             value="0.5"
+             width="125" />
+            <button
+             follows="top|left"
+             height="16"
+             image_disabled="Audio_Off"
+             image_disabled_selected="AudioMute_Off"
+             image_hover_selected="AudioMute_Over"
+             image_selected="AudioMute_Off"
+             image_unselected="Audio_Off"
+             is_toggle="true"
+             left_pad="0"
+             top_delta="4"
+             name="mute_btn"
+             width="16" />
+        </layout_panel>
+        <layout_panel
+         mouse_opaque="false"
+         auto_resize="true"
+         follows="top|left"
+         height="0"
+         layout="topleft"
+         min_height="0"
+         width="140"
+         name="spacer"
+         user_resize="false" />
     </layout_stack>
 </panel>
diff --git a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
index fe06a2d816..ba148cf421 100644
--- a/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
+++ b/indra/newview/skins/minimal/xui/en/widgets/location_input.xml
@@ -113,6 +113,14 @@
 	  font="SansSerifSmall"
 	  text_color="TextFgColor"
 	/>
+  <see_avatars_icon
+    name="see_avatars_icon"
+    width="0"
+    height="0"
+    visible="false" 
+    top="21"
+    follows="right|top"
+    />
   <combo_button
 		name="Location History"
                 label=""
-- 
cgit v1.2.3


From 825e4a5399b3da8d33b4c819cce10f2b66736ca6 Mon Sep 17 00:00:00 2001
From: eli_linden <none@none>
Date: Tue, 12 Jul 2011 12:22:07 -0700
Subject: FIX STORM-1494 remove duplicate ID and xml snippet

---
 indra/newview/skins/default/xui/en/menu_viewer.xml | 12 ------------
 1 file changed, 12 deletions(-)

diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index e00586811b..317c6fe9ac 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2931,18 +2931,6 @@
                  function="Floater.Toggle"
                  parameter="region_debug_console" />
             </menu_item_check>
-            <menu_item_check
-             label="Region Debug Console"
-             name="Region Debug Console"
-             shortcut="control|shift|`"
-             use_mac_ctrl="true">
-                <menu_item_check.on_check
-                 function="Floater.Visible"
-                 parameter="region_debug_console" />
-                <menu_item_check.on_click
-                 function="Floater.Toggle"
-                 parameter="region_debug_console" />
-            </menu_item_check>
             <menu_item_separator />
 
             <menu_item_check
-- 
cgit v1.2.3


From 42daa3497b6626cbb5f32ba54162558cd025069b Mon Sep 17 00:00:00 2001
From: Aaron Stone <stone@lindenlab.com>
Date: Tue, 12 Jul 2011 15:48:02 -0700
Subject: STORM-1482 The Viewer shouldn't overwrite the crash behavior
 settings, some cleanups to the crash reporters, and the ability to use --set
 GroupName.SettingName to set parameters outside of the (default) Global
 settings group.

---
 indra/linux_crash_logger/linux_crash_logger.cpp    | 14 +++-
 indra/linux_crash_logger/llcrashloggerlinux.cpp    |  2 -
 indra/llcommon/indra_constants.h                   |  2 -
 indra/llcrashlogger/llcrashlogger.cpp              | 80 ++++++++++++---------
 indra/llcrashlogger/llcrashlogger.h                | 11 ---
 .../mac_crash_logger/CrashReporter.nib/objects.xib |  2 +-
 indra/mac_crash_logger/llcrashloggermac.cpp        |  5 +-
 indra/mac_crash_logger/mac_crash_logger.cpp        | 15 ++--
 indra/newview/app_settings/cmd_line.xml            | 13 +---
 indra/newview/app_settings/settings_files.xml      |  5 +-
 indra/newview/llappviewer.cpp                      | 81 ++++++++++------------
 indra/newview/llappviewerlinux.cpp                 |  2 +-
 indra/newview/llappviewerwin32.cpp                 |  2 +-
 indra/newview/llfloaterpreference.cpp              |  5 +-
 indra/newview/llviewercontrol.cpp                  |  4 +-
 .../default/xui/en/panel_preferences_setup.xml     |  2 +-
 indra/win_crash_logger/llcrashloggerwindows.cpp    |  5 +-
 indra/win_crash_logger/llcrashloggerwindows.h      |  1 -
 indra/win_crash_logger/win_crash_logger.cpp        | 35 ++--------
 19 files changed, 125 insertions(+), 161 deletions(-)

diff --git a/indra/linux_crash_logger/linux_crash_logger.cpp b/indra/linux_crash_logger/linux_crash_logger.cpp
index 8beae555fb..99d0ad7e14 100644
--- a/indra/linux_crash_logger/linux_crash_logger.cpp
+++ b/indra/linux_crash_logger/linux_crash_logger.cpp
@@ -24,16 +24,24 @@
  * $/LicenseInfo$
  */
 
+#include "linden_common.h"
 #include "llcrashloggerlinux.h"
 
 int main(int argc, char **argv)
 {
+	llinfos << "Starting crash reporter." << llendl;
+
 	LLCrashLoggerLinux app;
 	app.parseCommandOptions(argc, argv);
-	app.init();
+
+	if (! app.init())
+	{
+		llwarns << "Unable to initialize application." << llendl;
+		return 1;
+	}
+
 	app.mainLoop();
 	app.cleanup();
+	llinfos << "Crash reporter finished normally." << llendl;
 	return 0;
 }
-
-
diff --git a/indra/linux_crash_logger/llcrashloggerlinux.cpp b/indra/linux_crash_logger/llcrashloggerlinux.cpp
index 7449c6426f..7316717193 100644
--- a/indra/linux_crash_logger/llcrashloggerlinux.cpp
+++ b/indra/linux_crash_logger/llcrashloggerlinux.cpp
@@ -30,8 +30,6 @@
 
 #include "linden_common.h"
 
-#include "boost/tokenizer.hpp"
-
 #include "indra_constants.h"	// CRASH_BEHAVIOR_ASK, CRASH_SETTING_NAME
 #include "llerror.h"
 #include "llfile.h"
diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h
index d0f287657e..0745696ef3 100644
--- a/indra/llcommon/indra_constants.h
+++ b/indra/llcommon/indra_constants.h
@@ -387,8 +387,6 @@ const S32 MAP_SIM_RETURN_NULL_SIMS 	= 0x00010000;
 const S32 MAP_SIM_PRELUDE 			= 0x00020000;
 
 // Crash reporter behavior
-const char* const CRASH_SETTINGS_FILE = "settings_crash_behavior.xml";
-const char* const CRASH_BEHAVIOR_SETTING = "CrashSubmitBehavior";
 const S32 CRASH_BEHAVIOR_ASK = 0;
 const S32 CRASH_BEHAVIOR_ALWAYS_SEND = 1;
 const S32 CRASH_BEHAVIOR_NEVER_SEND = 2;
diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp
index 68e45f36e4..3fbaf61991 100644
--- a/indra/llcrashlogger/llcrashlogger.cpp
+++ b/indra/llcrashlogger/llcrashlogger.cpp
@@ -31,10 +31,12 @@
 #include "llcrashlogger.h"
 #include "linden_common.h"
 #include "llstring.h"
-#include "indra_constants.h"	// CRASH_BEHAVIOR_ASK, CRASH_SETTING_NAME
+#include "indra_constants.h"	// CRASH_BEHAVIOR_...
 #include "llerror.h"
+#include "llerrorcontrol.h"
 #include "lltimer.h"
 #include "lldir.h"
+#include "llfile.h"
 #include "llsdserialize.h"
 #include "lliopipe.h"
 #include "llpumpio.h"
@@ -54,7 +56,7 @@ public:
 
 	virtual void error(U32 status, const std::string& reason)
 	{
-		gBreak = true;		
+		gBreak = true;
 	}
 
 	virtual void result(const LLSD& content)
@@ -64,19 +66,6 @@ public:
 	}
 };
 
-bool LLCrashLoggerText::mainLoop()
-{
-	std::cout << "Entering main loop" << std::endl;
-	sendCrashLogs();
-	return true;	
-}
-
-void LLCrashLoggerText::updateApplication(const std::string& message)
-{
-	LLCrashLogger::updateApplication(message);
-	std::cout << message << std::endl;
-}
-
 LLCrashLogger::LLCrashLogger() :
 	mCrashBehavior(CRASH_BEHAVIOR_ASK),
 	mCrashInPreviousExec(false),
@@ -281,26 +270,41 @@ LLSD LLCrashLogger::constructPostData()
 	return mCrashInfo;
 }
 
+const char* const CRASH_SETTINGS_FILE = "settings_crash_behavior.xml";
+
 S32 LLCrashLogger::loadCrashBehaviorSetting()
 {
 	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
 
 	mCrashSettings.loadFromFile(filename);
-		
-	S32 value = mCrashSettings.getS32(CRASH_BEHAVIOR_SETTING);
-	
-	if (value < CRASH_BEHAVIOR_ASK || CRASH_BEHAVIOR_NEVER_SEND < value) return CRASH_BEHAVIOR_ASK;
 
-	return value;
+	S32 value = mCrashSettings.getS32("CrashSubmitBehavior");
+
+	switch (value)
+	{
+	case CRASH_BEHAVIOR_NEVER_SEND:
+		return CRASH_BEHAVIOR_NEVER_SEND;
+	case CRASH_BEHAVIOR_ALWAYS_SEND:
+		return CRASH_BEHAVIOR_ALWAYS_SEND;
+	}
+
+	return CRASH_BEHAVIOR_ASK;
 }
 
 bool LLCrashLogger::saveCrashBehaviorSetting(S32 crash_behavior)
 {
-	if (crash_behavior != CRASH_BEHAVIOR_ASK && crash_behavior != CRASH_BEHAVIOR_ALWAYS_SEND) return false;
+	switch (crash_behavior)
+	{
+	case CRASH_BEHAVIOR_ASK:
+	case CRASH_BEHAVIOR_NEVER_SEND:
+	case CRASH_BEHAVIOR_ALWAYS_SEND:
+		break;
+	default:
+		return false;
+	}
 
-	mCrashSettings.setS32(CRASH_BEHAVIOR_SETTING, crash_behavior);
+	mCrashSettings.setS32("CrashSubmitBehavior", crash_behavior);
 	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
-
 	mCrashSettings.saveToFile(filename, FALSE);
 
 	return true;
@@ -309,14 +313,13 @@ bool LLCrashLogger::saveCrashBehaviorSetting(S32 crash_behavior)
 bool LLCrashLogger::runCrashLogPost(std::string host, LLSD data, std::string msg, int retries, int timeout)
 {
 	gBreak = false;
-	std::string status_message;
 	for(int i = 0; i < retries; ++i)
 	{
-		status_message = llformat("%s, try %d...", msg.c_str(), i+1);
+		updateApplication(llformat("%s, try %d...", msg.c_str(), i+1));
 		LLHTTPClient::post(host, data, new LLCrashLoggerResponder(), timeout);
 		while(!gBreak)
 		{
-			updateApplication(status_message);
+			updateApplication(); // No new message, just pump the IO
 		}
 		if(gSent)
 		{
@@ -336,7 +339,7 @@ bool LLCrashLogger::sendCrashLogs()
 	updateApplication("Sending reports...");
 
 	std::string dump_path = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,
-															   "SecondLifeCrashReport");
+														   "SecondLifeCrashReport");
 	std::string report_file = dump_path + ".log";
 
 	std::ofstream out_file(report_file.c_str());
@@ -365,6 +368,7 @@ void LLCrashLogger::updateApplication(const std::string& message)
 {
 	gServicePump->pump();
     gServicePump->callback();
+	if (!message.empty()) llinfos << message << llendl;
 }
 
 bool LLCrashLogger::init()
@@ -374,11 +378,24 @@ bool LLCrashLogger::init()
 	// We assume that all the logs we're looking for reside on the current drive
 	gDirUtilp->initAppDirs("SecondLife");
 
+	LLError::initForApplication(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, ""));
+
 	// Default to the product name "Second Life" (this is overridden by the -name argument)
 	mProductName = "Second Life";
+
+	// Rename current log file to ".old"
+	std::string old_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "crashreport.log.old");
+	std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "crashreport.log");
+	LLFile::rename(log_file.c_str(), old_log_file.c_str());
+
+	// Set the log file to crashreport.log
+	LLError::logToFile(log_file);
 	
-	mCrashSettings.declareS32(CRASH_BEHAVIOR_SETTING, CRASH_BEHAVIOR_ASK, "Controls behavior when viewer crashes "
-		"(0 = ask before sending crash report, 1 = always send crash report, 2 = never send crash report)");
+	mCrashSettings.declareS32("CrashSubmitBehavior", CRASH_BEHAVIOR_ASK,
+							  "Controls behavior when viewer crashes "
+							  "(0 = ask before sending crash report, "
+							  "1 = always send crash report, "
+							  "2 = never send crash report)");
 
 	llinfos << "Loading crash behavior setting" << llendl;
 	mCrashBehavior = loadCrashBehaviorSetting();
@@ -394,10 +411,11 @@ bool LLCrashLogger::init()
 	gServicePump->prime(gAPRPoolp);
 	LLHTTPClient::setPump(*gServicePump);
 
-	//If we've opened the crash logger, assume we can delete the marker file if it exists	
+	//If we've opened the crash logger, assume we can delete the marker file if it exists
 	if( gDirUtilp )
 	{
-		std::string marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"SecondLife.exec_marker");
+		std::string marker_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,
+																 "SecondLife.exec_marker");
 		LLAPRFile::remove( marker_file );
 	}
 	
diff --git a/indra/llcrashlogger/llcrashlogger.h b/indra/llcrashlogger/llcrashlogger.h
index a5daa74247..5d0cb5931c 100644
--- a/indra/llcrashlogger/llcrashlogger.h
+++ b/indra/llcrashlogger/llcrashlogger.h
@@ -66,15 +66,4 @@ protected:
 	bool mSentCrashLogs;
 };
 
-class LLCrashLoggerText : public LLCrashLogger
-{
-public:
-	LLCrashLoggerText(void) {}
-	~LLCrashLoggerText(void) {}
-
-	virtual bool mainLoop();
-	virtual void updateApplication(const std::string& message = LLStringUtil::null);
-};
-
-
 #endif //LLCRASHLOGGER_H
diff --git a/indra/mac_crash_logger/CrashReporter.nib/objects.xib b/indra/mac_crash_logger/CrashReporter.nib/objects.xib
index 634d1c5321..32647391b6 100644
--- a/indra/mac_crash_logger/CrashReporter.nib/objects.xib
+++ b/indra/mac_crash_logger/CrashReporter.nib/objects.xib
@@ -15,7 +15,7 @@
       <string name="bounds">414 390 434 487 </string>
     </object>
     <object class="IBCarbonStaticText" id="181">
-      <string name="title">Second Life appears to have crashed or frozen the last time it ran.&#10;&#10;This crash reporter collects information about your computer&apos;s hardware configuration, operating system, and some Second Life logs, all of which are used for debugging purposes only.&#10;&#10;In the space below, please briefly describe what you were doing or trying to do just prior to the crash. Thank you for your help!&#10;&#10;This report is NOT read by Customer Support. If you have billing or other questions, please go to: http://www.secondlife.com/support/&#10;&#10;If you don&apos;t wish to send Linden Lab a crash report, press Cancel.&#10;</string>
+      <string name="title">Second Life appears to have crashed or frozen the last time it ran.&#10;&#10;This crash reporter collects information about your computer&apos;s hardware configuration, operating system, and some Second Life logs, all of which are used for debugging purposes only.&#10;&#10;In the space below, please briefly describe what you were doing or trying to do just prior to the crash. Thank you for your help!&#10;&#10;This report is NOT read by Customer Support. If you have billing or other questions, please go to: http://www.secondlife.com/support/&#10;&#10;If you don&apos;t wish to send Linden Lab a crash report, press Don&apos;t Send.&#10;</string>
       <string name="bounds">20 20 231 487 </string>
     </object>
     <object class="IBCarbonWindow" id="166">
diff --git a/indra/mac_crash_logger/llcrashloggermac.cpp b/indra/mac_crash_logger/llcrashloggermac.cpp
index bec8cce04e..b555e92b96 100644
--- a/indra/mac_crash_logger/llcrashloggermac.cpp
+++ b/indra/mac_crash_logger/llcrashloggermac.cpp
@@ -29,9 +29,6 @@
 
 #include <Carbon/Carbon.h>
 #include <iostream>
-#include <sstream>
-
-#include "boost/tokenizer.hpp"
 
 #include "indra_constants.h"	// CRASH_BEHAVIOR_ASK, CRASH_SETTING_NAME
 #include "llerror.h"
@@ -247,7 +244,7 @@ bool LLCrashLoggerMac::mainLoop()
 
 void LLCrashLoggerMac::updateApplication(const std::string& message)
 {
-	LLCrashLogger::updateApplication();
+	LLCrashLogger::updateApplication(message);
 }
 
 bool LLCrashLoggerMac::cleanup()
diff --git a/indra/mac_crash_logger/mac_crash_logger.cpp b/indra/mac_crash_logger/mac_crash_logger.cpp
index 20b491c401..6571b35241 100644
--- a/indra/mac_crash_logger/mac_crash_logger.cpp
+++ b/indra/mac_crash_logger/mac_crash_logger.cpp
@@ -25,22 +25,23 @@
  */
 
 #include "linden_common.h"
-
 #include "llcrashloggermac.h"
 
 int main(int argc, char **argv)
 {
-	//time(&gLaunchTime);
-	
-	llinfos << "Starting Second Life Viewer Crash Reporter" << llendl;
+	llinfos << "Starting crash reporter." << llendl;
 
 	LLCrashLoggerMac app;
 	app.parseCommandOptions(argc, argv);
-	if(!app.init())
+
+	if (! app.init())
 	{
-		return 0;
+		llwarns << "Unable to initialize application." << llendl;
+		return 1;
 	}
+
 	app.mainLoop();
-		
+	app.cleanup();
+	llinfos << "Crash reporter finished normally." << llendl;
 	return 0;
 }
diff --git a/indra/newview/app_settings/cmd_line.xml b/indra/newview/app_settings/cmd_line.xml
index 89e5949fbe..15434f2b8f 100644
--- a/indra/newview/app_settings/cmd_line.xml
+++ b/indra/newview/app_settings/cmd_line.xml
@@ -220,8 +220,7 @@
     <map>
       <key>desc</key>
       <string>Set the detail level. 
-              0 - low, 1 - medium, 2 - high, 3 - ultra
-       </string>
+0 - low, 1 - medium, 2 - high, 3 - ultra</string>
       <key>count</key>
       <integer>1</integer>
     </map>
@@ -229,10 +228,7 @@
     <key>setdefault</key>
     <map>
       <key>desc</key>
-      <string> specify the value of a particular
-               configuration variable which can be
-               overridden by settings.xml
-      </string>
+      <string>specify the value of a particular configuration variable which can be overridden by settings.xml.</string>
       <key>count</key>
       <integer>2</integer>
       <!-- Special case. Mapped to settings procedurally. -->
@@ -241,10 +237,7 @@
     <key>set</key>
     <map>
       <key>desc</key>
-      <string> specify the value of a particular
-               configuration variable that
-               overrides all other settings
-      </string>
+      <string>specify the value of a particular configuration variable that overrides all other settings.</string>
       <key>count</key>
       <integer>2</integer>
       <key>compose</key>
diff --git a/indra/newview/app_settings/settings_files.xml b/indra/newview/app_settings/settings_files.xml
index 079a54f957..bfc09286e3 100644
--- a/indra/newview/app_settings/settings_files.xml
+++ b/indra/newview/app_settings/settings_files.xml
@@ -20,7 +20,8 @@
           file_name="settings.xml"
           file_name_setting="ClientSettingsFile"/>
     <file name="CrashSettings"
-          file_name="settings_crash_behavior"/>
+          file_name="settings_crash_behavior.xml"
+          file_name_setting="CrashSettingsFile"/>
     <file name="Warnings"
           file_name="ignorable_dialogs.xml"
           file_name_setting="WarningSettingsFile"/>
@@ -61,4 +62,4 @@
           file_name="colors.xml"
           file_name_setting="SkinningSettingsFile"/>
   </group>
-</settings_files>
\ No newline at end of file
+</settings_files>
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 1d9519d675..1ce92c689d 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -468,18 +468,6 @@ void request_initial_instant_messages()
 	}
 }
 
-// A settings system callback for CrashSubmitBehavior
-bool handleCrashSubmitBehaviorChanged(const LLSD& newvalue)
-{
-	S32 cb = newvalue.asInteger();
-	const S32 NEVER_SUBMIT_REPORT = 2;
-	if(cb == NEVER_SUBMIT_REPORT)
-	{
-		LLAppViewer::instance()->destroyMainloopTimeout();
-	}
-	return true;
-}
-
 // Use these strictly for things that are constructed at startup,
 // or for things that are performance critical.  JC
 static void settings_to_globals()
@@ -611,9 +599,6 @@ bool LLAppViewer::sendURLToOtherInstance(const std::string& url)
 // Static members.
 // The single viewer app.
 LLAppViewer* LLAppViewer::sInstance = NULL;
-
-const std::string LLAppViewer::sGlobalSettingsName = "Global"; 
-
 LLTextureCache* LLAppViewer::sTextureCache = NULL; 
 LLImageDecodeThread* LLAppViewer::sImageDecodeThread = NULL; 
 LLTextureFetch* LLAppViewer::sTextureFetch = NULL; 
@@ -771,16 +756,6 @@ bool LLAppViewer::init()
 	LL_INFOS("InitInfo") << "J2C Engine is: " << LLImageJ2C::getEngineInfo() << LL_ENDL;
 	LL_INFOS("InitInfo") << "libcurl version is: " << LLCurl::getVersionString() << LL_ENDL;
 
-	// Get the single value from the crash settings file, if it exists
-	std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
-	gCrashSettings.loadFromFile(crash_settings_filename);
-	if(gSavedSettings.getBOOL("IgnoreAllNotifications"))
-	{
-		gCrashSettings.setS32(CRASH_BEHAVIOR_SETTING, CRASH_BEHAVIOR_ALWAYS_SEND);
-		gCrashSettings.saveToFile(crash_settings_filename, FALSE);
-	}
-	LL_INFOS("InitInfo") << "Crash settings done." << LL_ENDL ;
-
 	/////////////////////////////////////////////////
 	// OS-specific login dialogs
 	/////////////////////////////////////////////////
@@ -1055,7 +1030,7 @@ bool LLAppViewer::init()
 	//EXT-7013 - On windows for some locale (Japanese) standard 
 	//datetime formatting functions didn't support some parameters such as "weekday".
 	//Names for days and months localized in xml are also useful for Polish locale(STORM-107).
-	std::string language = LLControlGroup::getInstance(sGlobalSettingsName)->getString("Language");
+	std::string language = gSavedSettings.getString("Language");
 	if(language == "ja" || language == "pl")
 	{
 		LLStringOps::setupWeekDaysNames(LLTrans::getString("dateTimeWeekdaysNames"));
@@ -1706,10 +1681,6 @@ bool LLAppViewer::cleanup()
 		llinfos << "Saved settings" << llendflush;
 	}
 
-	std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
-	// save all settings, even if equals defaults
-	gCrashSettings.saveToFile(crash_settings_filename, FALSE);
-
 	std::string warnings_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, getSettingsFilename("Default", "Warnings"));
 	gWarningSettings.saveToFile(warnings_settings_filename, TRUE);
 
@@ -1839,7 +1810,6 @@ bool LLAppViewer::cleanup()
 	
 	gSavedSettings.cleanup();
 	LLUIColorTable::instance().clear();
-	gCrashSettings.cleanup();
 
 	LLWatchdog::getInstance()->cleanup();
 
@@ -1982,7 +1952,6 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
 		llerrs << "Invalid settings location list" << llendl;
 	}
 
-	LLControlGroup* global_settings = LLControlGroup::getInstance(sGlobalSettingsName);  
 	for(LLInitParam::ParamIterator<SettingsGroup>::const_iterator it = mSettingsLocationList->groups.begin(), end_it = mSettingsLocationList->groups.end();
 		it != end_it;
 		++it)
@@ -2015,11 +1984,15 @@ bool LLAppViewer::loadSettingsFromDirectory(const std::string& location_key,
 			std::string full_settings_path;
 
 			if (file_it->file_name_setting.isProvided() 
-				&& global_settings->controlExists(file_it->file_name_setting))
+				&& gSavedSettings.controlExists(file_it->file_name_setting))
 			{
 				// try to find filename stored in file_name_setting control
-				full_settings_path = global_settings->getString(file_it->file_name_setting);
-				if (!gDirUtilp->fileExists(full_settings_path))
+				full_settings_path = gSavedSettings.getString(file_it->file_name_setting);
+				if (full_settings_path.empty())
+				{
+					continue;
+				}
+				else if (!gDirUtilp->fileExists(full_settings_path))
 				{
 					// search in default path
 					full_settings_path = gDirUtilp->getExpandedFilename((ELLPath)path_index, full_settings_path);
@@ -2165,8 +2138,6 @@ bool LLAppViewer::initConfiguration()
 	gSavedSettings.setS32("WatchdogEnabled", 0);
 #endif
 	
-	gCrashSettings.getControl(CRASH_BEHAVIOR_SETTING)->getSignal()->connect(boost::bind(&handleCrashSubmitBehaviorChanged, _2));	
-
 	// These are warnings that appear on the first experience of that condition.
 	// They are already set in the settings_default.xml file, but still need to be added to LLFirstUse
 	// for disable/reset ability
@@ -2297,15 +2268,33 @@ bool LLAppViewer::initConfiguration()
             {
                 const std::string& name = *itr;
                 const std::string& value = *(++itr);
-				LLControlVariable* c = LLControlGroup::getInstance(sGlobalSettingsName)->getControl(name);
-                if(c)
+                std::string name_part;
+                std::string group_part;
+				LLControlVariable* control = NULL;
+
+				// Name can be further split into ControlGroup.Name, with the default control group being Global
+				size_t pos = name.find('.');
+				if (pos != std::string::npos)
+				{
+					group_part = name.substr(0, pos);
+					name_part = name.substr(pos+1);
+					llinfos << "Setting " << group_part << "." << name_part << " to " << value << llendl;
+					LLControlGroup* g = LLControlGroup::getInstance(group_part);
+					if (g) control = g->getControl(name_part);
+				}
+				else
+				{
+					llinfos << "Setting Global." << name << " to " << value << llendl;
+					control = gSavedSettings.getControl(name);
+				}
+
+                if (control)
                 {
-                    c->setValue(value, false);
+                    control->setValue(value, false);
                 }
                 else
                 {
-                    llwarns << "'--set' specified with unknown setting: '"
-                        << name << "'." << llendl;
+					llwarns << "Failed --set " << name << ": setting name unknown." << llendl;
                 }
             }
         }
@@ -2762,7 +2751,8 @@ void LLAppViewer::checkForCrash(void)
         // Pop up a freeze or crash warning dialog
         //
         S32 choice;
-        if(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING) == CRASH_BEHAVIOR_ASK)
+	const S32 cb = gCrashSettings.getS32("CrashSubmitBehavior");
+        if(cb == CRASH_BEHAVIOR_ASK)
         {
             std::ostringstream msg;
 			msg << LLTrans::getString("MBFrozenCrashed");
@@ -2771,7 +2761,7 @@ void LLAppViewer::checkForCrash(void)
                                   alert,
                                   OSMB_YESNO);
         } 
-        else if(gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING) == CRASH_BEHAVIOR_NEVER_SEND)
+        else if(cb == CRASH_BEHAVIOR_NEVER_SEND)
         {
             choice = OSBTN_NO;
         }
@@ -2828,7 +2818,6 @@ bool LLAppViewer::initWindow()
 	LL_INFOS("AppInit") << "gViewerwindow created." << LL_ENDL;
 
 	// Need to load feature table before cheking to start watchdog.
-	const S32 NEVER_SUBMIT_REPORT = 2;
 	bool use_watchdog = false;
 	int watchdog_enabled_setting = gSavedSettings.getS32("WatchdogEnabled");
 	if(watchdog_enabled_setting == -1)
@@ -2841,7 +2830,7 @@ bool LLAppViewer::initWindow()
 		use_watchdog = bool(watchdog_enabled_setting);
 	}
 
-	bool send_reports = gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING) != NEVER_SUBMIT_REPORT;
+	bool send_reports = gCrashSettings.getS32("CrashSubmitBehavior") != CRASH_BEHAVIOR_NEVER_SEND;
 	if(use_watchdog && send_reports)
 	{
 		LLWatchdog::getInstance()->init(watchdog_killer_callback);
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
index 714e0e6163..08d4f49147 100644
--- a/indra/newview/llappviewerlinux.cpp
+++ b/indra/newview/llappviewerlinux.cpp
@@ -361,7 +361,7 @@ void LLAppViewerLinux::handleCrashReporting(bool reportFreeze)
 	}
 	else
 	{
-		const S32 cb = gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING);
+		const S32 cb = gCrashSettings.getS32("CrashSubmitBehavior");
 
 		// Always generate the report, have the logger do the asking, and
 		// don't wait for the logger before exiting (-> total cleanup).
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index 445bd208ef..9280234ac3 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -518,7 +518,7 @@ void LLAppViewerWin32::handleCrashReporting(bool reportFreeze)
 	}
 	else
 	{
-		S32 cb = gCrashSettings.getS32(CRASH_BEHAVIOR_SETTING);
+		S32 cb = gCrashSettings.getS32("CrashSubmitBehavior");
 		if(cb != CRASH_BEHAVIOR_NEVER_SEND)
 		{
 			_spawnl(_P_NOWAIT, exe_path.c_str(), arg_str, NULL);
diff --git a/indra/newview/llfloaterpreference.cpp b/indra/newview/llfloaterpreference.cpp
index 7848484ac6..5fd262a720 100755
--- a/indra/newview/llfloaterpreference.cpp
+++ b/indra/newview/llfloaterpreference.cpp
@@ -751,10 +751,7 @@ void LLFloaterPreference::onBtnOK()
 		closeFloater(false);
 
 		LLUIColorTable::instance().saveUserSettings();
-		gSavedSettings.saveToFile( gSavedSettings.getString("ClientSettingsFile"), TRUE );
-		std::string crash_settings_filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
-		// save all settings, even if equals defaults
-		gCrashSettings.saveToFile(crash_settings_filename, FALSE);
+		gSavedSettings.saveToFile(gSavedSettings.getString("ClientSettingsFile"), TRUE);
 	}
 	else
 	{
diff --git a/indra/newview/llviewercontrol.cpp b/indra/newview/llviewercontrol.cpp
index 87ca80260f..b87ca1eaec 100644
--- a/indra/newview/llviewercontrol.cpp
+++ b/indra/newview/llviewercontrol.cpp
@@ -566,7 +566,7 @@ bool toggle_show_object_render_cost(const LLSD& newvalue)
 	return true;
 }
 
-void toggle_updater_service_active(LLControlVariable* control, const LLSD& new_value)
+void toggle_updater_service_active(const LLSD& new_value)
 {
     if(new_value.asInteger())
     {
@@ -735,7 +735,7 @@ void settings_setup_listeners()
 	gSavedSettings.getControl("ShowNavbarFavoritesPanel")->getSignal()->connect(boost::bind(&toggle_show_favorites_panel, _2));
 	gSavedSettings.getControl("ShowMiniLocationPanel")->getSignal()->connect(boost::bind(&toggle_show_mini_location_panel, _2));
 	gSavedSettings.getControl("ShowObjectRenderingCost")->getSignal()->connect(boost::bind(&toggle_show_object_render_cost, _2));
-	gSavedSettings.getControl("UpdaterServiceSetting")->getSignal()->connect(&toggle_updater_service_active);
+	gSavedSettings.getControl("UpdaterServiceSetting")->getSignal()->connect(boost::bind(&toggle_updater_service_active, _2));
 	gSavedSettings.getControl("ForceShowGrid")->getSignal()->connect(boost::bind(&handleForceShowGrid, _2));
 	gSavedSettings.getControl("RenderTransparentWater")->getSignal()->connect(boost::bind(&handleRenderTransparentWaterChanged, _2));
 }
diff --git a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
index 1c22a5c02e..e639f0dc9d 100644
--- a/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/en/panel_preferences_setup.xml
@@ -268,7 +268,7 @@
      height="23"
      layout="topleft"
      left_delta="50"
-	 top_pad="5"
+     top_pad="5"
      name="updater_service_combobox"
      width="300">
         <combo_box.item
diff --git a/indra/win_crash_logger/llcrashloggerwindows.cpp b/indra/win_crash_logger/llcrashloggerwindows.cpp
index 51ff754c27..5e8725989c 100644
--- a/indra/win_crash_logger/llcrashloggerwindows.cpp
+++ b/indra/win_crash_logger/llcrashloggerwindows.cpp
@@ -354,7 +354,7 @@ bool LLCrashLoggerWindows::mainLoop()
 
 void LLCrashLoggerWindows::updateApplication(const std::string& message)
 {
-	LLCrashLogger::updateApplication();
+	LLCrashLogger::updateApplication(message);
 	if(!message.empty()) show_progress(message);
 	update_messages();
 }
@@ -370,6 +370,3 @@ bool LLCrashLoggerWindows::cleanup()
 	PostQuitMessage(0);
 	return true;
 }
-
-
-
diff --git a/indra/win_crash_logger/llcrashloggerwindows.h b/indra/win_crash_logger/llcrashloggerwindows.h
index 24c564457c..5c45a998b3 100644
--- a/indra/win_crash_logger/llcrashloggerwindows.h
+++ b/indra/win_crash_logger/llcrashloggerwindows.h
@@ -41,7 +41,6 @@ public:
 	virtual void updateApplication(const std::string& message = LLStringUtil::null);
 	virtual bool cleanup();
 	virtual void gatherPlatformSpecificFiles();
-	//void annotateCallStack();
 	void setHandle(HINSTANCE hInst) { mhInst = hInst; }
 private:
 	void ProcessDlgItemText(HWND hWnd, int nIDDlgItem);
diff --git a/indra/win_crash_logger/win_crash_logger.cpp b/indra/win_crash_logger/win_crash_logger.cpp
index 5c22053317..8e916ae437 100644
--- a/indra/win_crash_logger/win_crash_logger.cpp
+++ b/indra/win_crash_logger/win_crash_logger.cpp
@@ -24,51 +24,30 @@
  * $/LicenseInfo$
  */
 
-// win_crash_logger.cpp : Defines the entry point for the application.
-//
-
-// Must be first include, precompiled headers.
 #include "linden_common.h"
-
 #include "stdafx.h"
-
 #include <stdlib.h>
-
 #include "llcrashloggerwindows.h"
 
-
-
-//
-// Implementation
-//
-
 int APIENTRY WinMain(HINSTANCE hInstance,
                      HINSTANCE hPrevInstance,
                      LPSTR     lpCmdLine,
                      int       nCmdShow)
 {
-	llinfos << "Starting crash reporter" << llendl;
+	llinfos << "Starting crash reporter." << llendl;
 
 	LLCrashLoggerWindows app;
 	app.setHandle(hInstance);
-	bool ok = app.init();
-	if(!ok)
+	app.parseCommandOptions(__argc, __argv);
+
+	if (! app.init())
 	{
 		llwarns << "Unable to initialize application." << llendl;
 		return -1;
 	}
 
-		// Run the application main loop
-	if(!LLApp::isQuitting()) app.mainLoop();
-
-	if (!app.isError())
-	{
-		//
-		// We don't want to do cleanup here if the error handler got called -
-		// the assumption is that the error handler is responsible for doing
-		// app cleanup if there was a problem.
-		//
-		app.cleanup();
-	}
+	app.mainLoop();
+	app.cleanup();
+	llinfos << "Crash reporter finished normally." << llendl;
 	return 0;
 }
-- 
cgit v1.2.3


From ed648b1f08a191250c5c37f831280c31950b502a Mon Sep 17 00:00:00 2001
From: Nat Goodspeed <nat@lindenlab.com>
Date: Tue, 12 Jul 2011 20:14:39 -0400
Subject: CHOP-753: Eliminate redundant array-of-pair-arrays in LLMemoryInfo.
 (per Monty code review) The notion of storing LLMemoryInfo data both as an
 LLSD::Map and an LLSD::Array of pair arrays arose from a (possibly misguided)
 desire to continue producing stats output into the viewer log in the same
 order it always used to be produced. There is no evidence that anyone cares
 about the order of those stats in the log; there is no other use case for
 preserving order. At Monty's recommendation, eliminate generating and storing
 the array-of-pair-arrays form: directly store LLSD::Map.

---
 indra/llcommon/llsys.cpp | 72 ++++++++++++++++--------------------------------
 indra/llcommon/llsys.h   | 24 ++++------------
 2 files changed, 30 insertions(+), 66 deletions(-)

diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp
index ebdef56c2a..99e61433c6 100644
--- a/indra/llcommon/llsys.cpp
+++ b/indra/llcommon/llsys.cpp
@@ -647,13 +647,13 @@ void LLCPUInfo::stream(std::ostream& s) const
 	s << "->mCPUString:  " << mCPUString << std::endl;
 }
 
-// Helper class for LLMemoryInfo: accumulate stats in the array-of-pair-arrays
-// form we store for LLMemoryInfo::getStatsArray().
-class StatsArray
+// Helper class for LLMemoryInfo: accumulate stats in the form we store for
+// LLMemoryInfo::getStatsMap().
+class Stats
 {
 public:
-	StatsArray():
-		mStats(LLSD::emptyArray())
+	Stats():
+		mStats(LLSD::emptyMap())
 	{}
 
 	// Store every integer type as LLSD::Integer.
@@ -661,7 +661,7 @@ public:
 	void add(const LLSD::String& name, const T& value,
 			 typename boost::enable_if<boost::is_integral<T> >::type* = 0)
 	{
-		mStats.append(LLSDArray(name)(LLSD::Integer(value)));
+		mStats[name] = LLSD::Integer(value);
 	}
 
 	// Store every floating-point type as LLSD::Real.
@@ -669,13 +669,13 @@ public:
 	void add(const LLSD::String& name, const T& value,
 			 typename boost::enable_if<boost::is_float<T> >::type* = 0)
 	{
-		mStats.append(LLSDArray(name)(LLSD::Real(value)));
+		mStats[name] = LLSD::Real(value);
 	}
 
 	// Hope that LLSD::Date values are sufficiently unambiguous.
 	void add(const LLSD::String& name, const LLSD::Date& value)
 	{
-		mStats.append(LLSDArray(name)(value));
+		mStats[name] = value;
 	}
 
 	LLSD get() const { return mStats; }
@@ -792,7 +792,7 @@ void LLMemoryInfo::getAvailableMemoryKB(U32& avail_physical_mem_kb, U32& avail_v
 #if LL_WINDOWS
 	// Sigh, this shouldn't be a static method, then we wouldn't have to
 	// reload this data separately from refresh()
-	LLSD statsMap(loadStatsMap(loadStatsArray()));
+	LLSD statsMap(loadStatsMap());
 
 	avail_physical_mem_kb = statsMap["Avail Physical KB"].asInteger();
 	avail_virtual_mem_kb  = statsMap["Avail Virtual KB"].asInteger();
@@ -884,16 +884,11 @@ void LLMemoryInfo::stream(std::ostream& s) const
 	// introducer line, then read subsequent lines, etc...
 	std::string pfx(LLError::utcTime() + " <mem> ");
 
-	// Most of the reason we even store mStatsArray is to preserve the
-	// original order in which we obtained these stats from the OS. So use
-	// mStatsArray in this method rather than mStatsMap, which should present
-	// the same information but in arbitrary order.
-
 	// Max key length
 	size_t key_width(0);
-	BOOST_FOREACH(LLSD pair, inArray(mStatsArray))
+	BOOST_FOREACH(const MapEntry& pair, inMap(mStatsMap))
 	{
-		size_t len(pair[0].asString().length());
+		size_t len(pair.first.length());
 		if (len > key_width)
 		{
 			key_width = len;
@@ -901,17 +896,18 @@ void LLMemoryInfo::stream(std::ostream& s) const
 	}
 
 	// Now stream stats
-	BOOST_FOREACH(LLSD pair, inArray(mStatsArray))
+	BOOST_FOREACH(const MapEntry& pair, inMap(mStatsMap))
 	{
-		s << pfx << std::setw(key_width+1) << (pair[0].asString() + ':') << ' ';
-		if (pair[1].isInteger())
-			s << std::setw(12) << pair[1].asInteger();
-		else if (pair[1].isReal())
-			s << std::fixed << std::setprecision(1) << pair[1].asReal();
-		else if (pair[1].isDate())
-			pair[1].asDate().toStream(s);
+		s << pfx << std::setw(key_width+1) << (pair.first + ':') << ' ';
+		LLSD value(pair.second);
+		if (value.isInteger())
+			s << std::setw(12) << value.asInteger();
+		else if (value.isReal())
+			s << std::fixed << std::setprecision(1) << value.asReal();
+		else if (value.isDate())
+			value.asDate().toStream(s);
 		else
-			s << pair[1];           // just use default LLSD formatting
+			s << value;           // just use default LLSD formatting
 		s << std::endl;
 	}
 }
@@ -921,16 +917,9 @@ LLSD LLMemoryInfo::getStatsMap() const
 	return mStatsMap;
 }
 
-LLSD LLMemoryInfo::getStatsArray() const
-{
-	return mStatsArray;
-}
-
 LLMemoryInfo& LLMemoryInfo::refresh()
 {
-	mStatsArray = loadStatsArray();
-	// Recast same data as mStatsMap for easy access
-	mStatsMap = loadStatsMap(mStatsArray);
+	mStatsMap = loadStatsMap();
 
 	LL_DEBUGS("LLMemoryInfo") << "Populated mStatsMap:\n";
 	LLSDSerialize::toPrettyXML(mStatsMap, LL_CONT);
@@ -939,10 +928,10 @@ LLMemoryInfo& LLMemoryInfo::refresh()
 	return *this;
 }
 
-LLSD LLMemoryInfo::loadStatsArray()
+LLSD LLMemoryInfo::loadStatsMap()
 {
 	// This implementation is derived from stream() code (as of 2011-06-29).
-	StatsArray stats;
+	Stats stats;
 
 	// associate timestamp for analysis over time
 	stats.add("timestamp", LLDate::now());
@@ -1274,19 +1263,6 @@ LLSD LLMemoryInfo::loadStatsArray()
 	return stats.get();
 }
 
-LLSD LLMemoryInfo::loadStatsMap(const LLSD& statsArray)
-{
-	LLSD statsMap;
-
-	BOOST_FOREACH(LLSD pair, inArray(statsArray))
-	{
-		// Specify asString() to disambiguate map indexing from array
-		// subscripting.
-		statsMap[pair[0].asString()] = pair[1];
-	}
-	return statsMap;
-}
-
 std::ostream& operator<<(std::ostream& s, const LLOSInfo& info)
 {
 	info.stream(s);
diff --git a/indra/llcommon/llsys.h b/indra/llcommon/llsys.h
index 7fcb050ed0..739e795d3a 100644
--- a/indra/llcommon/llsys.h
+++ b/indra/llcommon/llsys.h
@@ -120,35 +120,23 @@ public:
 	static void getAvailableMemoryKB(U32& avail_physical_mem_kb, U32& avail_virtual_mem_kb);
 
 	// Retrieve a map of memory statistics. The keys of the map are platform-
-	// dependent. The values are in kilobytes.
+	// dependent. The values are in kilobytes to try to avoid integer overflow.
 	LLSD getStatsMap() const;
 
-	// Retrieve memory statistics: an array of pair arrays [name, value]. This
-	// is the same data as presented in getStatsMap(), but it preserves the
-	// order in which we retrieved it from the OS in case that's useful. The
-	// set of statistics names is platform-dependent. The values are in
-	// kilobytes to try to avoid integer overflow.
-	LLSD getStatsArray() const;
-
-	// Re-fetch memory data (as reported by stream() and getStats*()) from the
+	// Re-fetch memory data (as reported by stream() and getStatsMap()) from the
 	// system. Normally this is fetched at construction time. Return (*this)
 	// to permit usage of the form:
 	// @code
 	// LLMemoryInfo info;
 	// ...
-	// info.refresh().getStatsArray();
+	// info.refresh().getStatsMap();
 	// @endcode
 	LLMemoryInfo& refresh();
 
 private:
-	// These methods are used to set mStatsArray and mStatsMap.
-	static LLSD loadStatsArray();
-	static LLSD loadStatsMap(const LLSD&);
-
-	// Memory stats for getStatsArray(). It's straightforward to convert that
-	// to getStatsMap() form, less so to reconstruct the original order when
-	// converting the other way.
-	LLSD mStatsArray;
+	// set mStatsMap
+	static LLSD loadStatsMap();
+
 	// Memory stats for getStatsMap().
 	LLSD mStatsMap;
 };
-- 
cgit v1.2.3


From a6a0d5dda70de972ca1e386534284e2e93f29903 Mon Sep 17 00:00:00 2001
From: "Brad Payne (Vir Linden)" <vir@lindenlab.com>
Date: Wed, 13 Jul 2011 13:55:04 -0400
Subject: SH-1637 FIX, SH-1638 FIX - fixes jittery camera problems

---
 indra/newview/llagent.cpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 indra/newview/llagent.cpp

diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp
old mode 100644
new mode 100755
index 8954937f69..492cfe7c1b
--- a/indra/newview/llagent.cpp
+++ b/indra/newview/llagent.cpp
@@ -577,7 +577,10 @@ void LLAgent::setFlying(BOOL fly)
 // static
 void LLAgent::toggleFlying()
 {
-	LLToolPie::instance().stopClickToWalk();
+	if ( gAgent.mAutoPilot )
+	{
+		LLToolPie::instance().stopClickToWalk();
+	}
 
 	BOOL fly = !gAgent.getFlying();
 
-- 
cgit v1.2.3


From dc0765fc3d04bcab9a89bdc8d703f74f09796119 Mon Sep 17 00:00:00 2001
From: "Debi King (Dessie)" <dessie@lindenlab.com>
Date: Thu, 14 Jul 2011 11:17:28 -0700
Subject: Added tag DRTVWR-66_2.7.4-release, 2.7.4-release for changeset
 057f319dd8ec

---
 .hgtags | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.hgtags b/.hgtags
index ba120eb2dd..226964835e 100644
--- a/.hgtags
+++ b/.hgtags
@@ -138,3 +138,5 @@ e0dc8b741eaa27dcdfbc9e956bb2579b954d15eb 2.7.2-beta1
 6af10678de4736222b2c3f7e010e984fb5b327de 2.7.4-start
 be963a4eef635542f9617d7f5fd22ba48fb71958 DRTVWR-67_2.7.4-beta1
 be963a4eef635542f9617d7f5fd22ba48fb71958 2.7.4-beta1
+057f319dd8eccdf63a54d99686c68cdcb31b6abc DRTVWR-66_2.7.4-release
+057f319dd8eccdf63a54d99686c68cdcb31b6abc 2.7.4-release
-- 
cgit v1.2.3


From f3dd16ac47ba937a92c3050c087d36c50674b06d Mon Sep 17 00:00:00 2001
From: Aaron Stone <stone@lindenlab.com>
Date: Thu, 14 Jul 2011 12:38:24 -0700
Subject: STORM-1482 Little bit of Windows crash report value logging.

---
 indra/win_crash_logger/llcrashloggerwindows.cpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/indra/win_crash_logger/llcrashloggerwindows.cpp b/indra/win_crash_logger/llcrashloggerwindows.cpp
index 5e8725989c..170babbb98 100644
--- a/indra/win_crash_logger/llcrashloggerwindows.cpp
+++ b/indra/win_crash_logger/llcrashloggerwindows.cpp
@@ -296,6 +296,7 @@ void LLCrashLoggerWindows::gatherPlatformSpecificFiles()
 
 bool LLCrashLoggerWindows::mainLoop()
 {	
+	llinfos << "CrashSubmitBehavior is " << mCrashBehavior << llendl;
 
 	// Note: parent hwnd is 0 (the desktop).  No dlg proc.  See Petzold (5th ed) HexCalc example, Chapter 11, p529
 	// win_crash_logger.rc has been edited by hand.
@@ -308,6 +309,7 @@ bool LLCrashLoggerWindows::mainLoop()
 
 	if (mCrashBehavior == CRASH_BEHAVIOR_ALWAYS_SEND)
 	{
+		llinfos << "Showing crash report submit progress window." << llendl;
 		ShowWindow(gHwndProgress, SW_SHOW );
 		sendCrashLogs();
 	}
-- 
cgit v1.2.3


From a517d32c4877aec79219cd346709c621c51c032b Mon Sep 17 00:00:00 2001
From: Aaron Stone <stone@lindenlab.com>
Date: Fri, 15 Jul 2011 12:46:06 -0700
Subject: STORM-1482 Change the defaults, look in the app_settings dir for
 configs as well.

---
 indra/llcrashlogger/llcrashlogger.cpp | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp
index 3fbaf61991..93f3c910bd 100644
--- a/indra/llcrashlogger/llcrashlogger.cpp
+++ b/indra/llcrashlogger/llcrashlogger.cpp
@@ -67,7 +67,7 @@ public:
 };
 
 LLCrashLogger::LLCrashLogger() :
-	mCrashBehavior(CRASH_BEHAVIOR_ASK),
+	mCrashBehavior(CRASH_BEHAVIOR_ALWAYS_SEND),
 	mCrashInPreviousExec(false),
 	mCrashSettings("CrashSettings"),
 	mSentCrashLogs(false),
@@ -274,12 +274,19 @@ const char* const CRASH_SETTINGS_FILE = "settings_crash_behavior.xml";
 
 S32 LLCrashLogger::loadCrashBehaviorSetting()
 {
+	// First check user_settings (in the user's home dir)
 	std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, CRASH_SETTINGS_FILE);
+	if (! mCrashSettings.loadFromFile(filename))
+	{
+		// Next check app_settings (in the SL program dir)
+		std::string filename = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, CRASH_SETTINGS_FILE);
+		mCrashSettings.loadFromFile(filename);
+	}
 
-	mCrashSettings.loadFromFile(filename);
-
+	// If we didn't load any files above, this will return the default
 	S32 value = mCrashSettings.getS32("CrashSubmitBehavior");
 
+	// Whatever value we got, make sure it's valid
 	switch (value)
 	{
 	case CRASH_BEHAVIOR_NEVER_SEND:
@@ -391,14 +398,14 @@ bool LLCrashLogger::init()
 	// Set the log file to crashreport.log
 	LLError::logToFile(log_file);
 	
-	mCrashSettings.declareS32("CrashSubmitBehavior", CRASH_BEHAVIOR_ASK,
+	mCrashSettings.declareS32("CrashSubmitBehavior", CRASH_BEHAVIOR_ALWAYS_SEND,
 							  "Controls behavior when viewer crashes "
 							  "(0 = ask before sending crash report, "
 							  "1 = always send crash report, "
 							  "2 = never send crash report)");
 
-	llinfos << "Loading crash behavior setting" << llendl;
-	mCrashBehavior = loadCrashBehaviorSetting();
+	// llinfos << "Loading crash behavior setting" << llendl;
+	// mCrashBehavior = loadCrashBehaviorSetting();
 
 	// If user doesn't want to send, bail out
 	if (mCrashBehavior == CRASH_BEHAVIOR_NEVER_SEND)
-- 
cgit v1.2.3


From 5f99d30c20bd4e23d17bbf78d2112f21ee840169 Mon Sep 17 00:00:00 2001
From: Aaron Stone <stone@lindenlab.com>
Date: Fri, 15 Jul 2011 16:25:32 -0700
Subject: STORM-1482 Always run the crash loggers, they will check what to do
 and how to clean up.

---
 indra/newview/llappviewer.cpp      |  5 ++-
 indra/newview/llappviewerlinux.cpp | 63 ++++++++++++++++----------------------
 indra/newview/llappviewerwin32.cpp |  6 +---
 3 files changed, 29 insertions(+), 45 deletions(-)

diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 6763881094..92e0513464 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -2823,7 +2823,7 @@ bool LLAppViewer::initWindow()
 	// Need to load feature table before cheking to start watchdog.
 	bool use_watchdog = false;
 	int watchdog_enabled_setting = gSavedSettings.getS32("WatchdogEnabled");
-	if(watchdog_enabled_setting == -1)
+	if (watchdog_enabled_setting == -1)
 	{
 		use_watchdog = !LLFeatureManager::getInstance()->isFeatureAvailable("WatchdogDisabled");
 	}
@@ -2833,8 +2833,7 @@ bool LLAppViewer::initWindow()
 		use_watchdog = bool(watchdog_enabled_setting);
 	}
 
-	bool send_reports = gCrashSettings.getS32("CrashSubmitBehavior") != CRASH_BEHAVIOR_NEVER_SEND;
-	if(use_watchdog && send_reports)
+	if (use_watchdog)
 	{
 		LLWatchdog::getInstance()->init(watchdog_killer_callback);
 	}
diff --git a/indra/newview/llappviewerlinux.cpp b/indra/newview/llappviewerlinux.cpp
index 08d4f49147..48d02dfeaa 100644
--- a/indra/newview/llappviewerlinux.cpp
+++ b/indra/newview/llappviewerlinux.cpp
@@ -361,46 +361,35 @@ void LLAppViewerLinux::handleCrashReporting(bool reportFreeze)
 	}
 	else
 	{
-		const S32 cb = gCrashSettings.getS32("CrashSubmitBehavior");
-
-		// Always generate the report, have the logger do the asking, and
-		// don't wait for the logger before exiting (-> total cleanup).
-		if (CRASH_BEHAVIOR_NEVER_SEND != cb)
-		{	
-			// launch the actual crash logger
-			const char* ask_dialog = "-dialog";
-			if (CRASH_BEHAVIOR_ASK != cb)
-				ask_dialog = ""; // omit '-dialog' option
-			const char * cmdargv[] =
-				{cmd.c_str(),
-				 ask_dialog,
-				 "-user",
-				 (char*)LLGridManager::getInstance()->getGridLabel().c_str(),
-				 "-name",
-				 LLAppViewer::instance()->getSecondLifeTitle().c_str(),
-				 NULL};
-			fflush(NULL);
-			pid_t pid = fork();
-			if (pid == 0)
-			{ // child
-				execv(cmd.c_str(), (char* const*) cmdargv);		/* Flawfinder: ignore */
-				llwarns << "execv failure when trying to start " << cmd << llendl;
-				_exit(1); // avoid atexit()
+		// launch the actual crash logger
+		const char * cmdargv[] =
+			{cmd.c_str(),
+			 "-user",
+			 (char*)LLGridManager::getInstance()->getGridLabel().c_str(),
+			 "-name",
+			 LLAppViewer::instance()->getSecondLifeTitle().c_str(),
+			 NULL};
+		fflush(NULL);
+		pid_t pid = fork();
+		if (pid == 0)
+		{ // child
+			execv(cmd.c_str(), (char* const*) cmdargv);		/* Flawfinder: ignore */
+			llwarns << "execv failure when trying to start " << cmd << llendl;
+			_exit(1); // avoid atexit()
+		} 
+		else
+		{
+			if (pid > 0)
+			{
+				// DO NOT wait for child proc to die; we want
+				// the logger to outlive us while we quit to
+				// free up the screen/keyboard/etc.
+				////int childExitStatus;
+				////waitpid(pid, &childExitStatus, 0);
 			} 
 			else
 			{
-				if (pid > 0)
-				{
-					// DO NOT wait for child proc to die; we want
-					// the logger to outlive us while we quit to
-					// free up the screen/keyboard/etc.
-					////int childExitStatus;
-					////waitpid(pid, &childExitStatus, 0);
-				} 
-				else
-				{
-					llwarns << "fork failure." << llendl;
-				}
+				llwarns << "fork failure." << llendl;
 			}
 		}
 		// Sometimes signals don't seem to quit the viewer.  Also, we may
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index 9280234ac3..f94c843ad9 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -518,11 +518,7 @@ void LLAppViewerWin32::handleCrashReporting(bool reportFreeze)
 	}
 	else
 	{
-		S32 cb = gCrashSettings.getS32("CrashSubmitBehavior");
-		if(cb != CRASH_BEHAVIOR_NEVER_SEND)
-		{
-			_spawnl(_P_NOWAIT, exe_path.c_str(), arg_str, NULL);
-		}
+		_spawnl(_P_NOWAIT, exe_path.c_str(), arg_str, NULL);
 	}
 }
 
-- 
cgit v1.2.3


From ec2d528952b15eb7d74202246d4841867c6e3a60 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Mon, 18 Jul 2011 08:30:21 -0400
Subject: re-enable the watchdog

---
 indra/newview/app_settings/settings.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index 91cbfde07f..4b62e376b5 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -12584,7 +12584,7 @@
       <key>Type</key>
       <string>S32</string>
       <key>Value</key>
-      <integer>-1</integer>
+      <integer>20</integer>
     </map>
     <key>WaterGLFogDensityScale</key>
     <map>
-- 
cgit v1.2.3


From 771ff8a764c04f05409c46f07e2af666841bc4d3 Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Mon, 18 Jul 2011 08:30:42 -0400
Subject: Added tag 2.8.1-start for changeset 502f6a5deca9

---
 .hgtags | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.hgtags b/.hgtags
index 61d39a689d..3061c8acaa 100644
--- a/.hgtags
+++ b/.hgtags
@@ -148,3 +148,4 @@ a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release
 09984bfa6cae17e0f72d02b75c1b7393c65eecfc DRTVWR-69_2.7.5-beta1
 09984bfa6cae17e0f72d02b75c1b7393c65eecfc 2.7.5-beta1
 e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-start
+502f6a5deca9365ddae57db4f1e30172668e171e 2.8.1-start
-- 
cgit v1.2.3