From cda7a0f8cf03b7a99e077043daa2d99ac16ace81 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Wed, 9 Feb 2011 23:32:46 -0800
Subject: STORM-987 : Create initial files for llimage_libtest (doesn't build)

---
 indra/integration_tests/CMakeLists.txt             |   1 +
 .../llimage_libtest/CMakeLists.txt                 | 114 +++++++++++++++++++++
 .../llimage_libtest/llimage_libtest.cpp            |  47 +++++++++
 .../llimage_libtest/llimage_libtest.h              |  29 ++++++
 4 files changed, 191 insertions(+)
 create mode 100644 indra/integration_tests/llimage_libtest/CMakeLists.txt
 create mode 100644 indra/integration_tests/llimage_libtest/llimage_libtest.cpp
 create mode 100644 indra/integration_tests/llimage_libtest/llimage_libtest.h

(limited to 'indra')

diff --git a/indra/integration_tests/CMakeLists.txt b/indra/integration_tests/CMakeLists.txt
index 67e8fbf1f2..5935f23fe9 100644
--- a/indra/integration_tests/CMakeLists.txt
+++ b/indra/integration_tests/CMakeLists.txt
@@ -1,3 +1,4 @@
 # -*- cmake -*-
 
 add_subdirectory(llui_libtest)
+add_subdirectory(llimage_libtest)
diff --git a/indra/integration_tests/llimage_libtest/CMakeLists.txt b/indra/integration_tests/llimage_libtest/CMakeLists.txt
new file mode 100644
index 0000000000..e3c508659b
--- /dev/null
+++ b/indra/integration_tests/llimage_libtest/CMakeLists.txt
@@ -0,0 +1,114 @@
+# -*- cmake -*-
+
+# Integration tests of the llimage library (JPEG2000 images reading and writing)
+
+if (VIEWER)
+
+project (llimage_libtest)
+
+include(00-Common)
+include(LLCommon)
+include(LLImage)
+include(LLImageJ2COJ) 
+include(LLKDU)
+include(LLMath)
+#include(LLVFS)        # ugh, needed for LLDir
+#include(LLXML)
+#include(LLXUIXML)
+include(Linking)
+# include(Tut)
+
+include_directories(
+    ${LLCOMMON_INCLUDE_DIRS}
+    ${LLIMAGE_INCLUDE_DIRS}
+    ${LLMATH_INCLUDE_DIRS}
+    )
+
+set(llimage_libtest_SOURCE_FILES
+    llimage_libtest.cpp
+    )
+
+set(llimage_libtest_HEADER_FILES
+    CMakeLists.txt
+    llimage_libtest.h
+    )
+
+set_source_files_properties(${llimage_libtest_HEADER_FILES}
+                            PROPERTIES HEADER_FILE_ONLY TRUE)
+
+list(APPEND llimage_libtest_SOURCE_FILES ${llimage_libtest_HEADER_FILES})
+
+add_executable(llimage_libtest ${llimage_libtest_SOURCE_FILES})
+
+# Link with OS-specific libraries
+if (DARWIN)
+  find_library(COCOA_LIBRARY Cocoa)
+  set(OS_LIBRARIES ${COCOA_LIBRARY})
+elseif (WINDOWS)
+  #ll_stack_trace needs this now...
+  list(APPEND WINDOWS_LIBRARIES dbghelp)
+  set(OS_LIBRARIES ${WINDOWS_LIBRARIES})
+elseif (LINUX)
+  set(OS_LIBRARIES)
+else (DARWIN)
+  message(FATAL_ERROR "unknown platform")
+endif (DARWIN)
+
+# Libraries on which this library depends, needed for Linux builds
+# Sort by high-level to low-level
+target_link_libraries(llimage_libtest
+    ${LLIMAGE_LIBRARIES}
+    ${LLKDU_LIBRARIES}
+    ${KDU_LIBRARY}
+    ${LLIMAGEJ2COJ_LIBRARIES}
+    ${OS_LIBRARIES}
+    ${GOOGLE_PERFTOOLS_LIBRARIES}
+    )
+	
+if (DARWIN)
+  set_target_properties(llimage_libtest
+    PROPERTIES
+    OUTPUT_NAME "llimage_libtest"
+    MACOSX_BUNDLE_INFO_STRING "llimage test utility"
+    MACOSX_BUNDLE_GUI_IDENTIFIER "llimage_libtest"
+    MACOSX_BUNDLE_LONG_VERSION_STRING "0.5"
+    MACOSX_BUNDLE_BUNDLE_NAME "llimage_libtest"
+    MACOSX_BUNDLE_SHORT_VERSION_STRING "v0.5"
+    MACOSX_BUNDLE_BUNDLE_VERSION "v0.5"
+    MACOSX_BUNDLE_COPYRIGHT "Copyright Linden Lab 2011"
+    )
+	# TODO : Copy over libs in the bundle 
+elseif (WINDOWS)
+    set_target_properties(llimage_libtest
+        PROPERTIES 
+        LINK_FLAGS "/NODEFAULTLIB:LIBCMT"
+        LINK_FLAGS_DEBUG "/NODEFAULTLIB:MSVCRT /NODEFAULTLIB:LIBCMTD"
+        )
+
+    # Copy over OpenJPEG.dll
+    # *NOTE: On Windows with VS2005, only the first comment prints
+    set(OPENJPEG_RELEASE
+        "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/release/openjpeg.dll")
+    add_custom_command( TARGET llimage_libtest POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E copy_if_different 
+            ${OPENJPEG_RELEASE} ${CMAKE_CURRENT_BINARY_DIR}
+        COMMENT "Copying OpenJPEG DLLs to binary directory"
+        )
+    set(OPENJPEG_DEBUG
+        "${CMAKE_SOURCE_DIR}/../libraries/i686-win32/lib/debug/openjpegd.dll")
+    add_custom_command( TARGET llimage_libtest POST_BUILD
+        COMMAND ${CMAKE_COMMAND} -E copy_if_different 
+            ${OPENJPEG_DEBUG} ${CMAKE_CURRENT_BINARY_DIR}
+        )
+elseif (LINUX)
+	# TODO : please help me get this to build and run for Linux!
+else (DARWIN)
+  message(FATAL_ERROR "unknown platform")
+endif (DARWIN)
+
+# Ensure people working on the viewer don't break this library
+# *NOTE: This could be removed, or only built by TeamCity, if the build
+# and link times become too long.
+add_dependencies(viewer llimage_libtest)
+
+endif (VIEWER)
diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
new file mode 100644
index 0000000000..a4a4d10bcb
--- /dev/null
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
@@ -0,0 +1,47 @@
+/** 
+ * @file llimage_libtest.cpp
+ * @author Merov Linden
+ * @brief Integration test for the llimage library
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+#include "linden_common.h"
+
+#include "llimage_libtest.h"
+
+// linden library includes
+
+#include <iostream>
+
+// *TODO: switch to using TUT
+// *TODO: teach TeamCity about this program, run automatically after full builds
+
+void init_llimage()
+{
+}
+
+int main(int argc, char** argv)
+{
+	init_llimage();
+	
+	return 0;
+}
diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.h b/indra/integration_tests/llimage_libtest/llimage_libtest.h
new file mode 100644
index 0000000000..63f3d46b50
--- /dev/null
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.h
@@ -0,0 +1,29 @@
+/** 
+ * @file llimage_libtest.h
+ *
+ * $LicenseInfo:firstyear=2011&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2011, Linden Research, Inc.
+ * 
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation;
+ * version 2.1 of the License only.
+ * 
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ * 
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA  94111  USA
+ * $/LicenseInfo$
+ */
+#ifndef LLIMAGE_LIBTEST_H
+#define LLIMAGE_LIBTEST_H
+
+
+#endif
-- 
cgit v1.2.3


From b430cf7524d91e27aadcf8a37b03af9b6b4d3e42 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Tue, 15 Feb 2011 18:13:44 -0800
Subject: STORM-987 : Clean-up very silly cmake issues prior to making Windows
 build

---
 indra/integration_tests/llimage_libtest/CMakeLists.txt | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/llimage_libtest/CMakeLists.txt b/indra/integration_tests/llimage_libtest/CMakeLists.txt
index 0733e5e283..f59440be6b 100644
--- a/indra/integration_tests/llimage_libtest/CMakeLists.txt
+++ b/indra/integration_tests/llimage_libtest/CMakeLists.txt
@@ -53,11 +53,9 @@ if (DARWIN)
   find_library(COREFOUNDATION_LIBRARY CoreFoundation)
   set(OS_LIBRARIES ${COREFOUNDATION_LIBRARY})
 elseif (WINDOWS)
-  #ll_stack_trace needs this now...
-  list(APPEND WINDOWS_LIBRARIES dbghelp)
-  set(OS_LIBRARIES ${WINDOWS_LIBRARIES})
+#  set(OS_LIBRARIES)
 elseif (LINUX)
-  set(OS_LIBRARIES)
+#  set(OS_LIBRARIES)
 else (DARWIN)
   message(FATAL_ERROR "Unknown platform")
 endif (DARWIN)
@@ -106,12 +104,15 @@ if (DARWIN)
   add_custom_command(TARGET llimage_libtest POST_BUILD
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libapr-1.0.3.7.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
     DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libapr-1.0.3.7.dylib
-  add_custom_command(TARGET llimage_libtest POST_BUILD
+  )
+ add_custom_command(TARGET llimage_libtest POST_BUILD
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libaprutil-1.0.3.8.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
     DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libaprutil-1.0.3.8.dylib
+  )
   add_custom_command(TARGET llimage_libtest POST_BUILD
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexception_handler.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
     DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexception_handler.dylib
+  )
   add_custom_command(TARGET llimage_libtest POST_BUILD
     COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexpat.0.5.0.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
     DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexpat.0.5.0.dylib
-- 
cgit v1.2.3


From 0ca7011b3154fd5db0a125f7d90de1c1e460105f Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Tue, 15 Feb 2011 22:43:54 -0800
Subject: STORM-987 : Add in and out command line arguments, builds and runs on
 Windows and Mac

---
 .../llimage_libtest/llimage_libtest.cpp            | 123 +++++++++++++--------
 1 file changed, 78 insertions(+), 45 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
index e8fe4864fb..6549aa0207 100644
--- a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
@@ -41,15 +41,19 @@
 // system libraries
 #include <iostream>
 
+// doc string provided when invoking the program with --help 
 static const char USAGE[] = "\n"
 "usage:\tllimage_libtest [options]\n"
 "\n"
 " --help                         print this help\n"
+" --in <file1> <file2>...        list of image files to load and convert\n"
+" --out <file1> <file2>...       list of image files to create (assumes same order as --in files)\n"
 "\n";
 
-LLPointer<LLImageRaw> load_image(const std::string &src_filename)
+// Create an empty formatted image instance of the correct type from the filename
+LLPointer<LLImageFormatted> create_image(const std::string &filename)
 {
-	std::string exten = gDirUtilp->getExtension(src_filename);
+	std::string exten = gDirUtilp->getExtension(filename);
 	U32 codec = LLImageBase::getCodecFromExtension(exten);
 	
 	LLPointer<LLImageFormatted> image;
@@ -73,6 +77,14 @@ LLPointer<LLImageRaw> load_image(const std::string &src_filename)
 		default:
 			return NULL;
 	}
+	
+	return image;
+}
+
+// Load an image from file and return a raw (decompressed) instance of its data
+LLPointer<LLImageRaw> load_image(const std::string &src_filename)
+{
+	LLPointer<LLImageFormatted> image = create_image(src_filename);
 
 	if (!image->load(src_filename))
 	{
@@ -94,79 +106,100 @@ LLPointer<LLImageRaw> load_image(const std::string &src_filename)
 	return raw_image;
 }
 
-bool save_image(const std::string &filepath, LLPointer<LLImageRaw> raw_image)
+// Save a raw image instance into a file
+bool save_image(const std::string &dest_filename, LLPointer<LLImageRaw> raw_image)
 {
-	std::string exten = gDirUtilp->getExtension(filepath);
-	U32 codec = LLImageBase::getCodecFromExtension(exten);
-
-	LLPointer<LLImageFormatted> image;
-	switch (codec)
-	{
-		case IMG_CODEC_BMP:
-			image = new LLImageBMP();
-			break;
-		case IMG_CODEC_TGA:
-			image = new LLImageTGA();
-			break;
-		case IMG_CODEC_JPEG:
-			image = new LLImageJPEG();
-			break;
-		case IMG_CODEC_J2C:
-			image = new LLImageJ2C();
-			break;
-		case IMG_CODEC_PNG:
-			image = new LLImagePNG();
-			break;
-		default:
-			return NULL;
-	}
+	LLPointer<LLImageFormatted> image = create_image(dest_filename);
 	
 	if (!image->encode(raw_image, 0.0f))
 	{
 		return false;
 	}
 	
-	return image->save(filepath);
+	return image->save(dest_filename);
 }
 
 int main(int argc, char** argv)
 {
+	// List of input and output files
+	std::list<std::string> input_filenames;
+	std::list<std::string> output_filenames;
+
 	// Init whatever is necessary
 	ll_init_apr();
 	LLImage::initClass();
 
 	// Analyze command line arguments
-	for (int arg=1; arg<argc; ++arg)
+	for (int arg = 1; arg < argc; ++arg)
 	{
 		if (!strcmp(argv[arg], "--help"))
 		{
-            // always send the usage to standard out
+            // Send the usage to standard out
             std::cout << USAGE << std::endl;
 			return 0;
 		}
-		
+		else if (!strcmp(argv[arg], "--in") && arg < argc-1)
+		{
+			std::string file_name = argv[arg+1];
+			while (file_name[0] != '-')		// if arg starts with '-', we consider it's not a file name but some other argument
+			{
+				input_filenames.push_back(file_name);	// Add file name to the list
+				arg += 1;					// Skip that arg now we know it's a file name
+				if ((arg + 1) == argc)		// Break out of the loop if we reach the end of the arg list
+					break;
+				file_name = argv[arg+1];	// Next argument and loop over
+			}
+		}		
+		else if (!strcmp(argv[arg], "--out") && arg < argc-1)
+		{
+			std::string file_name = argv[arg+1];
+			while (file_name[0] != '-')		// if arg starts with '-', we consider it's not a file name but some other argument
+			{
+				output_filenames.push_back(file_name);	// Add file name to the list
+				arg += 1;					// Skip that arg now we know it's a file name
+				if ((arg + 1) == argc)		// Break out of the loop if we reach the end of the arg list
+					break;
+				file_name = argv[arg+1];	// Next argument and loop over
+			}
+		}		
 	}
 		
-	// List of (input,output) files
-	
-	// Load file
-	LLPointer<LLImageRaw> raw_image = load_image("lolcat-monorail.jpg");
-	if (raw_image)
+	// Analyze the list of (input,output) files
+	if (input_filenames.size() == 0)
 	{
-		std::cout << "Image loaded\n" << std::endl;
+		std::cout << "No input file, nothing to do -> exit" << std::endl;
+		return 0;
 	}
-	else
+	// TODO: For the moment, we simply convert each input file to something. This needs to evolve...
+	if (input_filenames.size() != output_filenames.size())
 	{
-		std::cout << "Image not found\n" << std::endl;
+		std::cout << "Number of output and input files different -> exit" << std::endl;
+		return 0;
 	}
-	
-	// Save file
-	if (raw_image)
+
+	std::list<std::string>::iterator in_file  = input_filenames.begin();
+	std::list<std::string>::iterator out_file = output_filenames.begin();
+	std::list<std::string>::iterator end = input_filenames.end();
+	for (; in_file != end; ++in_file, ++out_file)
 	{
-		save_image("monorail.png",raw_image);
+		// Load file
+		LLPointer<LLImageRaw> raw_image = load_image(*in_file);
+		if (!raw_image)
+		{
+			std::cout << "Error: Image " << *in_file << " could not be loaded" << std::endl;
+			continue;
+		}
+	
+		// Save file
+		if (!save_image(*out_file, raw_image))
+		{
+			std::cout << "Error: Image " << *out_file << " could not be saved" << std::endl;
+			continue;
+		}
+		std::cout << *in_file << " -> " << *out_file << std::endl;
+
+		// Output stats on each file
 	}
-		
-	// Output stats on each file
 	
 	// Cleanup and exit
 	LLImage::cleanupClass();
-- 
cgit v1.2.3


From 0dbc5a40cb83919187fed961de835726e044906d Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Wed, 16 Feb 2011 17:29:32 -0800
Subject: STORM-987 : Implement in and out list of files and pattern matching

---
 .../llimage_libtest/llimage_libtest.cpp            | 117 ++++++++++++++++++---
 1 file changed, 105 insertions(+), 12 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
index 6549aa0207..37e979b260 100644
--- a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
@@ -45,9 +45,10 @@
 static const char USAGE[] = "\n"
 "usage:\tllimage_libtest [options]\n"
 "\n"
-" --help                         print this help\n"
-" --in <file1> <file2>...        list of image files to load and convert\n"
-" --out <file1> <file2>...       list of image files to create (assumes same order as --in files)\n"
+" --help                           print this help\n"
+" --in <file1 .. file2>            list of image files to load and convert, patterns can be used\n"
+" --out <file1 .. file2> OR <type> list of image files to create (assumes same order as --in files)\n"
+"                                  OR 3 letters file type extension to convert each input file into\n"
 "\n";
 
 // Create an empty formatted image instance of the correct type from the filename
@@ -119,6 +120,88 @@ bool save_image(const std::string &dest_filename, LLPointer<LLImageRaw> raw_imag
 	return image->save(dest_filename);
 }
 
+void store_input_file(std::list<std::string> &input_filenames, const std::string &path)
+{
+	// Break the incoming path in its components
+	std::string dir = gDirUtilp->getDirName(path);
+	std::string name = gDirUtilp->getBaseFileName(path);
+	std::string exten = gDirUtilp->getExtension(path);
+
+	// std::cout << "store_input_file : " << path << ", dir : " << dir << ", name : " << name << ", exten : " << exten << std::endl;
+	
+	// If extension is not an image type or "*", exit
+	// Note: we don't support complex patterns for the extension like "j??"
+	// Note: on most shells, the pattern expansion is done by the shell so that pattern matching limitation is actually not a problem
+	if ((exten.compare("*") != 0) && (LLImageBase::getCodecFromExtension(exten) == IMG_CODEC_INVALID))
+	{
+		return;
+	}
+
+	if ((name.find('*') != -1) || ((name.find('?') != -1)))
+	{
+		// If file name is a pattern, iterate to get each file name and store
+		std::string next_name;
+		while (gDirUtilp->getNextFileInDir(dir,name,next_name))
+		{
+			std::string file_name = dir + gDirUtilp->getDirDelimiter() + next_name;
+			input_filenames.push_back(file_name);
+		}
+	}
+	else
+	{
+		// Verify that the file does exist before storing 
+		if (gDirUtilp->fileExists(path))
+		{
+			input_filenames.push_back(path);
+		}
+		else
+		{
+			std::cout << "store_input_file : the file " << path << " could not be found" << std::endl;
+		}
+	}	
+}
+
+void store_output_file(std::list<std::string> &output_filenames, std::list<std::string> &input_filenames, const std::string &path)
+{
+	// Break the incoming path in its components
+	std::string dir = gDirUtilp->getDirName(path);
+	std::string name = gDirUtilp->getBaseFileName(path);
+	std::string exten = gDirUtilp->getExtension(path);
+	
+	// std::cout << "store_output_file : " << path << ", dir : " << dir << ", name : " << name << ", exten : " << exten << std::endl;
+	
+	if (dir.empty() && exten.empty())
+	{
+		// If dir and exten are empty, we interpret the name as a file extension type name and will iterate through input list to populate the output list
+		exten = name;
+		// Make sure the extension is an image type
+		if (LLImageBase::getCodecFromExtension(exten) == IMG_CODEC_INVALID)
+		{
+			return;
+		}
+		std::string delim = gDirUtilp->getDirDelimiter();
+		std::list<std::string>::iterator in_file  = input_filenames.begin();
+		std::list<std::string>::iterator end = input_filenames.end();
+		for (; in_file != end; ++in_file)
+		{
+			dir = gDirUtilp->getDirName(*in_file);
+			name = gDirUtilp->getBaseFileName(*in_file,true);
+			std::string file_name = dir + delim + name + "." + exten;
+			output_filenames.push_back(file_name);
+		}
+	}
+	else
+	{
+		// Make sure the extension is an image type
+		if (LLImageBase::getCodecFromExtension(exten) == IMG_CODEC_INVALID)
+		{
+			return;
+		}
+		// Store the path
+		output_filenames.push_back(path);
+	}
+}
+
 int main(int argc, char** argv)
 {
 	// List of input and output files
@@ -143,24 +226,40 @@ int main(int argc, char** argv)
 			std::string file_name = argv[arg+1];
 			while (file_name[0] != '-')		// if arg starts with '-', we consider it's not a file name but some other argument
 			{
-				input_filenames.push_back(file_name);	// Add file name to the list
+				// std::cout << "input file name : " << file_name << std::endl;				
+				store_input_file(input_filenames, file_name);
 				arg += 1;					// Skip that arg now we know it's a file name
 				if ((arg + 1) == argc)		// Break out of the loop if we reach the end of the arg list
 					break;
 				file_name = argv[arg+1];	// Next argument and loop over
 			}
-		}		
+			// DEBUG output
+			std::list<std::string>::iterator in_file  = input_filenames.begin();
+			std::list<std::string>::iterator end = input_filenames.end();
+			for (; in_file != end; ++in_file)
+			{
+				std::cout << "input file : " << *in_file << std::endl;
+			}
+		}
 		else if (!strcmp(argv[arg], "--out") && arg < argc-1)
 		{
 			std::string file_name = argv[arg+1];
 			while (file_name[0] != '-')		// if arg starts with '-', we consider it's not a file name but some other argument
 			{
-				output_filenames.push_back(file_name);	// Add file name to the list
+				// std::cout << "output file name : " << file_name << std::endl;				
+				store_output_file(output_filenames, input_filenames, file_name);
 				arg += 1;					// Skip that arg now we know it's a file name
 				if ((arg + 1) == argc)		// Break out of the loop if we reach the end of the arg list
 					break;
 				file_name = argv[arg+1];	// Next argument and loop over
 			}
+			// DEBUG output
+			std::list<std::string>::iterator out_file  = output_filenames.begin();
+			std::list<std::string>::iterator end = output_filenames.end();
+			for (; out_file != end; ++out_file)
+			{
+				std::cout << "output file : " << *out_file << std::endl;
+			}
 		}		
 	}
 		
@@ -170,12 +269,6 @@ int main(int argc, char** argv)
 		std::cout << "No input file, nothing to do -> exit" << std::endl;
 		return 0;
 	}
-	// TODO: For the moment, we simply convert each input file to something. This needs to evolve...
-	if (input_filenames.size() != output_filenames.size())
-	{
-		std::cout << "Number of output and input files different -> exit" << std::endl;
-		return 0;
-	}
 
 	std::list<std::string>::iterator in_file  = input_filenames.begin();
 	std::list<std::string>::iterator out_file = output_filenames.begin();
-- 
cgit v1.2.3


From 7d47ea1ab254e13cbff476fee317042f81d84b25 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Wed, 16 Feb 2011 21:50:32 -0800
Subject: STORM-987 : Allow more flexibility around input and output lists

---
 .../llimage_libtest/llimage_libtest.cpp            | 36 ++++++++++------------
 1 file changed, 16 insertions(+), 20 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
index 37e979b260..4104527f83 100644
--- a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
@@ -233,13 +233,6 @@ int main(int argc, char** argv)
 					break;
 				file_name = argv[arg+1];	// Next argument and loop over
 			}
-			// DEBUG output
-			std::list<std::string>::iterator in_file  = input_filenames.begin();
-			std::list<std::string>::iterator end = input_filenames.end();
-			for (; in_file != end; ++in_file)
-			{
-				std::cout << "input file : " << *in_file << std::endl;
-			}
 		}
 		else if (!strcmp(argv[arg], "--out") && arg < argc-1)
 		{
@@ -253,13 +246,6 @@ int main(int argc, char** argv)
 					break;
 				file_name = argv[arg+1];	// Next argument and loop over
 			}
-			// DEBUG output
-			std::list<std::string>::iterator out_file  = output_filenames.begin();
-			std::list<std::string>::iterator end = output_filenames.end();
-			for (; out_file != end; ++out_file)
-			{
-				std::cout << "output file : " << *out_file << std::endl;
-			}
 		}		
 	}
 		
@@ -270,10 +256,12 @@ int main(int argc, char** argv)
 		return 0;
 	}
 
+	// Perform action on each input file
 	std::list<std::string>::iterator in_file  = input_filenames.begin();
 	std::list<std::string>::iterator out_file = output_filenames.begin();
-	std::list<std::string>::iterator end = input_filenames.end();
-	for (; in_file != end; ++in_file, ++out_file)
+	std::list<std::string>::iterator in_end = input_filenames.end();
+	std::list<std::string>::iterator out_end = output_filenames.end();
+	for (; in_file != in_end; ++in_file)
 	{
 		// Load file
 		LLPointer<LLImageRaw> raw_image = load_image(*in_file);
@@ -284,16 +272,24 @@ int main(int argc, char** argv)
 		}
 	
 		// Save file
-		if (!save_image(*out_file, raw_image))
+		if (out_file != out_end)
 		{
-			std::cout << "Error: Image " << *out_file << " could not be saved" << std::endl;
-			continue;
+			if (!save_image(*out_file, raw_image))
+			{
+				std::cout << "Error: Image " << *out_file << " could not be saved" << std::endl;
+			}
+			else
+			{
+				std::cout << *in_file << " -> " << *out_file << std::endl;
+			}
+			++out_file;
 		}
-		std::cout << *in_file << " -> " << *out_file << std::endl;
 
 		// Output stats on each file
 	}
 	
+	// Output perf data if required by user
+	
 	// Cleanup and exit
 	LLImage::cleanupClass();
 	
-- 
cgit v1.2.3


From 668307e4e3b59ac4f4f955aa0d36183c361352b8 Mon Sep 17 00:00:00 2001
From: Robin Cornelius <none@none>
Date: Wed, 23 Feb 2011 15:50:55 -0500
Subject: STORM-1019 Add ability to display beacons for Media on a Prim objects
 Changes merged into viewer 2 by Jonathan Yap

---
 indra/newview/app_settings/settings.xml            | 11 ++++
 indra/newview/llfloaterbeacons.cpp                 |  2 +
 indra/newview/llviewermenu.cpp                     | 10 ++++
 indra/newview/llviewerwindow.cpp                   |  5 ++
 indra/newview/pipeline.cpp                         | 60 ++++++++++++++++++++++
 indra/newview/pipeline.h                           |  5 ++
 .../skins/default/xui/en/floater_beacons.xml       | 14 ++++-
 7 files changed, 105 insertions(+), 2 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index a010524091..d8b23d9d88 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -12069,6 +12069,17 @@
       <key>Value</key>
       <real>0.40000000596</real>
     </map>
+	<key>moapbeacon</key>
+	<map>
+		<key>Comment</key>
+		<string>Beacon / Highlight media on a prim sources</string>
+		<key>Persist</key>
+		<integer>1</integer>
+		<key>Type</key>
+		<string>Boolean</string>
+		<key>Value</key>
+		<integer>0</integer>
+	</map>
     <key>particlesbeacon</key>
     <map>
       <key>Comment</key>
diff --git a/indra/newview/llfloaterbeacons.cpp b/indra/newview/llfloaterbeacons.cpp
index e24df948c4..316294a477 100644
--- a/indra/newview/llfloaterbeacons.cpp
+++ b/indra/newview/llfloaterbeacons.cpp
@@ -48,6 +48,7 @@ LLFloaterBeacons::LLFloaterBeacons(const LLSD& seed)
 	LLPipeline::setRenderParticleBeacons(     gSavedSettings.getBOOL("particlesbeacon"));
 	LLPipeline::setRenderHighlights(          gSavedSettings.getBOOL("renderhighlights"));
 	LLPipeline::setRenderBeacons(             gSavedSettings.getBOOL("renderbeacons"));
+	LLPipeline::setRenderMOAPBeacons(		  gSavedSettings.getBOOL("moapbeacon"));
 	mCommitCallbackRegistrar.add("Beacons.UICheck",	boost::bind(&LLFloaterBeacons::onClickUICheck, this,_1));
 }
 
@@ -96,6 +97,7 @@ void LLFloaterBeacons::onClickUICheck(LLUICtrl *ctrl)
 	else if(name == "physical")       LLPipeline::setRenderPhysicalBeacons(check->get());
 	else if(name == "sounds")         LLPipeline::setRenderSoundBeacons(check->get());
 	else if(name == "particles")      LLPipeline::setRenderParticleBeacons(check->get());
+	else if(name == "moapbeacon")     LLPipeline::setRenderMOAPBeacons(check->get());
 	else if(name == "highlights")
 	{
 		LLPipeline::toggleRenderHighlights(NULL);
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 7cc04e0338..82bfe9ec64 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -7356,6 +7356,11 @@ class LLViewToggleBeacon : public view_listener_t
 			LLPipeline::toggleRenderPhysicalBeacons(NULL);
 			gSavedSettings.setBOOL( "physicalbeacon", LLPipeline::getRenderPhysicalBeacons(NULL) );
 		}
+		else if (beacon == "moapbeacon")
+		{
+			LLPipeline::toggleRenderMOAPBeacons(NULL);
+			gSavedSettings.setBOOL( "moapbeacon", LLPipeline::getRenderMOAPBeacons(NULL) );
+		}
 		else if (beacon == "soundsbeacon")
 		{
 			LLPipeline::toggleRenderSoundBeacons(NULL);
@@ -7415,6 +7420,11 @@ class LLViewCheckBeaconEnabled : public view_listener_t
 			new_value = gSavedSettings.getBOOL( "scriptsbeacon");
 			LLPipeline::setRenderScriptedBeacons(new_value);
 		}
+		else if (beacon == "moapbeacon")
+		{
+			new_value = gSavedSettings.getBOOL( "moapbeacon");
+			LLPipeline::setRenderMOAPBeacons(new_value);
+		}
 		else if (beacon == "physicalbeacon")
 		{
 			new_value = gSavedSettings.getBOOL( "physicalbeacon");
diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 0028ced6c8..b5cdd733ff 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -584,6 +584,11 @@ public:
 				addText(xpos, ypos, "Viewing scripted object beacons (red)");
 				ypos += y_inc;
 			}
+			if (LLPipeline::getRenderMOAPBeacons(NULL))
+			{
+				addText(xpos, ypos, "Viewing MOAP beacons (white)");
+				ypos += y_inc;
+			}
 			else
 				if (LLPipeline::getRenderScriptedTouchBeacons(NULL))
 				{
diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp
index 13e537fae5..911961777b 100644
--- a/indra/newview/pipeline.cpp
+++ b/indra/newview/pipeline.cpp
@@ -253,6 +253,7 @@ S32		LLPipeline::sCompiles = 0;
 BOOL	LLPipeline::sPickAvatar = TRUE;
 BOOL	LLPipeline::sDynamicLOD = TRUE;
 BOOL	LLPipeline::sShowHUDAttachments = TRUE;
+BOOL	LLPipeline::sRenderMOAPBeacons = FALSE;
 BOOL	LLPipeline::sRenderPhysicalBeacons = TRUE;
 BOOL	LLPipeline::sRenderScriptedBeacons = FALSE;
 BOOL	LLPipeline::sRenderScriptedTouchBeacons = TRUE;
@@ -2510,6 +2511,42 @@ void renderPhysicalBeacons(LLDrawable* drawablep)
 	}
 }
 
+void renderMOAPBeacons(LLDrawable* drawablep)
+{
+	LLViewerObject *vobj = drawablep->getVObj();
+
+	if(!vobj || vobj->isAvatar())
+		return;
+
+	BOOL beacon=FALSE;
+	U8 tecount=vobj->getNumTEs();
+	for(int x=0;x<tecount;x++)
+	{
+		if(vobj->getTE(x)->hasMedia())
+		{
+			beacon=TRUE;
+			break;
+		}
+	}
+	if(beacon==TRUE)
+	{
+		if (gPipeline.sRenderBeacons)
+		{
+			gObjectList.addDebugBeacon(vobj->getPositionAgent(), "", LLColor4(1.f, 1.f, 1.f, 0.5f), LLColor4(1.f, 1.f, 1.f, 0.5f), gSavedSettings.getS32("DebugBeaconLineWidth"));
+		}
+
+		if (gPipeline.sRenderHighlight)
+		{
+			S32 face_id;
+			S32 count = drawablep->getNumFaces();
+			for (face_id = 0; face_id < count; face_id++)
+			{
+				gPipeline.mHighlightFaces.push_back(drawablep->getFace(face_id) );
+			}
+		}
+	}
+}
+
 void renderParticleBeacons(LLDrawable* drawablep)
 {
 	// Look for attachments, objects, etc.
@@ -2715,6 +2752,11 @@ void LLPipeline::postSort(LLCamera& camera)
 			forAllVisibleDrawables(renderPhysicalBeacons);
 		}
 
+		if(sRenderMOAPBeacons)
+		{
+			forAllVisibleDrawables(renderMOAPBeacons);
+		}
+
 		if (sRenderParticleBeacons)
 		{
 			forAllVisibleDrawables(renderParticleBeacons);
@@ -4937,6 +4979,24 @@ BOOL LLPipeline::getRenderScriptedTouchBeacons(void*)
 	return sRenderScriptedTouchBeacons;
 }
 
+// static
+void LLPipeline::setRenderMOAPBeacons(BOOL val)
+{
+	sRenderMOAPBeacons = val;
+}
+
+// static
+void LLPipeline::toggleRenderMOAPBeacons(void*)
+{
+	sRenderMOAPBeacons = !sRenderMOAPBeacons;
+}
+
+// static
+BOOL LLPipeline::getRenderMOAPBeacons(void*)
+{
+	return sRenderMOAPBeacons;
+}
+
 // static
 void LLPipeline::setRenderPhysicalBeacons(BOOL val)
 {
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index e99b0d71e3..92ae40ebb0 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -312,6 +312,10 @@ public:
 	static void toggleRenderSoundBeacons(void* data);
 	static BOOL getRenderSoundBeacons(void* data);
 
+	static void setRenderMOAPBeacons(BOOL val);
+	static void toggleRenderMOAPBeacons(void * data);
+	static BOOL getRenderMOAPBeacons(void * data);
+
 	static void setRenderPhysicalBeacons(BOOL val);
 	static void toggleRenderPhysicalBeacons(void* data);
 	static BOOL getRenderPhysicalBeacons(void* data);
@@ -698,6 +702,7 @@ protected:
 	S32						mLightingDetail;
 		
 	static BOOL				sRenderPhysicalBeacons;
+	static BOOL				sRenderMOAPBeacons;
 	static BOOL				sRenderScriptedTouchBeacons;
 	static BOOL				sRenderScriptedBeacons;
 	static BOOL				sRenderParticleBeacons;
diff --git a/indra/newview/skins/default/xui/en/floater_beacons.xml b/indra/newview/skins/default/xui/en/floater_beacons.xml
index 4fc2b698d8..3d29356b22 100644
--- a/indra/newview/skins/default/xui/en/floater_beacons.xml
+++ b/indra/newview/skins/default/xui/en/floater_beacons.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <floater
  legacy_header_height="18"
- height="225"
+ height="245"
  layout="topleft"
  name="beacons"
  help_topic="beacons"
@@ -12,7 +12,7 @@
  width="240">
     <panel
      follows="left|top|right|bottom"
-     height="200"
+     height="240"
      layout="topleft"
      left="10"
      name="beacons_panel"
@@ -133,6 +133,16 @@
           <check_box.commit_callback
            function="Beacons.UICheck" />
         </check_box>
+         <check_box
+         control_name="moapbeacon"
+         height="16"
+         left="0"
+         label="Media sources"
+         layout="topleft"
+         name="moapbeacon" >
+          <check_box.commit_callback
+           function="Beacons.UICheck" />
+        </check_box>
 
     </panel>
 </floater>
-- 
cgit v1.2.3


From 5ef27b9f3f6e672ccc8126d7bed4c904f12d1186 Mon Sep 17 00:00:00 2001
From: Jonathan Yap <none@none>
Date: Thu, 24 Feb 2011 14:16:03 -0500
Subject: STORM-1019 Minor adjustment to media beacon name

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

(limited to 'indra')

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index b5cdd733ff..031fc05619 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -586,7 +586,7 @@ public:
 			}
 			if (LLPipeline::getRenderMOAPBeacons(NULL))
 			{
-				addText(xpos, ypos, "Viewing MOAP beacons (white)");
+				addText(xpos, ypos, "Viewing media beacons (white)");
 				ypos += y_inc;
 			}
 			else
-- 
cgit v1.2.3


From cb0dcc204dd8cd6015ffc25c19557b76cf213084 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Tue, 8 Mar 2011 23:44:00 -0800
Subject: STORM-987 : Add --logmetrics and --analyzeperformance arguments,
 moved analyzeMetricPerformanceLog() and doAnalysisMetrics() from
 LLFastTimerView to LLMetricPerformanceTesterBasic

---
 .../llimage_libtest/llimage_libtest.cpp            | 89 +++++++++++++++++++++-
 indra/llcommon/llmetricperformancetester.cpp       | 71 +++++++++++++++++
 indra/llcommon/llmetricperformancetester.h         |  3 +
 indra/newview/llfasttimerview.cpp                  | 74 +-----------------
 indra/newview/llfasttimerview.h                    |  2 -
 5 files changed, 162 insertions(+), 77 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
index 4104527f83..2442313ef2 100644
--- a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
@@ -26,6 +26,7 @@
  */
 #include "linden_common.h"
 #include "llpointer.h"
+#include "lltimer.h"
 
 #include "llimage_libtest.h"
 
@@ -49,8 +50,13 @@ static const char USAGE[] = "\n"
 " --in <file1 .. file2>            list of image files to load and convert, patterns can be used\n"
 " --out <file1 .. file2> OR <type> list of image files to create (assumes same order as --in files)\n"
 "                                  OR 3 letters file type extension to convert each input file into\n"
+" --logmetrics <metric>            log performance metric and data for <metric>\n"
+" --analyzeperformance             create report comparing baseline with current for <metric> provided in --logmetrics\n"
 "\n";
 
+// true when all image loading is done. Used by metric logging thread to know when to stop the thread.
+static bool sAllDone = false;
+
 // Create an empty formatted image instance of the correct type from the filename
 LLPointer<LLImageFormatted> create_image(const std::string &filename)
 {
@@ -202,15 +208,43 @@ void store_output_file(std::list<std::string> &output_filenames, std::list<std::
 	}
 }
 
+// Holds the metric gathering output in a thread safe way
+class LogThread : public LLThread
+{
+public:
+	std::string mFile;
+
+	LogThread(std::string& test_name) : LLThread("llimage_libtest log")
+	{
+		std::string file_name = test_name + std::string(".slp");
+		mFile = file_name;
+	}
+		
+	void run()
+	{
+		std::ofstream os(mFile.c_str());
+			
+		while (!sAllDone)
+		{
+			LLFastTimer::writeLog(os);
+			os.flush();
+			ms_sleep(32);
+		}
+		os.close();
+	}		
+};
+
 int main(int argc, char** argv)
 {
 	// List of input and output files
 	std::list<std::string> input_filenames;
 	std::list<std::string> output_filenames;
+	bool analyze_performance = false;
 
 	// Init whatever is necessary
 	ll_init_apr();
 	LLImage::initClass();
+	LogThread* fast_timer_log_thread = NULL;	// For performance and metric gathering
 
 	// Analyze command line arguments
 	for (int arg = 1; arg < argc; ++arg)
@@ -246,7 +280,34 @@ int main(int argc, char** argv)
 					break;
 				file_name = argv[arg+1];	// Next argument and loop over
 			}
-		}		
+		}
+		else if (!strcmp(argv[arg], "--logmetrics"))
+		{
+			// '--logmetrics' needs to be specified with a named test metric argument
+			// Note: for the moment, only ImageCompressionTester has been tested
+			std::string test_name;
+			if ((arg + 1) < argc)
+			{
+				test_name = argv[arg+1];
+			}
+			if (((arg + 1) >= argc) || (test_name[0] == '-'))
+			{
+				// We don't have an argument left in the arg list or the next argument is another option
+				std::cout << "No --logmetrics argument given, no perf data will be gathered" << std::endl;
+			}
+			else
+			{
+				LLFastTimer::sMetricLog = TRUE;
+				LLFastTimer::sLogName = test_name;
+				arg += 1;					// Skip that arg now we know it's a valid test name
+				if ((arg + 1) == argc)		// Break out of the loop if we reach the end of the arg list
+					break;
+			}
+		}
+		else if (!strcmp(argv[arg], "--analyzeperformance"))
+		{
+			analyze_performance = true;
+		}
 	}
 		
 	// Analyze the list of (input,output) files
@@ -256,6 +317,14 @@ int main(int argc, char** argv)
 		return 0;
 	}
 
+	// Create the logging thread if required
+	if (LLFastTimer::sMetricLog)
+	{
+		LLFastTimer::sLogLock = new LLMutex(NULL);
+		fast_timer_log_thread = new LogThread(LLFastTimer::sLogName);
+		fast_timer_log_thread->start();
+	}
+	
 	// Perform action on each input file
 	std::list<std::string>::iterator in_file  = input_filenames.begin();
 	std::list<std::string>::iterator out_file = output_filenames.begin();
@@ -288,10 +357,26 @@ int main(int argc, char** argv)
 		// Output stats on each file
 	}
 	
-	// Output perf data if required by user
+	sAllDone = true;
+	
+	// Output perf data if requested by user
+	if (analyze_performance)
+	{
+		std::cout << "Analyzing performance" << std::endl;
+		
+		std::string baseline_name = LLFastTimer::sLogName + "_baseline.slp";
+		std::string current_name  = LLFastTimer::sLogName + ".slp"; 
+		std::string report_name   = LLFastTimer::sLogName + "_report.csv";
+		
+		LLMetricPerformanceTesterBasic::doAnalysisMetrics(baseline_name, current_name, report_name);
+	}
 	
 	// Cleanup and exit
 	LLImage::cleanupClass();
+	if (fast_timer_log_thread)
+	{
+		fast_timer_log_thread->shutdown();
+	}
 	
 	return 0;
 }
diff --git a/indra/llcommon/llmetricperformancetester.cpp b/indra/llcommon/llmetricperformancetester.cpp
index 5fa3a5ea07..1f1c633909 100644
--- a/indra/llcommon/llmetricperformancetester.cpp
+++ b/indra/llcommon/llmetricperformancetester.cpp
@@ -83,7 +83,78 @@ BOOL LLMetricPerformanceTesterBasic::isMetricLogRequested(std::string name)
 	return (LLFastTimer::sMetricLog && ((LLFastTimer::sLogName == name) || (LLFastTimer::sLogName == DEFAULT_METRIC_NAME)));
 }
 
+/*static*/ 
+LLSD LLMetricPerformanceTesterBasic::analyzeMetricPerformanceLog(std::istream& is)
+{
+	LLSD ret;
+	LLSD cur;
+	
+	while (!is.eof() && LLSDSerialize::fromXML(cur, is))
+	{
+		for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter)
+		{
+			std::string label = iter->first;
+			
+			LLMetricPerformanceTesterBasic* tester = LLMetricPerformanceTesterBasic::getTester(iter->second["Name"].asString()) ;
+			if(tester)
+			{
+				ret[label]["Name"] = iter->second["Name"] ;
+				
+				S32 num_of_metrics = tester->getNumberOfMetrics() ;
+				for(S32 index = 0 ; index < num_of_metrics ; index++)
+				{
+					ret[label][ tester->getMetricName(index) ] = iter->second[ tester->getMetricName(index) ] ;
+				}
+			}
+		}
+	}
+	
+	return ret;
+}
+
+/*static*/ 
+void LLMetricPerformanceTesterBasic::doAnalysisMetrics(std::string baseline, std::string target, std::string output)
+{
+	if(!LLMetricPerformanceTesterBasic::hasMetricPerformanceTesters())
+	{
+		return ;
+	}
+	
+	// Open baseline and current target, exit if one is inexistent
+	std::ifstream base_is(baseline.c_str());
+	std::ifstream target_is(target.c_str());
+	if (!base_is.is_open() || !target_is.is_open())
+	{
+		llwarns << "'-analyzeperformance' error : baseline or current target file inexistent" << llendl;
+		base_is.close();
+		target_is.close();
+		return;
+	}
+	
+	//analyze baseline
+	LLSD base = analyzeMetricPerformanceLog(base_is);
+	base_is.close();
+	
+	//analyze current
+	LLSD current = analyzeMetricPerformanceLog(target_is);
+	target_is.close();
 	
+	//output comparision
+	std::ofstream os(output.c_str());
+	
+	os << "Label, Metric, Base(B), Target(T), Diff(T-B), Percentage(100*T/B)\n"; 
+	for(LLMetricPerformanceTesterBasic::name_tester_map_t::iterator iter = LLMetricPerformanceTesterBasic::sTesterMap.begin() ; 
+		iter != LLMetricPerformanceTesterBasic::sTesterMap.end() ; ++iter)
+	{
+		LLMetricPerformanceTesterBasic* tester = ((LLMetricPerformanceTesterBasic*)iter->second) ;	
+		tester->analyzePerformance(&os, &base, &current) ;
+	}
+	
+	os.flush();
+	os.close();
+}
+
+
 //----------------------------------------------------------------------------------------------
 // LLMetricPerformanceTesterBasic : Tester instance methods
 //----------------------------------------------------------------------------------------------
diff --git a/indra/llcommon/llmetricperformancetester.h b/indra/llcommon/llmetricperformancetester.h
index 1372f48dcf..b790b636a7 100644
--- a/indra/llcommon/llmetricperformancetester.h
+++ b/indra/llcommon/llmetricperformancetester.h
@@ -62,6 +62,8 @@ public:
 	 */
 	virtual void analyzePerformance(std::ofstream* os, LLSD* base, LLSD* current) ;
 
+	static void doAnalysisMetrics(std::string baseline, std::string target, std::string output) ;
+
 	/**
 	 * @return Returns the number of the test metrics in this tester instance.
 	 */
@@ -116,6 +118,7 @@ protected:
 private:
 	void preOutputTestResults(LLSD* sd) ;
 	void postOutputTestResults(LLSD* sd) ;
+	static LLSD analyzeMetricPerformanceLog(std::istream& is) ;
 
 	std::string mName ;							// Name of this tester instance
 	S32 mCount ;								// Current record count
diff --git a/indra/newview/llfasttimerview.cpp b/indra/newview/llfasttimerview.cpp
index 92a3b9b2f5..279904b740 100644
--- a/indra/newview/llfasttimerview.cpp
+++ b/indra/newview/llfasttimerview.cpp
@@ -1149,36 +1149,6 @@ void LLFastTimerView::doAnalysisDefault(std::string baseline, std::string target
 	os.close();
 }
 
-//-------------------------
-//static
-LLSD LLFastTimerView::analyzeMetricPerformanceLog(std::istream& is)
-{
-	LLSD ret;
-	LLSD cur;
-
-	while (!is.eof() && LLSDSerialize::fromXML(cur, is))
-	{
-		for (LLSD::map_iterator iter = cur.beginMap(); iter != cur.endMap(); ++iter)
-		{
-			std::string label = iter->first;
-
-			LLMetricPerformanceTesterBasic* tester = LLMetricPerformanceTesterBasic::getTester(iter->second["Name"].asString()) ;
-			if(tester)
-			{
-				ret[label]["Name"] = iter->second["Name"] ;
-
-				S32 num_of_metrics = tester->getNumberOfMetrics() ;
-				for(S32 index = 0 ; index < num_of_metrics ; index++)
-				{
-					ret[label][ tester->getMetricName(index) ] = iter->second[ tester->getMetricName(index) ] ;
-				}
-			}
-		}
-	}
-		
-	return ret;
-}
-
 //static
 void LLFastTimerView::outputAllMetrics()
 {
@@ -1193,48 +1163,6 @@ void LLFastTimerView::outputAllMetrics()
 	}
 }
 
-//static
-void LLFastTimerView::doAnalysisMetrics(std::string baseline, std::string target, std::string output)
-{
-	if(!LLMetricPerformanceTesterBasic::hasMetricPerformanceTesters())
-	{
-		return ;
-	}
-
-	// Open baseline and current target, exit if one is inexistent
-	std::ifstream base_is(baseline.c_str());
-	std::ifstream target_is(target.c_str());
-	if (!base_is.is_open() || !target_is.is_open())
-	{
-		llwarns << "'-analyzeperformance' error : baseline or current target file inexistent" << llendl;
-		base_is.close();
-		target_is.close();
-		return;
-	}
-
-	//analyze baseline
-	LLSD base = analyzeMetricPerformanceLog(base_is);
-	base_is.close();
-
-	//analyze current
-	LLSD current = analyzeMetricPerformanceLog(target_is);
-	target_is.close();
-
-	//output comparision
-	std::ofstream os(output.c_str());
-	
-	os << "Label, Metric, Base(B), Target(T), Diff(T-B), Percentage(100*T/B)\n"; 
-	for(LLMetricPerformanceTesterBasic::name_tester_map_t::iterator iter = LLMetricPerformanceTesterBasic::sTesterMap.begin() ; 
-		iter != LLMetricPerformanceTesterBasic::sTesterMap.end() ; ++iter)
-	{
-		LLMetricPerformanceTesterBasic* tester = ((LLMetricPerformanceTesterBasic*)iter->second) ;	
-		tester->analyzePerformance(&os, &base, &current) ;
-	}
-	
-	os.flush();
-	os.close();
-}
-
 //static
 void LLFastTimerView::doAnalysis(std::string baseline, std::string target, std::string output)
 {
@@ -1246,7 +1174,7 @@ void LLFastTimerView::doAnalysis(std::string baseline, std::string target, std::
 
 	if(LLFastTimer::sMetricLog)
 	{
-		doAnalysisMetrics(baseline, target, output) ;
+		LLMetricPerformanceTesterBasic::doAnalysisMetrics(baseline, target, output) ;
 		return ;
 	}
 }
diff --git a/indra/newview/llfasttimerview.h b/indra/newview/llfasttimerview.h
index 1a54a53f09..b40d7ffc1a 100644
--- a/indra/newview/llfasttimerview.h
+++ b/indra/newview/llfasttimerview.h
@@ -42,8 +42,6 @@ public:
 
 private:
 	static void doAnalysisDefault(std::string baseline, std::string target, std::string output) ;
-	static void doAnalysisMetrics(std::string baseline, std::string target, std::string output) ;
-	static LLSD analyzeMetricPerformanceLog(std::istream& is) ;
 	static LLSD analyzePerformanceLogDefault(std::istream& is) ;
 
 public:
-- 
cgit v1.2.3


From 7f42c02cad9dbd068bc49bed4b6cd18fd8fff606 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Wed, 9 Mar 2011 20:54:59 -0800
Subject: STORM-987 : Add the --image-stats argument, make argument passing
 more consistent, fix typos in comments in llimage header

---
 .../llimage_libtest/llimage_libtest.cpp            | 66 ++++++++++++++++------
 indra/llimage/llimage.h                            |  4 +-
 2 files changed, 51 insertions(+), 19 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
index 2442313ef2..e4376dd745 100644
--- a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
@@ -46,12 +46,19 @@
 static const char USAGE[] = "\n"
 "usage:\tllimage_libtest [options]\n"
 "\n"
-" --help                           print this help\n"
-" --in <file1 .. file2>            list of image files to load and convert, patterns can be used\n"
-" --out <file1 .. file2> OR <type> list of image files to create (assumes same order as --in files)\n"
-"                                  OR 3 letters file type extension to convert each input file into\n"
-" --logmetrics <metric>            log performance metric and data for <metric>\n"
-" --analyzeperformance             create report comparing baseline with current for <metric> provided in --logmetrics\n"
+" -h, --help\n"
+"        Print this help\n"
+" -i, --input <file1 .. file2>\n"
+"        List of image files to load and convert, patterns can be used\n"
+" -o, --output <file1 .. file2> OR <type>\n"
+"        List of image files to create (assumes same order as for input files)\n"
+"        OR 3 letters file type extension to convert each input file into\n"
+" -log, --logmetrics <metric>\n"
+"        Log performance metric and data for <metric>\n"
+" -r, --analyzeperformance\n"
+"        Create report comparing baseline with current for <metric> provided in --logmetrics\n"
+" -s, --image-stats\n"
+"        Output stats for each input and output image\n"
 "\n";
 
 // true when all image loading is done. Used by metric logging thread to know when to stop the thread.
@@ -88,8 +95,20 @@ LLPointer<LLImageFormatted> create_image(const std::string &filename)
 	return image;
 }
 
+void output_image_stats(LLPointer<LLImageFormatted> image, const std::string &filename)
+{
+	// Print out some statistical data on the image
+	std::cout << "Image stats for : " << filename << ", extension : " << image->getExtension() << std::endl;
+
+	std::cout << "    with : " << (int)(image->getWidth())       << ", height : " << (int)(image->getHeight())       << std::endl;
+	std::cout << "    comp : " << (int)(image->getComponents())  << ", levels : " << (int)(image->getDiscardLevel()) << std::endl;
+	std::cout << "    head : " << (int)(image->calcHeaderSize()) << ",   data : " << (int)(image->getDataSize())     << std::endl;
+
+	return;
+}
+
 // Load an image from file and return a raw (decompressed) instance of its data
-LLPointer<LLImageRaw> load_image(const std::string &src_filename)
+LLPointer<LLImageRaw> load_image(const std::string &src_filename, bool output_stats)
 {
 	LLPointer<LLImageFormatted> image = create_image(src_filename);
 
@@ -104,6 +123,11 @@ LLPointer<LLImageRaw> load_image(const std::string &src_filename)
 		return NULL;
 	}
 	
+	if (output_stats)
+	{
+		output_image_stats(image, src_filename);
+	}
+	
 	LLPointer<LLImageRaw> raw_image = new LLImageRaw;
 	if (!image->decode(raw_image, 0.0f))
 	{
@@ -114,7 +138,7 @@ LLPointer<LLImageRaw> load_image(const std::string &src_filename)
 }
 
 // Save a raw image instance into a file
-bool save_image(const std::string &dest_filename, LLPointer<LLImageRaw> raw_image)
+bool save_image(const std::string &dest_filename, LLPointer<LLImageRaw> raw_image, bool output_stats)
 {
 	LLPointer<LLImageFormatted> image = create_image(dest_filename);
 	
@@ -123,6 +147,11 @@ bool save_image(const std::string &dest_filename, LLPointer<LLImageRaw> raw_imag
 		return false;
 	}
 	
+	if (output_stats)
+	{
+		output_image_stats(image, dest_filename);
+	}
+
 	return image->save(dest_filename);
 }
 
@@ -240,6 +269,7 @@ int main(int argc, char** argv)
 	std::list<std::string> input_filenames;
 	std::list<std::string> output_filenames;
 	bool analyze_performance = false;
+	bool image_stats = false;
 
 	// Init whatever is necessary
 	ll_init_apr();
@@ -249,13 +279,13 @@ int main(int argc, char** argv)
 	// Analyze command line arguments
 	for (int arg = 1; arg < argc; ++arg)
 	{
-		if (!strcmp(argv[arg], "--help"))
+		if (!strcmp(argv[arg], "--help") || !strcmp(argv[arg], "-h"))
 		{
             // Send the usage to standard out
             std::cout << USAGE << std::endl;
 			return 0;
 		}
-		else if (!strcmp(argv[arg], "--in") && arg < argc-1)
+		else if ((!strcmp(argv[arg], "--input") || !strcmp(argv[arg], "-i")) && arg < argc-1)
 		{
 			std::string file_name = argv[arg+1];
 			while (file_name[0] != '-')		// if arg starts with '-', we consider it's not a file name but some other argument
@@ -268,7 +298,7 @@ int main(int argc, char** argv)
 				file_name = argv[arg+1];	// Next argument and loop over
 			}
 		}
-		else if (!strcmp(argv[arg], "--out") && arg < argc-1)
+		else if ((!strcmp(argv[arg], "--output") || !strcmp(argv[arg], "-o")) && arg < argc-1)
 		{
 			std::string file_name = argv[arg+1];
 			while (file_name[0] != '-')		// if arg starts with '-', we consider it's not a file name but some other argument
@@ -281,7 +311,7 @@ int main(int argc, char** argv)
 				file_name = argv[arg+1];	// Next argument and loop over
 			}
 		}
-		else if (!strcmp(argv[arg], "--logmetrics"))
+		else if (!strcmp(argv[arg], "--logmetrics") || !strcmp(argv[arg], "-log"))
 		{
 			// '--logmetrics' needs to be specified with a named test metric argument
 			// Note: for the moment, only ImageCompressionTester has been tested
@@ -304,10 +334,14 @@ int main(int argc, char** argv)
 					break;
 			}
 		}
-		else if (!strcmp(argv[arg], "--analyzeperformance"))
+		else if (!strcmp(argv[arg], "--analyzeperformance") || !strcmp(argv[arg], "-r"))
 		{
 			analyze_performance = true;
 		}
+		else if (!strcmp(argv[arg], "--image-stats") || !strcmp(argv[arg], "-s"))
+		{
+			image_stats = true;
+		}
 	}
 		
 	// Analyze the list of (input,output) files
@@ -333,7 +367,7 @@ int main(int argc, char** argv)
 	for (; in_file != in_end; ++in_file)
 	{
 		// Load file
-		LLPointer<LLImageRaw> raw_image = load_image(*in_file);
+		LLPointer<LLImageRaw> raw_image = load_image(*in_file, image_stats);
 		if (!raw_image)
 		{
 			std::cout << "Error: Image " << *in_file << " could not be loaded" << std::endl;
@@ -343,7 +377,7 @@ int main(int argc, char** argv)
 		// Save file
 		if (out_file != out_end)
 		{
-			if (!save_image(*out_file, raw_image))
+			if (!save_image(*out_file, raw_image, image_stats))
 			{
 				std::cout << "Error: Image " << *out_file << " could not be saved" << std::endl;
 			}
@@ -353,8 +387,6 @@ int main(int argc, char** argv)
 			}
 			++out_file;
 		}
-
-		// Output stats on each file
 	}
 	
 	sAllDone = true;
diff --git a/indra/llimage/llimage.h b/indra/llimage/llimage.h
index 825b9aab1a..18444f3934 100644
--- a/indra/llimage/llimage.h
+++ b/indra/llimage/llimage.h
@@ -266,13 +266,13 @@ public:
 	// subclasses must return a prefered file extension (lowercase without a leading dot)
 	virtual std::string getExtension() = 0;
 	// calcHeaderSize() returns the maximum size of header;
-	//   0 indicates we don't know have a header and have to lead the entire file
+	//   0 indicates we don't have a header and have to read the entire file
 	virtual S32 calcHeaderSize() { return 0; };
 	// calcDataSize() returns how many bytes to read to load discard_level (including header)
 	virtual S32 calcDataSize(S32 discard_level);
 	// calcDiscardLevelBytes() returns the smallest valid discard level based on the number of input bytes
 	virtual S32 calcDiscardLevelBytes(S32 bytes);
-	// getRawDiscardLevel()by default returns mDiscardLevel, but may be overridden (LLImageJ2C)
+	// getRawDiscardLevel() by default returns mDiscardLevel, but may be overridden (LLImageJ2C)
 	virtual S8  getRawDiscardLevel() { return mDiscardLevel; }
 	
 	BOOL load(const std::string& filename);
-- 
cgit v1.2.3


From c2e88db89a8ba111efd0c1b61cc8dec400a007cb Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Thu, 10 Mar 2011 22:02:49 -0800
Subject: STORM-987 : Took Vadim's comment into account: check arguments
 consistency, make sure remaining perf data are flushed on exit.

---
 .../llimage_libtest/llimage_libtest.cpp            | 31 ++++++++++++++++------
 indra/llcommon/llmetricperformancetester.cpp       | 13 ++++++++-
 indra/llcommon/llmetricperformancetester.h         |  6 +++++
 indra/llimage/llimagej2c.cpp                       |  1 +
 4 files changed, 42 insertions(+), 9 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
index e4376dd745..2a1a2ae843 100644
--- a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
@@ -49,16 +49,18 @@ static const char USAGE[] = "\n"
 " -h, --help\n"
 "        Print this help\n"
 " -i, --input <file1 .. file2>\n"
-"        List of image files to load and convert, patterns can be used\n"
+"        List of image files to load and convert. Patterns with wild cards can be used.\n"
 " -o, --output <file1 .. file2> OR <type>\n"
 "        List of image files to create (assumes same order as for input files)\n"
-"        OR 3 letters file type extension to convert each input file into\n"
+"        OR 3 letters file type extension to convert each input file into.\n"
 " -log, --logmetrics <metric>\n"
-"        Log performance metric and data for <metric>\n"
+"        Log performance data for <metric>. Results in <metric>.slp\n"
+"        Note: so far, only ImageCompressionTester has been tested.\n"
 " -r, --analyzeperformance\n"
-"        Create report comparing baseline with current for <metric> provided in --logmetrics\n"
+"        Create a report comparing <metric>_baseline.slp with current <metric>.slp\n"
+"        Results in <metric>_report.csv"
 " -s, --image-stats\n"
-"        Output stats for each input and output image\n"
+"        Output stats for each input and output image.\n"
 "\n";
 
 // true when all image loading is done. Used by metric logging thread to know when to stop the thread.
@@ -259,6 +261,8 @@ public:
 			os.flush();
 			ms_sleep(32);
 		}
+		LLFastTimer::writeLog(os);
+		os.flush();
 		os.close();
 	}		
 };
@@ -344,12 +348,18 @@ int main(int argc, char** argv)
 		}
 	}
 		
-	// Analyze the list of (input,output) files
+	// Check arguments consistency. Exit with proper message if inconsistent.
 	if (input_filenames.size() == 0)
 	{
 		std::cout << "No input file, nothing to do -> exit" << std::endl;
 		return 0;
 	}
+	if (analyze_performance && !LLFastTimer::sMetricLog)
+	{
+		std::cout << "Cannot create perf report if no perf gathered (i.e. use argument -log <perf> with -r) -> exit" << std::endl;
+		return 0;
+	}
+	
 
 	// Create the logging thread if required
 	if (LLFastTimer::sMetricLog)
@@ -388,8 +398,13 @@ int main(int argc, char** argv)
 			++out_file;
 		}
 	}
-	
-	sAllDone = true;
+
+	// Stop the perf gathering system if needed
+	if (LLFastTimer::sMetricLog)
+	{
+		LLMetricPerformanceTesterBasic::deleteTester(LLFastTimer::sLogName);
+		sAllDone = true;
+	}
 	
 	// Output perf data if requested by user
 	if (analyze_performance)
diff --git a/indra/llcommon/llmetricperformancetester.cpp b/indra/llcommon/llmetricperformancetester.cpp
index 1f1c633909..41d3eb0bf3 100644
--- a/indra/llcommon/llmetricperformancetester.cpp
+++ b/indra/llcommon/llmetricperformancetester.cpp
@@ -63,7 +63,18 @@ BOOL LLMetricPerformanceTesterBasic::addTester(LLMetricPerformanceTesterBasic* t
 	sTesterMap.insert(std::make_pair(name, tester));
 	return TRUE;
 }
-	
+
+/*static*/ 
+void LLMetricPerformanceTesterBasic::deleteTester(std::string name)
+{
+	name_tester_map_t::iterator tester = sTesterMap.find(name);
+	if (tester != sTesterMap.end())
+	{
+		delete tester->second;
+		sTesterMap.erase(tester);
+	}
+}
+
 /*static*/ 
 LLMetricPerformanceTesterBasic* LLMetricPerformanceTesterBasic::getTester(std::string name) 
 {
diff --git a/indra/llcommon/llmetricperformancetester.h b/indra/llcommon/llmetricperformancetester.h
index b790b636a7..1a18cdf36f 100644
--- a/indra/llcommon/llmetricperformancetester.h
+++ b/indra/llcommon/llmetricperformancetester.h
@@ -137,6 +137,12 @@ public:
 	 */
 	static LLMetricPerformanceTesterBasic* getTester(std::string name) ;
 	
+	/**
+	 * @return Delete the named tester from the list 
+	 * @param[in] name - Name of the tester instance to delete.
+	 */
+	static void deleteTester(std::string name);
+
 	/**
 	 * @return Returns TRUE if that metric *or* the default catch all metric has been requested to be logged
 	 * @param[in] name - Name of the tester queried.
diff --git a/indra/llimage/llimagej2c.cpp b/indra/llimage/llimagej2c.cpp
index cb2a85fa91..80fec7f8a0 100644
--- a/indra/llimage/llimagej2c.cpp
+++ b/indra/llimage/llimagej2c.cpp
@@ -474,6 +474,7 @@ LLImageCompressionTester::LLImageCompressionTester() : LLMetricPerformanceTester
 
 LLImageCompressionTester::~LLImageCompressionTester()
 {
+	outputTestResults();
 	LLImageJ2C::sTesterp = NULL;
 }
 
-- 
cgit v1.2.3


From 834d0f1ed612c8644e642103096daf7f0b0f44c9 Mon Sep 17 00:00:00 2001
From: Jonathan Yap <none@none>
Date: Sat, 12 Mar 2011 11:43:20 -0500
Subject: STORM-1019 Fixed problem with beacon message display and changed
 beacon message order to corresponed with menu order per Ardy Lay's suggestion

---
 indra/newview/llviewerwindow.cpp | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp
index 031fc05619..37bdf4dd0b 100644
--- a/indra/newview/llviewerwindow.cpp
+++ b/indra/newview/llviewerwindow.cpp
@@ -564,29 +564,33 @@ public:
 		// only display these messages if we are actually rendering beacons at this moment
 		if (LLPipeline::getRenderBeacons(NULL) && LLFloaterReg::instanceVisible("beacons"))
 		{
-			if (LLPipeline::getRenderParticleBeacons(NULL))
+			if (LLPipeline::getRenderMOAPBeacons(NULL))
 			{
-				addText(xpos, ypos, "Viewing particle beacons (blue)");
+				addText(xpos, ypos, "Viewing media beacons (white)");
 				ypos += y_inc;
 			}
+
 			if (LLPipeline::toggleRenderTypeControlNegated((void*)LLPipeline::RENDER_TYPE_PARTICLES))
 			{
 				addText(xpos, ypos, "Hiding particles");
 				ypos += y_inc;
 			}
-			if (LLPipeline::getRenderPhysicalBeacons(NULL))
+
+			if (LLPipeline::getRenderParticleBeacons(NULL))
 			{
-				addText(xpos, ypos, "Viewing physical object beacons (green)");
+				addText(xpos, ypos, "Viewing particle beacons (blue)");
 				ypos += y_inc;
 			}
-			if (LLPipeline::getRenderScriptedBeacons(NULL))
+
+			if (LLPipeline::getRenderSoundBeacons(NULL))
 			{
-				addText(xpos, ypos, "Viewing scripted object beacons (red)");
+				addText(xpos, ypos, "Viewing sound beacons (yellow)");
 				ypos += y_inc;
 			}
-			if (LLPipeline::getRenderMOAPBeacons(NULL))
+
+			if (LLPipeline::getRenderScriptedBeacons(NULL))
 			{
-				addText(xpos, ypos, "Viewing media beacons (white)");
+				addText(xpos, ypos, "Viewing scripted object beacons (red)");
 				ypos += y_inc;
 			}
 			else
@@ -595,9 +599,10 @@ public:
 					addText(xpos, ypos, "Viewing scripted object with touch function beacons (red)");
 					ypos += y_inc;
 				}
-			if (LLPipeline::getRenderSoundBeacons(NULL))
+
+			if (LLPipeline::getRenderPhysicalBeacons(NULL))
 			{
-				addText(xpos, ypos, "Viewing sound beacons (yellow)");
+				addText(xpos, ypos, "Viewing physical object beacons (green)");
 				ypos += y_inc;
 			}
 		}
-- 
cgit v1.2.3


From d9015a836f59c228818dc85e37ef4807b2d1b181 Mon Sep 17 00:00:00 2001
From: Jonathan Yap <none@none>
Date: Wed, 16 Mar 2011 18:32:28 -0400
Subject: STORM-1077 Change "Voice Enabled/Disabled" to "Speak Button"

---
 indra/newview/app_settings/ignorable_dialogs.xml       | 14 ++++++++++++--
 indra/newview/llbottomtray.cpp                         |  9 ++++++++-
 indra/newview/llfirstuse.cpp                           |  6 ++++++
 indra/newview/llfirstuse.h                             |  3 +++
 indra/newview/skins/default/xui/en/menu_bottomtray.xml |  2 +-
 indra/newview/skins/default/xui/en/notifications.xml   | 14 ++++++++++++++
 6 files changed, 44 insertions(+), 4 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml
index 89fd4e5935..f6f4d5faa4 100644
--- a/indra/newview/app_settings/ignorable_dialogs.xml
+++ b/indra/newview/app_settings/ignorable_dialogs.xml
@@ -122,7 +122,17 @@
       <key>Value</key>
       <integer>1</integer>
     </map>
-
+    <key>FirstSpeak</key>
+    <map>
+      <key>Comment</key>
+      <string>Shows hint for Speak button</string>
+      <key>Persist</key>
+      <integer>1</integer>
+      <key>Type</key>
+      <string>Boolean</string>
+      <key>Value</key>
+      <integer>1</integer>
+    </map>
     <key>FirstSit</key>
     <map>
       <key>Comment</key>
@@ -132,7 +142,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>1</integer>
+      <integer>0</integer>
     </map>
     <key>AboutDirectX9</key>
     <map>
diff --git a/indra/newview/llbottomtray.cpp b/indra/newview/llbottomtray.cpp
index d8ec4b605c..2dfd2ba492 100644
--- a/indra/newview/llbottomtray.cpp
+++ b/indra/newview/llbottomtray.cpp
@@ -52,6 +52,7 @@
 
 #include "llviewerwindow.h"
 #include "llsdserialize.h"
+#include "llfirstuse.h"
 
 // Distance from mouse down on which drag'n'drop should be started.
 #define DRAG_START_DISTANCE 3
@@ -378,7 +379,12 @@ void LLBottomTray::onChange(EStatusType status, const std::string &channelURI, b
 	// skipped to avoid button blinking
 	if (status != STATUS_JOINING && status!= STATUS_LEFT_CHANNEL)
 	{
-		mSpeakBtn->setFlyoutBtnEnabled(LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking());
+		bool voice_status = LLVoiceClient::getInstance()->voiceEnabled() && LLVoiceClient::getInstance()->isVoiceWorking();
+		mSpeakBtn->setFlyoutBtnEnabled(voice_status);
+		if (voice_status)
+		{
+			LLFirstUse::speak(true);
+		}
 	}
 }
 
@@ -562,6 +568,7 @@ BOOL LLBottomTray::postBuild()
 
 	mSpeakPanel = getChild<LLPanel>("speak_panel");
 	mSpeakBtn = getChild<LLSpeakButton>("talk");
+	LLHints::registerHintTarget("speak_btn", mSpeakBtn->getHandle());
 
 	// Both parts of speak button should be initially disabled because
 	// it takes some time between logging in to world and connecting to voice channel.
diff --git a/indra/newview/llfirstuse.cpp b/indra/newview/llfirstuse.cpp
index 4d252dc662..dd6d7f1b33 100644
--- a/indra/newview/llfirstuse.cpp
+++ b/indra/newview/llfirstuse.cpp
@@ -78,6 +78,12 @@ void LLFirstUse::otherAvatarChatFirst(bool enable)
 	firstUseNotification("FirstOtherChatBeforeUser", enable, "HintChat", LLSD(), LLSD().with("target", "chat_bar").with("direction", "top_right").with("distance", 24));
 }
 
+// static
+void LLFirstUse::speak(bool enable)
+{
+	firstUseNotification("FirstSpeak", enable, "HintSpeak", LLSD(), LLSD().with("target", "speak_btn").with("direction", "top"));
+}
+
 // static
 void LLFirstUse::sit(bool enable)
 {
diff --git a/indra/newview/llfirstuse.h b/indra/newview/llfirstuse.h
index 489f58626a..dff5483354 100644
--- a/indra/newview/llfirstuse.h
+++ b/indra/newview/llfirstuse.h
@@ -68,6 +68,8 @@ object or from inventory.
 13. First time you open the debug menus (ctrl-alt-shift D)
 
 14. First time you create/edit a sculpted prim.
+
+15. Explanation of Speak&flyout buttons.
 */
 
 class LLNotification;
@@ -85,6 +87,7 @@ public:
 	//static void resetFirstUse();
 
 	static void otherAvatarChatFirst(bool enable = true);
+	static void speak(bool enable = true);
 	static void sit(bool enable = true);
 	static void notUsingDestinationGuide(bool enable = true);
 	static void notUsingAvatarPicker(bool enable = true);
diff --git a/indra/newview/skins/default/xui/en/menu_bottomtray.xml b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
index 1b55fa4fd3..63bfd39e29 100644
--- a/indra/newview/skins/default/xui/en/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
@@ -9,7 +9,7 @@
  visible="false"
  width="128">
     <menu_item_check
-         label="Voice Enabled"
+         label="Speak Button"
          layout="topleft"
          name="EnableVoiceChat">
            <menu_item_check.on_click
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index f008042a81..85b8cac944 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -6606,6 +6606,20 @@ Mute everyone?
     To stand up and exit the sitting position, click the Stand button.
   </notification>
 
+  <notification
+  name="HintSpeak"
+  label="Speak"
+  type="hint"
+  unique="true">
+Click the Speak button to turn your microphone off and on.
+
+Your microphone is on by default.
+
+Click on the up arrow to see the voice control panel.
+
+Hiding the Speak button will disable the voice feature.
+  </notification>
+
   <notification
   name="HintDestinationGuide"
   label="Explore the World"
-- 
cgit v1.2.3


From dbeb78aee24bc2aa9c3cabd9b51b1bbed4131ef0 Mon Sep 17 00:00:00 2001
From: Jonathan Yap <none@none>
Date: Wed, 16 Mar 2011 18:34:59 -0400
Subject: STORM-1077 Fix setting for Sit hint, changed by accident during
 testing

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

(limited to 'indra')

diff --git a/indra/newview/app_settings/ignorable_dialogs.xml b/indra/newview/app_settings/ignorable_dialogs.xml
index f6f4d5faa4..17d3d3c9c5 100644
--- a/indra/newview/app_settings/ignorable_dialogs.xml
+++ b/indra/newview/app_settings/ignorable_dialogs.xml
@@ -142,7 +142,7 @@
       <key>Type</key>
       <string>Boolean</string>
       <key>Value</key>
-      <integer>0</integer>
+      <integer>1</integer>
     </map>
     <key>AboutDirectX9</key>
     <map>
-- 
cgit v1.2.3


From 39d83cb74f5978e926ff02dcb20a64802429bc69 Mon Sep 17 00:00:00 2001
From: Seth ProductEngine <slitovchuk@productengine.com>
Date: Fri, 18 Mar 2011 00:28:48 +0200
Subject: STORM-1086 FIXED Agent's own calling card created on startup is
 placed into Calling Cards folder. If there is an agent's calling card found
 within Calling Cards and sub-folders no more copies of this calling card are
 created.

---
 indra/newview/llfriendcard.cpp | 52 +++++++++++++++++++++++++++++-------------
 1 file changed, 36 insertions(+), 16 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llfriendcard.cpp b/indra/newview/llfriendcard.cpp
index 70e789f490..11401d6c68 100644
--- a/indra/newview/llfriendcard.cpp
+++ b/indra/newview/llfriendcard.cpp
@@ -95,6 +95,36 @@ const LLUUID& get_folder_uuid(const LLUUID& parentFolderUUID, LLInventoryCollect
 	return (cats_count >= 1) ? cats.get(0)->getUUID() : LLUUID::null;
 }
 
+/**
+ * Class LLFindAgentCallingCard
+ *
+ * An inventory collector functor for checking that agent's own calling card
+ * exists within the Calling Cards category and its sub-folders.
+ */
+class LLFindAgentCallingCard : public LLInventoryCollectFunctor
+{
+public:
+	LLFindAgentCallingCard() : mIsAgentCallingCardFound(false) {}
+	virtual ~LLFindAgentCallingCard() {}
+	virtual bool operator()(LLInventoryCategory* cat, LLInventoryItem* item);
+	bool isAgentCallingCardFound() { return mIsAgentCallingCardFound; }
+
+private:
+	bool mIsAgentCallingCardFound;
+};
+
+bool LLFindAgentCallingCard::operator()(LLInventoryCategory* cat, LLInventoryItem* item)
+{
+	if (mIsAgentCallingCardFound) return true;
+
+	if (item && item->getType() == LLAssetType::AT_CALLINGCARD && item->getCreatorUUID() == gAgentID)
+	{
+		mIsAgentCallingCardFound = true;
+	}
+
+	return mIsAgentCallingCardFound;
+}
+
 /**
  * Class for fetching initial friend cards data
  *
@@ -449,32 +479,22 @@ void LLFriendCardsManager::syncFriendsFolder()
 	LLAvatarTracker::instance().copyBuddyList(all_buddies);
 
 	// 1. Check if own calling card exists
+	const LLUUID calling_cards_folder_id = gInventory.findCategoryUUIDForType(LLFolderType::FT_CALLINGCARD);
+
 	LLInventoryModel::cat_array_t cats;
 	LLInventoryModel::item_array_t items;
-
-	LLUUID friends_all_folder_id = findFriendAllSubfolderUUIDImpl();
-	gInventory.collectDescendents(friends_all_folder_id, cats, items, LLInventoryModel::EXCLUDE_TRASH);
-
-	bool own_callingcard_found = false;
-	LLInventoryModel::item_array_t::const_iterator it;
-	for (it = items.begin(); it != items.end(); ++it)
-	{
-		if ((*it)->getCreatorUUID() == gAgentID)
-		{
-			own_callingcard_found = true;
-			break;
-		}
-	}
+	LLFindAgentCallingCard collector;
+	gInventory.collectDescendentsIf(calling_cards_folder_id, cats, items, LLInventoryModel::EXCLUDE_TRASH, collector);
 
 	// Create own calling card if it was not found in Friends/All folder
-	if (!own_callingcard_found)
+	if (!collector.isAgentCallingCardFound())
 	{
 		LLAvatarName av_name;
 		LLAvatarNameCache::get( gAgentID, &av_name );
 
 		create_inventory_item(gAgentID,
 							  gAgent.getSessionID(),
-							  friends_all_folder_id,
+							  calling_cards_folder_id,
 							  LLTransactionID::tnull,
 							  av_name.getCompleteName(),
 							  gAgentID.asString(),
-- 
cgit v1.2.3


From c2f34934e85779616fe129970831f31e0fb99348 Mon Sep 17 00:00:00 2001
From: Seth ProductEngine <slitovchuk@productengine.com>
Date: Tue, 22 Mar 2011 23:07:33 +0200
Subject: STORM-1097 FIXED opening the floater containing a detached side bar
 tab.

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

(limited to 'indra')

diff --git a/indra/newview/llsidetray.cpp b/indra/newview/llsidetray.cpp
index a9bb01ac70..fcd200d24a 100644
--- a/indra/newview/llsidetray.cpp
+++ b/indra/newview/llsidetray.cpp
@@ -686,7 +686,7 @@ LLPanel* LLSideTray::openChildPanel(LLSideTrayTab* tab, const std::string& panel
 		LLFloater* floater_tab = LLFloaterReg::getInstance("side_bar_tab", tab_name);
 		if (!floater_tab) return NULL;
 
-		floater_tab->openFloater(panel_name);
+		floater_tab->openFloater(tab_name);
 	}
 
 	LLSideTrayPanelContainer* container = dynamic_cast<LLSideTrayPanelContainer*>(view->getParent());
-- 
cgit v1.2.3


From f818d1a5a43d9dd5e580a798cf511c5052ac12db Mon Sep 17 00:00:00 2001
From: Jonathan Yap <none@none>
Date: Wed, 23 Mar 2011 20:48:53 -0400
Subject: STORM-1077 Eliminated separator bar between Speak Button and other
 menu entries.

---
 indra/newview/skins/default/xui/en/menu_bottomtray.xml | 1 -
 1 file changed, 1 deletion(-)

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/en/menu_bottomtray.xml b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
index 63bfd39e29..07dabe1909 100644
--- a/indra/newview/skins/default/xui/en/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/en/menu_bottomtray.xml
@@ -19,7 +19,6 @@
              function="CheckControl"
              parameter="EnableVoiceChat" />
     </menu_item_check>
-    <menu_item_separator/>
     <menu_item_check
          label="Gesture button"
          layout="topleft"
-- 
cgit v1.2.3


From aa628750eb4f465c328b272f7c2db3bc7b48d654 Mon Sep 17 00:00:00 2001
From: Jonathan Yap <none@none>
Date: Thu, 24 Mar 2011 12:07:47 -0400
Subject: STORM-1077 Change hint wording.  Disable hint if speak or flyout
 button is pressed.

---
 indra/newview/llcallfloater.cpp                      | 3 ++-
 indra/newview/llspeakbutton.cpp                      | 3 +++
 indra/newview/skins/default/xui/en/notifications.xml | 4 +---
 3 files changed, 6 insertions(+), 4 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llcallfloater.cpp b/indra/newview/llcallfloater.cpp
index 328c326278..945a760d05 100644
--- a/indra/newview/llcallfloater.cpp
+++ b/indra/newview/llcallfloater.cpp
@@ -50,6 +50,7 @@
 #include "llviewerwindow.h"
 #include "llvoicechannel.h"
 #include "llviewerparcelmgr.h"
+#include "llfirstuse.h"
 
 static void get_voice_participants_uuids(uuid_vec_t& speakers_uuids);
 void reshape_floater(LLCallFloater* floater, S32 delta_height);
@@ -170,13 +171,13 @@ BOOL LLCallFloater::postBuild()
 	updateTransparency(TT_ACTIVE); // force using active floater transparency (STORM-730)
 	
 	updateSession();
-
 	return TRUE;
 }
 
 // virtual
 void LLCallFloater::onOpen(const LLSD& /*key*/)
 {
+	LLFirstUse::speak(false);
 }
 
 // virtual
diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
index c76ecae4a2..81beb0155f 100644
--- a/indra/newview/llspeakbutton.cpp
+++ b/indra/newview/llspeakbutton.cpp
@@ -38,6 +38,7 @@
 #include "llspeakbutton.h"
 
 #include "llbottomtray.h"
+#include "llfirstuse.h"
 
 static LLDefaultChildRegistry::Register<LLSpeakButton> t1("talk_button");
 
@@ -176,10 +177,12 @@ void LLSpeakButton::onMouseDown_SpeakBtn()
 {
 	bool down = true;
 	LLVoiceClient::getInstance()->inputUserControlState(down); // this method knows/care about whether this translates into a toggle-to-talk or down-to-talk
+	LLFirstUse::speak(false);
 }
 void LLSpeakButton::onMouseUp_SpeakBtn()
 {
 	bool down = false;
 	LLVoiceClient::getInstance()->inputUserControlState(down);
+	LLFirstUse::speak(false);
 }
 
diff --git a/indra/newview/skins/default/xui/en/notifications.xml b/indra/newview/skins/default/xui/en/notifications.xml
index 85b8cac944..b478cf869e 100644
--- a/indra/newview/skins/default/xui/en/notifications.xml
+++ b/indra/newview/skins/default/xui/en/notifications.xml
@@ -6611,9 +6611,7 @@ Mute everyone?
   label="Speak"
   type="hint"
   unique="true">
-Click the Speak button to turn your microphone off and on.
-
-Your microphone is on by default.
+Click the Speak button to turn your microphone on and off.
 
 Click on the up arrow to see the voice control panel.
 
-- 
cgit v1.2.3


From 32012f9fd4e9a5cb37f3a91d79873b79b9e6531e Mon Sep 17 00:00:00 2001
From: Jonathan Yap <none@none>
Date: Thu, 24 Mar 2011 13:57:57 -0400
Subject: STORM-1077 Removed disabling speak hint on mouse up of speak button

---
 indra/newview/llspeakbutton.cpp | 1 -
 1 file changed, 1 deletion(-)

(limited to 'indra')

diff --git a/indra/newview/llspeakbutton.cpp b/indra/newview/llspeakbutton.cpp
index 81beb0155f..d52e0a6c86 100644
--- a/indra/newview/llspeakbutton.cpp
+++ b/indra/newview/llspeakbutton.cpp
@@ -183,6 +183,5 @@ void LLSpeakButton::onMouseUp_SpeakBtn()
 {
 	bool down = false;
 	LLVoiceClient::getInstance()->inputUserControlState(down);
-	LLFirstUse::speak(false);
 }
 
-- 
cgit v1.2.3


From 29bcedaf0256968ec48ed3c5791da4b4a23e42d1 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Fri, 25 Mar 2011 17:18:28 -0700
Subject: STORM-987 : Fix the creation of images in local dir

---
 indra/integration_tests/llimage_libtest/llimage_libtest.cpp | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

(limited to 'indra')

diff --git a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
index 2a1a2ae843..365f5f758c 100644
--- a/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
+++ b/indra/integration_tests/llimage_libtest/llimage_libtest.cpp
@@ -223,7 +223,15 @@ void store_output_file(std::list<std::string> &output_filenames, std::list<std::
 		{
 			dir = gDirUtilp->getDirName(*in_file);
 			name = gDirUtilp->getBaseFileName(*in_file,true);
-			std::string file_name = dir + delim + name + "." + exten;
+			std::string file_name;
+			if (!dir.empty())
+			{
+				file_name = dir + delim + name + "." + exten;
+			}
+			else
+			{
+				file_name = name + "." + exten;
+			}
 			output_filenames.push_back(file_name);
 		}
 	}
-- 
cgit v1.2.3


From 68a7f7c24168f03d72e6b20ff1dcfbd843879b5d Mon Sep 17 00:00:00 2001
From: Oz Linden <oz@lindenlab.com>
Date: Mon, 28 Mar 2011 08:56:07 -0400
Subject: increment viewer version to 2.6.3

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

(limited to 'indra')

diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h
index d22c879243..488ec5b239 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 = 6;
-const S32 LL_VERSION_PATCH = 2;
+const S32 LL_VERSION_PATCH = 3;
 const S32 LL_VERSION_BUILD = 0;
 
 const char * const LL_CHANNEL = "Second Life Developer";
-- 
cgit v1.2.3


From 7a34a037b95be5de46cd7547a93557f59dde746c Mon Sep 17 00:00:00 2001
From: eli_linden <eli@lindenlab.com>
Date: Mon, 28 Mar 2011 11:36:37 -0700
Subject: SOCIAL-703 FIX fix name attribute for translated files

---
 indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml | 2 +-
 indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml | 2 +-
 indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml | 2 +-
 indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
index 19264db598..443092319b 100644
--- a/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/minimal/xui/de/menu_inspect_self_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
+<toggleable_menu name="Self Pie">
 	<menu_item_call label="Hinsetzen" name="Sit Down Here"/>
 	<menu_item_call label="Aufstehen" name="Stand Up"/>
 	<menu_item_call label="Meine Freunde" name="Friends..."/>
diff --git a/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
index 6b76137114..1a49efb9d0 100644
--- a/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/minimal/xui/es/menu_inspect_self_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
+<toggleable_menu name="Self Pie">
 	<menu_item_call label="Sentarme" name="Sit Down Here"/>
 	<menu_item_call label="Levantarme" name="Stand Up"/>
 	<menu_item_call label="Mis amigos" name="Friends..."/>
diff --git a/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
index 7a79c00123..fd48aa4f7d 100644
--- a/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/minimal/xui/fr/menu_inspect_self_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
+<toggleable_menu name="Self Pie">
 	<menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
 	<menu_item_call label="Me lever" name="Stand Up"/>
 	<menu_item_call label="Mes amis" name="Friends..."/>
diff --git a/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml b/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
index e514d2f4f5..c1f27e765d 100644
--- a/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/minimal/xui/pt/menu_inspect_self_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<toggleable_menu name="Gear Menu">
+<toggleable_menu name="Self Pie">
 	<menu_item_call label="Sentar" name="Sit Down Here"/>
 	<menu_item_call label="Ficar de pé" name="Stand Up"/>
 	<menu_item_call label="Meus amigos" name="Friends..."/>
-- 
cgit v1.2.3


From 6b188b691bab75f4acd74cf89193d3ffc71a86a7 Mon Sep 17 00:00:00 2001
From: eli_linden <eli@lindenlab.com>
Date: Tue, 29 Mar 2011 11:15:04 -0700
Subject: INTL-34 WIP Set22 translations FR

---
 .../skins/default/xui/fr/floater_about_land.xml    |   8 +-
 indra/newview/skins/default/xui/fr/floater_map.xml |  27 +-
 .../newview/skins/default/xui/fr/floater_tools.xml |   2 +
 .../skins/default/xui/fr/menu_attachment_self.xml  |   2 +-
 .../skins/default/xui/fr/menu_avatar_self.xml      |   2 +-
 .../skins/default/xui/fr/menu_bottomtray.xml       |   2 +-
 .../default/xui/fr/menu_inspect_avatar_gear.xml    |   6 +-
 .../default/xui/fr/menu_inspect_self_gear.xml      |  39 ++-
 .../default/xui/fr/menu_inventory_gear_default.xml |   1 +
 indra/newview/skins/default/xui/fr/menu_object.xml |   4 +-
 .../default/xui/fr/menu_places_gear_folder.xml     |   5 +-
 .../default/xui/fr/menu_places_gear_landmark.xml   |   5 +-
 indra/newview/skins/default/xui/fr/menu_viewer.xml |   6 +-
 .../newview/skins/default/xui/fr/notifications.xml |  44 ++-
 indra/newview/skins/default/xui/fr/panel_login.xml |   7 +
 .../skins/default/xui/fr/panel_nearby_media.xml    |   2 +-
 .../newview/skins/default/xui/fr/panel_people.xml  |   2 +
 .../newview/skins/default/xui/fr/panel_profile.xml |   8 +-
 .../skins/default/xui/fr/panel_script_ed.xml       |   3 +
 indra/newview/skins/default/xui/fr/strings.xml     | 359 ++++++++++++++++++++-
 20 files changed, 464 insertions(+), 70 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/fr/floater_about_land.xml b/indra/newview/skins/default/xui/fr/floater_about_land.xml
index 6e6409725f..a33c0344f7 100644
--- a/indra/newview/skins/default/xui/fr/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml
@@ -248,7 +248,7 @@ ou divisé.
 			<text name="group_objects_text">
 				[COUNT]
 			</text>
-			<button label="Afficher" label_selected="Afficher" name="ShowGroup" />
+			<button label="Afficher" label_selected="Afficher" name="ShowGroup"/>
 			<button label="Retour" label_selected="Renvoyer..." name="ReturnGroup..." tool_tip="Renvoyer les objets à leurs propriétaires."/>
 			<text name="Owned by others:">
 				Appartenant à d&apos;autres :
@@ -336,7 +336,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 				Options du terrain :
 			</text>
 			<check_box label="Sécurisé (pas de dégâts)" name="check safe" tool_tip="Si cette option est cochée, le terrain est sécurisé et il n&apos;y pas de risques de dommages causés par des combats. Si elle est décochée, des dommages causés par les combats peuvent avoir lieu."/>
-			<check_box  label="Pas de bousculades" name="PushRestrictCheck" tool_tip="Empêche l&apos;utilisation de scripts causant des bousculades. Cette option est utile pour empêcher les comportements abusifs sur votre terrain."/>
+			<check_box label="Pas de bousculades" name="PushRestrictCheck" tool_tip="Empêche l&apos;utilisation de scripts causant des bousculades. Cette option est utile pour empêcher les comportements abusifs sur votre terrain."/>
 			<check_box label="Afficher le lieu dans la recherche (30 L$/semaine)" name="ShowDirectoryCheck" tool_tip="Afficher la parcelle dans les résultats de recherche"/>
 			<combo_box name="land category with adult">
 				<combo_box.item label="Toutes catégories" name="item0"/>
@@ -351,6 +351,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 				<combo_box.item label="Parcs et Nature" name="item9"/>
 				<combo_box.item label="Résidentiel" name="item10"/>
 				<combo_box.item label="Shopping" name="item11"/>
+				<combo_box.item label="Location" name="item13"/>
 				<combo_box.item label="Autre" name="item12"/>
 			</combo_box>
 			<combo_box name="land category">
@@ -365,6 +366,7 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche.
 				<combo_box.item label="Parcs et Nature" name="item9"/>
 				<combo_box.item label="Résidentiel" name="item10"/>
 				<combo_box.item label="Shopping" name="item11"/>
+				<combo_box.item label="Location" name="item13"/>
 				<combo_box.item label="Autre" name="item12"/>
 			</combo_box>
 			<check_box label="Contenu Modéré" name="MatureCheck" tool_tip=""/>
@@ -444,7 +446,7 @@ musique :
 				(défini par le domaine
 			</panel.string>
 			<panel.string name="allow_public_access">
-				Autoriser l&apos;accès public ([MATURITY])
+				Autoriser l&apos;accès public ([MATURITY]) (Remarque : des lignes d&apos;interdiction seront créées si cette case n&apos;est pas cochée)
 			</panel.string>
 			<panel.string name="estate_override">
 				Au moins une de ces options est définie au niveau du domaine.
diff --git a/indra/newview/skins/default/xui/fr/floater_map.xml b/indra/newview/skins/default/xui/fr/floater_map.xml
index 04afe89c7b..8675fb8ef9 100644
--- a/indra/newview/skins/default/xui/fr/floater_map.xml
+++ b/indra/newview/skins/default/xui/fr/floater_map.xml
@@ -1,32 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Map" title="">
-	<floater.string name="mini_map_north">
-		N
-	</floater.string>
-	<floater.string name="mini_map_east">
-		E
-	</floater.string>
-	<floater.string name="mini_map_west">
-		O
-	</floater.string>
-	<floater.string name="mini_map_south">
-		S
-	</floater.string>
-	<floater.string name="mini_map_southeast">
-		SE
-	</floater.string>
-	<floater.string name="mini_map_northeast">
-		NE
-	</floater.string>
-	<floater.string name="mini_map_southwest">
-		SO
-	</floater.string>
-	<floater.string name="mini_map_northwest">
-		NO
-	</floater.string>
 	<floater.string name="ToolTipMsg">
 		[REGION](Carte : double-clic ; Panoramique : Maj + faire glisser)
 	</floater.string>
+	<floater.string name="AltToolTipMsg">
+		[REGION](Téléportation : double-clic ; Panoramique : Maj + faire glisser)
+	</floater.string>
 	<floater.string name="mini_map_caption">
 		MINI-CARTE
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml
index 01274b4cbc..fd72e6ac15 100644
--- a/indra/newview/skins/default/xui/fr/floater_tools.xml
+++ b/indra/newview/skins/default/xui/fr/floater_tools.xml
@@ -64,6 +64,8 @@
 		<radio_item label="Choisir une face" name="radio select face"/>
 	</radio_group>
 	<check_box label="Modification liée" name="checkbox edit linked parts"/>
+	<button label="Lien" name="link_btn"/>
+	<button label="Annuler le lien" name="unlink_btn"/>
 	<text name="RenderingCost" tool_tip="Affiche le coût du rendu calculé pour cet objet">
 		þ : [COUNT]
 	</text>
diff --git a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml
index 78198fb5a8..6af2064e44 100644
--- a/indra/newview/skins/default/xui/fr/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/fr/menu_attachment_self.xml
@@ -5,7 +5,7 @@
 	<menu_item_call label="Détacher" name="Detach"/>
 	<menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
 	<menu_item_call label="Me lever" name="Stand Up"/>
-	<menu_item_call label="Changer de tenue" name="Change Outfit"/>
+	<menu_item_call label="Mon apparence" name="Change Outfit"/>
 	<menu_item_call label="Modifier ma tenue" name="Edit Outfit"/>
 	<menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/>
 	<menu_item_call label="Mes amis" name="Friends..."/>
diff --git a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml
index c7ee2e9f88..21528cd43b 100644
--- a/indra/newview/skins/default/xui/fr/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/fr/menu_avatar_self.xml
@@ -21,7 +21,7 @@
 		<context_menu label="Détacher" name="Object Detach"/>
 		<menu_item_call label="Tout détacher" name="Detach All"/>
 	</context_menu>
-	<menu_item_call label="Changer de tenue" name="Chenge Outfit"/>
+	<menu_item_call label="Mon apparence" name="Chenge Outfit"/>
 	<menu_item_call label="Modifier ma tenue" name="Edit Outfit"/>
 	<menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/>
 	<menu_item_call label="Mes amis" name="Friends..."/>
diff --git a/indra/newview/skins/default/xui/fr/menu_bottomtray.xml b/indra/newview/skins/default/xui/fr/menu_bottomtray.xml
index bfdc89c5bb..ddaea517fc 100644
--- a/indra/newview/skins/default/xui/fr/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/fr/menu_bottomtray.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_camera_move_controls_menu">
+	<menu_item_check label="Voix activée" name="EnableVoiceChat"/>
 	<menu_item_check label="Bouton Geste" name="ShowGestureButton"/>
 	<menu_item_check label="Bouton Bouger" name="ShowMoveButton"/>
 	<menu_item_check label="Bouton Affichage" name="ShowCameraButton"/>
 	<menu_item_check label="Bouton Photo" name="ShowSnapshotButton"/>
-	<menu_item_check label="Bouton Panneau latéral" name="ShowSidebarButton"/>
 	<menu_item_check label="Bouton Construire" name="ShowBuildButton"/>
 	<menu_item_check label="Bouton Rechercher" name="ShowSearchButton"/>
 	<menu_item_check label="Bouton Carte" name="ShowWorldMapButton"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
index 17254ff325..53f22bb44a 100644
--- a/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inspect_avatar_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
+<toggleable_menu name="Gear Menu">
 	<menu_item_call label="Voir le profil" name="view_profile"/>
 	<menu_item_call label="Devenir amis" name="add_friend"/>
 	<menu_item_call label="IM" name="im"/>
@@ -11,9 +11,11 @@
 	<menu_item_call label="Signaler" name="report"/>
 	<menu_item_call label="Figer" name="freeze"/>
 	<menu_item_call label="Expulser" name="eject"/>
+	<menu_item_call label="Éjecter" name="kick"/>
+	<menu_item_call label="Représentant de l&apos;Assistance client" name="csr"/>
 	<menu_item_call label="Déboguer les textures" name="debug"/>
 	<menu_item_call label="Situer sur la carte" name="find_on_map"/>
 	<menu_item_call label="Zoomer en avant" name="zoom_in"/>
 	<menu_item_call label="Payer" name="pay"/>
 	<menu_item_call label="Partager" name="share"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml
index 3bc164788a..ac70df472d 100644
--- a/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inspect_self_gear.xml
@@ -1,10 +1,31 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="M&apos;asseoir" name="sit_down_here"/>
-	<menu_item_call label="Me lever" name="stand_up"/>
-	<menu_item_call label="Changer de tenue" name="change_outfit"/>
-	<menu_item_call label="Mon profil" name="my_profile"/>
-	<menu_item_call label="Mes amis" name="my_friends"/>
-	<menu_item_call label="Mes groupes" name="my_groups"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Menu">
+	<menu_item_call label="M&apos;asseoir" name="Sit Down Here"/>
+	<menu_item_call label="Me lever" name="Stand Up"/>
+	<context_menu label="Enlever" name="Take Off &gt;">
+		<context_menu label="Habits" name="Clothes &gt;">
+			<menu_item_call label="Chemise" name="Shirt"/>
+			<menu_item_call label="Pantalon" name="Pants"/>
+			<menu_item_call label="Jupe" name="Skirt"/>
+			<menu_item_call label="Chaussures" name="Shoes"/>
+			<menu_item_call label="Chaussettes" name="Socks"/>
+			<menu_item_call label="Veste" name="Jacket"/>
+			<menu_item_call label="Gants" name="Gloves"/>
+			<menu_item_call label="Débardeur" name="Self Undershirt"/>
+			<menu_item_call label="Caleçon" name="Self Underpants"/>
+			<menu_item_call label="Tatouage" name="Self Tattoo"/>
+			<menu_item_call label="Alpha" name="Self Alpha"/>
+			<menu_item_call label="Tous les habits" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="HUD" name="Object Detach HUD"/>
+		<context_menu label="Détacher" name="Object Detach"/>
+		<menu_item_call label="Tout détacher" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Changer de tenue" name="Chenge Outfit"/>
+	<menu_item_call label="Modifier ma tenue" name="Edit Outfit"/>
+	<menu_item_call label="Modifier ma silhouette" name="Edit My Shape"/>
+	<menu_item_call label="Mes amis" name="Friends..."/>
+	<menu_item_call label="Mes groupes" name="Groups..."/>
+	<menu_item_call label="Mon profil" name="Profile..."/>
 	<menu_item_call label="Déboguer les textures" name="Debug..."/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml
index f28918ae14..364872c875 100644
--- a/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/fr/menu_inventory_gear_default.xml
@@ -3,6 +3,7 @@
 	<menu_item_call label="Nouvelle fenêtre d&apos;inventaire" name="new_window"/>
 	<menu_item_check label="Trier par nom" name="sort_by_name"/>
 	<menu_item_check label="Trier en commençant par le plus récent" name="sort_by_recent"/>
+	<menu_item_check label="Toujours trier les dossiers par nom" name="sort_folders_by_name"/>
 	<menu_item_check label="Dossiers système en premier" name="sort_system_folders_to_top"/>
 	<menu_item_call label="Afficher les filtres" name="show_filters"/>
 	<menu_item_call label="Réinitialiser les filtres" name="reset_filters"/>
diff --git a/indra/newview/skins/default/xui/fr/menu_object.xml b/indra/newview/skins/default/xui/fr/menu_object.xml
index a50a9df4b1..c6db48a31c 100644
--- a/indra/newview/skins/default/xui/fr/menu_object.xml
+++ b/indra/newview/skins/default/xui/fr/menu_object.xml
@@ -16,14 +16,14 @@
 		<context_menu label="Attacher" name="Object Attach"/>
 		<context_menu label="Attacher HUD" name="Object Attach HUD"/>
 	</context_menu>
-	<context_menu label="Supprimer" name="Remove">
+	<context_menu label="Gérer" name="Remove">
 		<menu_item_call label="Signaler une infraction" name="Report Abuse..."/>
 		<menu_item_call label="Ignorer" name="Object Mute"/>
 		<menu_item_call label="Retour" name="Return..."/>
-		<menu_item_call label="Supprimer" name="Delete"/>
 	</context_menu>
 	<menu_item_call label="Prendre" name="Pie Object Take"/>
 	<menu_item_call label="Prendre une copie" name="Take Copy"/>
 	<menu_item_call label="Payer" name="Pay..."/>
 	<menu_item_call label="Acheter" name="Buy..."/>
+	<menu_item_call label="Supprimer" name="Delete"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml
index 3570bdec7f..3fdf3bf3c4 100644
--- a/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml
+++ b/indra/newview/skins/default/xui/fr/menu_places_gear_folder.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
+<toggleable_menu name="menu_folder_gear">
 	<menu_item_call label="Ajouter un repère" name="add_landmark"/>
 	<menu_item_call label="Ajouter un dossier" name="add_folder"/>
+	<menu_item_call label="Restaurer l&apos;article" name="restore_item"/>
 	<menu_item_call label="Couper" name="cut"/>
 	<menu_item_call label="Copier" name="copy_folder"/>
 	<menu_item_call label="Coller" name="paste"/>
@@ -12,4 +13,4 @@
 	<menu_item_call label="Développer tous les dossiers" name="expand_all"/>
 	<menu_item_call label="Réduire tous les dossiers" name="collapse_all"/>
 	<menu_item_check label="Trier par date" name="sort_by_date"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml
index 5491c1b3fc..b48f6ea693 100644
--- a/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml
+++ b/indra/newview/skins/default/xui/fr/menu_places_gear_landmark.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
+<toggleable_menu name="menu_ladmark_gear">
 	<menu_item_call label="Téléporter" name="teleport"/>
 	<menu_item_call label="Plus d&apos;informations" name="more_info"/>
 	<menu_item_call label="Voir sur la carte" name="show_on_map"/>
 	<menu_item_call label="Ajouter un repère" name="add_landmark"/>
 	<menu_item_call label="Ajouter un dossier" name="add_folder"/>
+	<menu_item_call label="Restaurer l&apos;article" name="restore_item"/>
 	<menu_item_call label="Couper" name="cut"/>
 	<menu_item_call label="Copier le repère" name="copy_landmark"/>
 	<menu_item_call label="Copier la SLurl" name="copy_slurl"/>
@@ -15,4 +16,4 @@
 	<menu_item_call label="Réduire tous les dossiers" name="collapse_all"/>
 	<menu_item_check label="Trier par date" name="sort_by_date"/>
 	<menu_item_call label="Créer un favori" name="create_pick"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/fr/menu_viewer.xml b/indra/newview/skins/default/xui/fr/menu_viewer.xml
index 65a00c2e6c..ee1ab8c601 100644
--- a/indra/newview/skins/default/xui/fr/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml
@@ -7,7 +7,7 @@
 		</menu_item_call>
 		<menu_item_call label="Acheter des L$" name="Buy and Sell L$"/>
 		<menu_item_call label="Mon profil" name="Profile"/>
-		<menu_item_call label="Changer de tenue" name="ChangeOutfit"/>
+		<menu_item_call label="Mon apparence" name="ChangeOutfit"/>
 		<menu_item_check label="Mon inventaire" name="Inventory"/>
 		<menu_item_check label="Mon inventaire" name="ShowSidetrayInventory"/>
 		<menu_item_check label="Mes gestes" name="Gestures"/>
@@ -35,6 +35,7 @@
 	<menu label="Monde" name="World">
 		<menu_item_check label="Mini-carte" name="Mini-Map"/>
 		<menu_item_check label="Carte du monde" name="World Map"/>
+		<menu_item_check label="Rechercher" name="Search"/>
 		<menu_item_call label="Photo" name="Take Snapshot"/>
 		<menu_item_call label="Créer un repère pour ce lieu" name="Create Landmark Here"/>
 		<menu label="Profil du lieu" name="Land">
@@ -227,8 +228,10 @@
 		<menu label="Afficher les infos" name="Display Info">
 			<menu_item_check label="Afficher l&apos;heure" name="Show Time"/>
 			<menu_item_check label="Afficher les infos de rendu" name="Show Render Info"/>
+			<menu_item_check label="Afficher les infos de texture" name="Show Texture Info"/>
 			<menu_item_check label="Afficher les matrices" name="Show Matrices"/>
 			<menu_item_check label="Afficher la couleur sous le curseur" name="Show Color Under Cursor"/>
+			<menu_item_check label="Afficher la mémoire" name="Show Memory"/>
 			<menu_item_check label="Afficher les mises à jour des objets" name="Show Updates"/>
 		</menu>
 		<menu label="Forcer une erreur" name="Force Errors">
@@ -253,6 +256,7 @@
 			<menu_item_check label="Shadow Frusta" name="Shadow Frusta"/>
 			<menu_item_check label="Occlusion" name="Occlusion"/>
 			<menu_item_check label="Lots de rendu" name="Render Batches"/>
+			<menu_item_check label="Type de mise à jour" name="Update Type"/>
 			<menu_item_check label="Texture Anim" name="Texture Anim"/>
 			<menu_item_check label="Priorité de la texture" name="Texture Priority"/>
 			<menu_item_check label="Zone de texture" name="Texture Area"/>
diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml
index 603b8f0edc..e984ea66ed 100644
--- a/indra/newview/skins/default/xui/fr/notifications.xml
+++ b/indra/newview/skins/default/xui/fr/notifications.xml
@@ -73,7 +73,7 @@ Détails de l&apos;erreur : La notification, appelée &apos;[_NAME]&apos;, est i
 	</notification>
 	<notification name="LoginFailedNoNetwork">
 		Connexion à [SECOND_LIFE_GRID] impossible.
-&apos;[DIAGNOSTIC]&apos;
+    &apos;[DIAGNOSTIC]&apos;
 Veuillez vérifier votre connexion Internet.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
@@ -332,13 +332,6 @@ Pour entrer dans [SECOND_LIFE], vous devez disposer d&apos;un compte. Voulez-vou
 	<notification name="InvalidCredentialFormat">
 		Saisissez soit le nom d&apos;utilisateur soit à la fois le prénom et le nom de votre avatar dans le champ Nom d&apos;utilisateur, puis connectez-vous.
 	</notification>
-	<notification name="AddClassified">
-		Les petites annonces sont publiées à l&apos;onglet Petites annonces de la section Recherche et sur [http://secondlife.com/community/classifieds secondlife.com] pendant une semaine.
-Rédigez votre annonce, puis cliquez sur Publier pour l&apos;ajouter à la liste des annonces.
-Au moment de cliquer sur Publier, vous serez invité à payer des frais.
-Plus vous payez cher, plus votre annonce est visible dans la liste ainsi que dans les résultats de recherche de mots-clés.
-		<usetemplate ignoretext="Comment ajouter une nouvelle petite annonce" name="okcancelignore" notext="Annuler" yestext="OK"/>
-	</notification>
 	<notification name="DeleteClassified">
 		Supprimer l&apos;annonce [NAME] ?
 Une fois payés, les frais ne sont pas remboursables.
@@ -2848,9 +2841,6 @@ Ignorer les autres ?
 	<notification label="Explorer le monde" name="HintDestinationGuide">
 		Le Guide des destinations comprend des milliers d&apos;endroits nouveaux à découvrir. Sélectionnez-en un, puis cliquez sur Téléporter pour commencer à l&apos;explorer.
 	</notification>
-	<notification label="Changer d&apos;apparence" name="HintAvatarPicker">
-		Vous souhaitez changer de look ? Cliquez sur le bouton ci-dessous pour voir plus d&apos;avatars.
-	</notification>
 	<notification label="Panneau latéral" name="HintSidePanel">
 		Obtenir un accès rapide à votre inventaire, à vos habits, à vos profils et bien plus encore dans le panneau latéral.
 	</notification>
@@ -2888,6 +2878,38 @@ Ignorer les autres ?
 			<button name="cancel" text="Annuler"/>
 		</form>
 	</notification>
+	<notification label="" name="ModeChange">
+		Vous devez quitter et redémarrer l&apos;application afin de changer de mode.
+		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
+	</notification>
+	<notification label="" name="NoClassifieds">
+		Pour créer et modifier des petites annonces, vous devez utiliser le mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ? Le sélecteur de mode se trouve sur l&apos;écran de connexion.
+		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
+	</notification>
+	<notification label="" name="NoGroupInfo">
+		Pour créer et modifier des groupes, vous devez utiliser le mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ? Le sélecteur de mode se trouve sur l&apos;écran de connexion.
+		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
+	</notification>
+	<notification label="" name="NoPicks">
+		Pour créer et modifier des favoris, vous devez utiliser le mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ? Le sélecteur de mode se trouve sur l&apos;écran de connexion.
+		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
+	</notification>
+	<notification label="" name="NoWorldMap">
+		Pour afficher la carte du monde, vous devez utiliser le mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ? Le sélecteur de mode se trouve sur l&apos;écran de connexion.
+		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
+	</notification>
+	<notification label="" name="NoVoiceCall">
+		Les appels vocaux sont uniquement disponibles en mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ?
+		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
+	</notification>
+	<notification label="" name="NoAvatarShare">
+		Le partage est uniquement disponible en mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ?
+		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
+	</notification>
+	<notification label="" name="NoAvatarPay">
+		Pour pouvoir payer d&apos;autres résidents, vous devez utiliser le mode Avancé. Voulez-vous quitter l&apos;application afin de changer de mode ?
+		<usetemplate name="okcancelbuttons" notext="Ne pas quitter" yestext="Quitter"/>
+	</notification>
 	<global name="UnsupportedCPU">
 		- Votre processeur ne remplit pas les conditions minimum requises.
 	</global>
diff --git a/indra/newview/skins/default/xui/fr/panel_login.xml b/indra/newview/skins/default/xui/fr/panel_login.xml
index ef55ba7991..e54b36644c 100644
--- a/indra/newview/skins/default/xui/fr/panel_login.xml
+++ b/indra/newview/skins/default/xui/fr/panel_login.xml
@@ -17,6 +17,13 @@
 			</text>
 			<check_box label="Enregistrer" name="remember_check"/>
 			<button label="Connexion" name="connect_btn"/>
+			<text name="mode_selection_text">
+				Mode :
+			</text>
+			<combo_box name="mode_combo" tool_tip="Sélectionnez un mode. Pour une exploration facile et rapide avec chat, choisissez Basique. Pour accéder à plus de fonctionnalités, choisissez Avancé.">
+				<combo_box.item label="Basique" name="Basic"/>
+				<combo_box.item label="Avancé" name="Advanced"/>
+			</combo_box>
 			<text name="start_location_text">
 				Lieu de départ :
 			</text>
diff --git a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml
index 66bfd01a2a..7b7b67041a 100644
--- a/indra/newview/skins/default/xui/fr/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/fr/panel_nearby_media.xml
@@ -19,7 +19,7 @@
 		<button label="Arrêter" name="all_nearby_media_disable_btn" tool_tip="Désactiver tous les médias près de vous"/>
 		<button label="Lire" name="all_nearby_media_enable_btn" tool_tip="Activer tous les médias près de vous"/>
 		<button name="open_prefs_btn" tool_tip="Ouvrir les préférences de média"/>
-		<button label="Plus &gt;&gt;" label_selected="Moins &lt;&lt;" name="more_btn" tool_tip="Options avancées"/>
+		<button label="Plus &gt;&gt;" label_selected="&lt;&lt; Moins" name="more_btn" tool_tip="Options avancées"/>
 		<button label="Plus &gt;&gt;" label_selected="Moins &lt;&lt;" name="less_btn" tool_tip="Options avancées"/>
 	</panel>
 	<panel name="nearby_media_panel">
diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml
index eecbabae2b..166f04b3e4 100644
--- a/indra/newview/skins/default/xui/fr/panel_people.xml
+++ b/indra/newview/skins/default/xui/fr/panel_people.xml
@@ -18,6 +18,8 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife://
 	<string name="groups_filter_label" value="Filtrer les groupes"/>
 	<string name="no_filtered_groups_msg" value="Vous n&apos;avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/groups/[SEARCH_TERM] Rechercher]."/>
 	<string name="no_groups_msg" value="Vous souhaitez trouver des groupes à rejoindre ? Utilisez [secondlife:///app/search/groups Rechercher]."/>
+	<string name="MiniMapToolTipMsg" value="[REGION](Carte : double-clic ; Panoramique : Maj + faire glisser)"/>
+	<string name="AltMiniMapToolTipMsg" value="[REGION](Téléportation : double-clic ; Panoramique : Maj + faire glisser)"/>
 	<filter_editor label="Filtre" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="PRÈS DE VOUS" name="nearby_panel">
diff --git a/indra/newview/skins/default/xui/fr/panel_profile.xml b/indra/newview/skins/default/xui/fr/panel_profile.xml
index 6b611923af..9aa6fe97a1 100644
--- a/indra/newview/skins/default/xui/fr/panel_profile.xml
+++ b/indra/newview/skins/default/xui/fr/panel_profile.xml
@@ -16,6 +16,12 @@
 	<string name="RegisterDateFormat">
 		[REG_DATE] ([AGE])
 	</string>
+	<string name="name_text_args">
+		[NAME]
+	</string>
+	<string name="display_name_text_args">
+		[DISPLAY_NAME]
+	</string>
 	<layout_stack name="layout">
 		<layout_panel name="profile_stack">
 			<scroll_container name="profile_scroll">
@@ -34,7 +40,7 @@
 					</text_editor>
 					<text name="title_partner_text" value="Partenaire :"/>
 					<panel name="partner_data_panel">
-						<name_box initial_value="(récupération en cours)" name="partner_text"/>
+						<text initial_value="(récupération en cours)" name="partner_text"/>
 					</panel>
 					<text name="title_groups_text" value="Groupes :"/>
 				</panel>
diff --git a/indra/newview/skins/default/xui/fr/panel_script_ed.xml b/indra/newview/skins/default/xui/fr/panel_script_ed.xml
index 2c86dd72b6..2b08ae56c5 100644
--- a/indra/newview/skins/default/xui/fr/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/fr/panel_script_ed.xml
@@ -15,6 +15,9 @@
 	<panel.string name="Title">
 		Script : [NAME]
 	</panel.string>
+	<panel.string name="external_editor_not_set">
+		Sélectionnez un éditeur en définissant la variable d&apos;environnement LL_SCRIPT_EDITOR ou le paramètre ExternalEditor.
+	</panel.string>
 	<menu_bar name="script_menu">
 		<menu label="Fichier" name="File">
 			<menu_item_call label="Enregistrer" name="Save"/>
diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml
index 74c1fd8622..a7c71dc0f0 100644
--- a/indra/newview/skins/default/xui/fr/strings.xml
+++ b/indra/newview/skins/default/xui/fr/strings.xml
@@ -1067,7 +1067,7 @@
 	<string name="PermNo">
 		Non
 	</string>
-	<string name="Chat" value=" Chat :"/>
+	<string name="Chat Message" value="Chat :"/>
 	<string name="Sound" value=" Son :"/>
 	<string name="Wait" value=" --- Attendre :"/>
 	<string name="AnimFlagStop" value=" Arrêter l&apos;animation :"/>
@@ -1864,12 +1864,6 @@
 	<string name="accel-win-shift">
 		Maj+
 	</string>
-	<string name="Esc">
-		Échap
-	</string>
-	<string name="Home">
-		Début
-	</string>
 	<string name="FileSaved">
 		Fichier enregistré
 	</string>
@@ -1889,7 +1883,7 @@
 		PDT
 	</string>
 	<string name="Direction_Forward">
-		Vers l&apos;avant
+		Avant
 	</string>
 	<string name="Direction_Left">
 		Gauche
@@ -1987,6 +1981,9 @@
 	<string name="Other">
 		Autre
 	</string>
+	<string name="Rental">
+		Location
+	</string>
 	<string name="Any">
 		Aucun
 	</string>
@@ -3966,7 +3963,7 @@ de l&apos;infraction signalée
 	<string name="Notices">
 		Notices
 	</string>
-	<string name="Chat">
+	<string name="Chat" value=" Chat :">
 		Chat
 	</string>
 	<string name="DeleteItems">
@@ -3978,4 +3975,348 @@ de l&apos;infraction signalée
 	<string name="EmptyOutfitText">
 		Cette tenue ne contient aucun article.
 	</string>
+	<string name="ExternalEditorNotSet">
+		Sélectionnez un éditeur à l&apos;aide du paramètre ExternalEditor.
+	</string>
+	<string name="ExternalEditorNotFound">
+		Éditeur externe spécifié introuvable.
+Essayez avec le chemin d&apos;accès à l&apos;éditeur entre guillemets doubles
+(par ex. : &quot;/chemin_accès/editor&quot; &quot;%s&quot;).
+	</string>
+	<string name="ExternalEditorCommandParseError">
+		Erreur lors de l&apos;analyse de la commande d&apos;éditeur externe.
+	</string>
+	<string name="ExternalEditorFailedToRun">
+		Échec d&apos;exécution de l&apos;éditeur externe.
+	</string>
+	<string name="Esc">
+		Échap
+	</string>
+	<string name="Space">
+		Space
+	</string>
+	<string name="Enter">
+		Enter
+	</string>
+	<string name="Tab">
+		Tab
+	</string>
+	<string name="Ins">
+		Ins
+	</string>
+	<string name="Del">
+		Del
+	</string>
+	<string name="Backsp">
+		Backsp
+	</string>
+	<string name="Shift">
+		Shift
+	</string>
+	<string name="Ctrl">
+		Ctrl
+	</string>
+	<string name="Alt">
+		Alt
+	</string>
+	<string name="CapsLock">
+		CapsLock
+	</string>
+	<string name="Home">
+		Début
+	</string>
+	<string name="End">
+		End
+	</string>
+	<string name="PgUp">
+		PgUp
+	</string>
+	<string name="PgDn">
+		PgDn
+	</string>
+	<string name="F1">
+		F1
+	</string>
+	<string name="F2">
+		F2
+	</string>
+	<string name="F3">
+		F3
+	</string>
+	<string name="F4">
+		F4
+	</string>
+	<string name="F5">
+		F5
+	</string>
+	<string name="F6">
+		F6
+	</string>
+	<string name="F7">
+		F7
+	</string>
+	<string name="F8">
+		F8
+	</string>
+	<string name="F9">
+		F9
+	</string>
+	<string name="F10">
+		F10
+	</string>
+	<string name="F11">
+		F11
+	</string>
+	<string name="F12">
+		F12
+	</string>
+	<string name="Add">
+		Ajouter
+	</string>
+	<string name="Subtract">
+		Soustraire
+	</string>
+	<string name="Multiply">
+		Multiplier
+	</string>
+	<string name="Divide">
+		Diviser
+	</string>
+	<string name="PAD_DIVIDE">
+		PAD_DIVIDE
+	</string>
+	<string name="PAD_LEFT">
+		PAD_LEFT
+	</string>
+	<string name="PAD_RIGHT">
+		PAD_RIGHT
+	</string>
+	<string name="PAD_DOWN">
+		PAD_DOWN
+	</string>
+	<string name="PAD_UP">
+		PAD_UP
+	</string>
+	<string name="PAD_HOME">
+		PAD_HOME
+	</string>
+	<string name="PAD_END">
+		PAD_END
+	</string>
+	<string name="PAD_PGUP">
+		PAD_PGUP
+	</string>
+	<string name="PAD_PGDN">
+		PAD_PGDN
+	</string>
+	<string name="PAD_CENTER">
+		PAD_CENTER
+	</string>
+	<string name="PAD_INS">
+		PAD_INS
+	</string>
+	<string name="PAD_DEL">
+		PAD_DEL
+	</string>
+	<string name="PAD_Enter">
+		PAD_Enter
+	</string>
+	<string name="PAD_BUTTON0">
+		PAD_BUTTON0
+	</string>
+	<string name="PAD_BUTTON1">
+		PAD_BUTTON1
+	</string>
+	<string name="PAD_BUTTON2">
+		PAD_BUTTON2
+	</string>
+	<string name="PAD_BUTTON3">
+		PAD_BUTTON3
+	</string>
+	<string name="PAD_BUTTON4">
+		PAD_BUTTON4
+	</string>
+	<string name="PAD_BUTTON5">
+		PAD_BUTTON5
+	</string>
+	<string name="PAD_BUTTON6">
+		PAD_BUTTON6
+	</string>
+	<string name="PAD_BUTTON7">
+		PAD_BUTTON7
+	</string>
+	<string name="PAD_BUTTON8">
+		PAD_BUTTON8
+	</string>
+	<string name="PAD_BUTTON9">
+		PAD_BUTTON9
+	</string>
+	<string name="PAD_BUTTON10">
+		PAD_BUTTON10
+	</string>
+	<string name="PAD_BUTTON11">
+		PAD_BUTTON11
+	</string>
+	<string name="PAD_BUTTON12">
+		PAD_BUTTON12
+	</string>
+	<string name="PAD_BUTTON13">
+		PAD_BUTTON13
+	</string>
+	<string name="PAD_BUTTON14">
+		PAD_BUTTON14
+	</string>
+	<string name="PAD_BUTTON15">
+		PAD_BUTTON15
+	</string>
+	<string name="-">
+		-
+	</string>
+	<string name="=">
+		=
+	</string>
+	<string name="`">
+		`
+	</string>
+	<string name=";">
+		;
+	</string>
+	<string name="[">
+		[
+	</string>
+	<string name="]">
+		]
+	</string>
+	<string name="\">
+		\
+	</string>
+	<string name="0">
+		0
+	</string>
+	<string name="1">
+		1
+	</string>
+	<string name="2">
+		2
+	</string>
+	<string name="3">
+		3
+	</string>
+	<string name="4">
+		4
+	</string>
+	<string name="5">
+		5
+	</string>
+	<string name="6">
+		6
+	</string>
+	<string name="7">
+		7
+	</string>
+	<string name="8">
+		8
+	</string>
+	<string name="9">
+		9
+	</string>
+	<string name="A">
+		A
+	</string>
+	<string name="B">
+		B
+	</string>
+	<string name="C">
+		C
+	</string>
+	<string name="D">
+		D
+	</string>
+	<string name="E">
+		E
+	</string>
+	<string name="F">
+		F
+	</string>
+	<string name="G">
+		G
+	</string>
+	<string name="H">
+		H
+	</string>
+	<string name="I">
+		I
+	</string>
+	<string name="J">
+		J
+	</string>
+	<string name="K">
+		K
+	</string>
+	<string name="L">
+		L
+	</string>
+	<string name="M">
+		M
+	</string>
+	<string name="N">
+		N
+	</string>
+	<string name="O">
+		O
+	</string>
+	<string name="P">
+		P
+	</string>
+	<string name="Q">
+		Q
+	</string>
+	<string name="R">
+		R
+	</string>
+	<string name="S">
+		S
+	</string>
+	<string name="T">
+		T
+	</string>
+	<string name="U">
+		U
+	</string>
+	<string name="V">
+		V
+	</string>
+	<string name="W">
+		W
+	</string>
+	<string name="X">
+		X
+	</string>
+	<string name="Y">
+		Y
+	</string>
+	<string name="Z">
+		Z
+	</string>
+	<string name="BeaconParticle">
+		Affichage des balises de particule (bleu)
+	</string>
+	<string name="BeaconPhysical">
+		Affichage des balises d&apos;objet physique (vert)
+	</string>
+	<string name="BeaconScripted">
+		Affichage des balises d&apos;objet scripté (rouge)
+	</string>
+	<string name="BeaconScriptedTouch">
+		Affichage des balises d&apos;objet scripté avec fonction de toucher (rouge)
+	</string>
+	<string name="BeaconSound">
+		Affichage des balises de son (jaune)
+	</string>
+	<string name="BeaconMedia">
+		Affichage des balises de média (blanc)
+	</string>
+	<string name="ParticleHiding">
+		Masquage des particules
+	</string>
 </strings>
-- 
cgit v1.2.3


From ba1a9204f80ad3c425027729a85818777e666561 Mon Sep 17 00:00:00 2001
From: eli_linden <eli@lindenlab.com>
Date: Tue, 29 Mar 2011 14:07:22 -0700
Subject: VWR-24911 FIX

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/es/panel_preferences_general.xml b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
index 91cf9524a3..790c7be581 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_general.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_general.xml
@@ -55,7 +55,7 @@
 	</text>
 	<radio_group name="inworld_typing_preference">
 		<radio_item label="Inicia el chat local" name="radio_start_chat" value="1"/>
-		<radio_item label="Se verá afectado el movimiento (por ejemplo, mediante las teclas WASD)" name="radio_move" value="0"/>
+		<radio_item label="Afecta al movimiento (por ejemplo, en las teclas WASD)" name="radio_move" value="0"/>
 	</radio_group>
 	<text name="title_afk_text">
 		Ausente tras:
-- 
cgit v1.2.3


From ec96acc62976488e25c26c55db34e290e71d7290 Mon Sep 17 00:00:00 2001
From: eli_linden <eli@lindenlab.com>
Date: Tue, 29 Mar 2011 14:34:59 -0700
Subject: STORM-1119 WIP shorten ES translation

---
 indra/newview/skins/default/xui/es/panel_preferences_chat.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
index 67f9a929f6..93847bac13 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -27,8 +27,8 @@
 	</text>
 	<check_box label="Chats de grupo" name="EnableGroupChatPopups" tool_tip="Activa esta casilla para ver una ventana emergente cada vez que recibas un mensaje de un grupo de chat"/>
 	<check_box label="Chats de MI" name="EnableIMChatPopups" tool_tip="Activa esta casilla para ver una ventana emergente cada vez que recibas un mensaje instantáneo"/>
-	<spinner label="Duración de los interlocutores favoritos en los chats:" name="nearby_toasts_lifetime"/>
-	<spinner label="Tiempo restante de los interlocutores favoritos en los chats:" name="nearby_toasts_fadingtime"/>
+	<spinner label="Duración de los interlocutores favoritos:" name="nearby_toasts_lifetime"/>
+	<spinner label="Tiempo de los otros interlocutores:" name="nearby_toasts_fadingtime"/>
 	<check_box label="Utiliza la herramienta de traducción automática mientras utilizas el chat (mediante Google)" name="translate_chat_checkbox"/>
 	<text name="translate_language_text">
 		Traducir el chat al:
-- 
cgit v1.2.3


From cad1136d2f390b2113cd84fd8b60cb1f2a47a8b1 Mon Sep 17 00:00:00 2001
From: eli_linden <eli@lindenlab.com>
Date: Tue, 29 Mar 2011 14:43:13 -0700
Subject: VWR-24908 WIP shorten ES translation but may still require resizing

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
index 5eaa345c98..adc0862cf1 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_privacy.xml
@@ -11,7 +11,7 @@
 	<check_box label="Sólo saben si estoy conectado mis amigos y grupos" name="online_visibility"/>
 	<check_box label="Sólo pueden llamarme o mandarme un MI mis amigos y grupos" name="voice_call_friends_only_check"/>
 	<check_box label="Desconectar el micrófono cuando finalicen las llamadas" name="auto_disengage_mic_check"/>
-	<check_box label="Mostrar mis Hitos favoritos en Inicio de sesión (mediante el menú desplegable &quot;Empezar en&quot;)" name="favorites_on_login_check"/>
+	<check_box label="Mostrar mis Hitos favoritos al Inicio de sesión (menú desplegable &quot;Empezar en&quot;)" name="favorites_on_login_check"/>
 	<text name="Logs:">
 		Registros de chat:
 	</text>
-- 
cgit v1.2.3


From 75fb588e943bf696db9c5e7aab272c8133b70c78 Mon Sep 17 00:00:00 2001
From: eli_linden <eli@lindenlab.com>
Date: Tue, 29 Mar 2011 14:49:20 -0700
Subject: VWR-24907 FIX ES translation

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
index 68484645b7..9b453fd807 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_setup.xml
@@ -32,7 +32,7 @@
 	<check_box initial_value="true" label="Activar plugins" name="browser_plugins_enabled"/>
 	<check_box initial_value="true" label="Aceptar las &apos;cookies&apos;" name="cookies_enabled"/>
 	<check_box initial_value="true" label="Activar Javascript" name="browser_javascript_enabled"/>
-	<check_box initial_value="falso" label="Permitir ventanas emergentes de navegadores de medios" name="media_popup_enabled"/>
+	<check_box initial_value="falso" label="Permitir las ventanas emergentes en el navegador" name="media_popup_enabled"/>
 	<check_box initial_value="false" label="Activar web proxy" name="web_proxy_enabled"/>
 	<text name="Proxy location">
 		Localización del proxy:
-- 
cgit v1.2.3


From 8c449f4542e7a90c8999256a1093c92267670780 Mon Sep 17 00:00:00 2001
From: eli_linden <eli@lindenlab.com>
Date: Tue, 29 Mar 2011 14:53:23 -0700
Subject: VWR-24128 FIX ES

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

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
index 93847bac13..0b304fe287 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_chat.xml
@@ -29,7 +29,7 @@
 	<check_box label="Chats de MI" name="EnableIMChatPopups" tool_tip="Activa esta casilla para ver una ventana emergente cada vez que recibas un mensaje instantáneo"/>
 	<spinner label="Duración de los interlocutores favoritos:" name="nearby_toasts_lifetime"/>
 	<spinner label="Tiempo de los otros interlocutores:" name="nearby_toasts_fadingtime"/>
-	<check_box label="Utiliza la herramienta de traducción automática mientras utilizas el chat (mediante Google)" name="translate_chat_checkbox"/>
+	<check_box label="Usar la traducción automática (con Google) en el chat" name="translate_chat_checkbox"/>
 	<text name="translate_language_text">
 		Traducir el chat al:
 	</text>
-- 
cgit v1.2.3


From 6418ccc9e5a03d32778c8588139fe939a969838a Mon Sep 17 00:00:00 2001
From: eli_linden <eli@lindenlab.com>
Date: Tue, 29 Mar 2011 16:09:32 -0700
Subject: INTL-34 WIP Set22 translations DE ES

---
 .../skins/default/xui/de/floater_about_land.xml    |   4 +-
 indra/newview/skins/default/xui/de/floater_map.xml |  27 +-
 .../newview/skins/default/xui/de/floater_tools.xml |   2 +
 .../skins/default/xui/de/menu_attachment_self.xml  |   2 +-
 .../skins/default/xui/de/menu_avatar_self.xml      |   2 +-
 .../skins/default/xui/de/menu_bottomtray.xml       |   2 +-
 .../default/xui/de/menu_inspect_avatar_gear.xml    |   6 +-
 .../default/xui/de/menu_inspect_self_gear.xml      |  39 ++-
 .../default/xui/de/menu_inventory_gear_default.xml |   1 +
 indra/newview/skins/default/xui/de/menu_object.xml |   4 +-
 .../default/xui/de/menu_places_gear_folder.xml     |   5 +-
 .../default/xui/de/menu_places_gear_landmark.xml   |   5 +-
 indra/newview/skins/default/xui/de/menu_viewer.xml |   6 +-
 .../newview/skins/default/xui/de/notifications.xml |  52 ++-
 indra/newview/skins/default/xui/de/panel_login.xml |   7 +
 .../skins/default/xui/de/panel_nearby_media.xml    |   2 +-
 .../newview/skins/default/xui/de/panel_people.xml  |   2 +
 .../newview/skins/default/xui/de/panel_profile.xml |   8 +-
 .../skins/default/xui/de/panel_script_ed.xml       |   3 +
 indra/newview/skins/default/xui/de/strings.xml     | 359 ++++++++++++++++++++-
 .../skins/default/xui/es/floater_about_land.xml    |   6 +-
 indra/newview/skins/default/xui/es/floater_map.xml |   3 +
 .../newview/skins/default/xui/es/floater_tools.xml |   2 +
 .../skins/default/xui/es/menu_attachment_self.xml  |   2 +-
 .../skins/default/xui/es/menu_avatar_self.xml      |   2 +-
 .../skins/default/xui/es/menu_bottomtray.xml       |   2 +-
 .../default/xui/es/menu_inspect_avatar_gear.xml    |   6 +-
 .../default/xui/es/menu_inspect_self_gear.xml      |  39 ++-
 .../default/xui/es/menu_inventory_gear_default.xml |   1 +
 indra/newview/skins/default/xui/es/menu_object.xml |   4 +-
 .../default/xui/es/menu_places_gear_folder.xml     |   5 +-
 .../default/xui/es/menu_places_gear_landmark.xml   |   5 +-
 indra/newview/skins/default/xui/es/menu_viewer.xml |   8 +-
 .../newview/skins/default/xui/es/notifications.xml |  44 ++-
 indra/newview/skins/default/xui/es/panel_login.xml |   7 +
 .../skins/default/xui/es/panel_nearby_media.xml    |   2 +-
 .../newview/skins/default/xui/es/panel_people.xml  |   2 +
 .../default/xui/es/panel_preferences_sound.xml     |   2 +-
 .../newview/skins/default/xui/es/panel_profile.xml |   8 +-
 .../skins/default/xui/es/panel_script_ed.xml       |   3 +
 indra/newview/skins/default/xui/es/strings.xml     | 357 +++++++++++++++++++-
 41 files changed, 931 insertions(+), 117 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/skins/default/xui/de/floater_about_land.xml b/indra/newview/skins/default/xui/de/floater_about_land.xml
index 8783b52013..2d8459479a 100644
--- a/indra/newview/skins/default/xui/de/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/de/floater_about_land.xml
@@ -348,6 +348,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				<combo_box.item label="Parks und Natur" name="item9"/>
 				<combo_box.item label="Wohngebiet" name="item10"/>
 				<combo_box.item label="Shopping" name="item11"/>
+				<combo_box.item label="Vermietung" name="item13"/>
 				<combo_box.item label="Sonstige" name="item12"/>
 			</combo_box>
 			<combo_box name="land category">
@@ -362,6 +363,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				<combo_box.item label="Parks und Natur" name="item9"/>
 				<combo_box.item label="Wohngebiet" name="item10"/>
 				<combo_box.item label="Shopping" name="item11"/>
+				<combo_box.item label="Vermietung" name="item13"/>
 				<combo_box.item label="Sonstige" name="item12"/>
 			</combo_box>
 			<check_box label="Moderater Inhalt" name="MatureCheck" tool_tip=""/>
@@ -437,7 +439,7 @@ Nur große Parzellen können in der Suche aufgeführt werden.
 				(Durch Grundbesitz festgelegt)
 			</panel.string>
 			<panel.string name="allow_public_access">
-				Öffentlichen Zugang erlauben ([MATURITY])
+				Öffentlichen Zugang erlauben ([MATURITY]) (Hinweis: Bei Deaktivierung dieser Option werden Bannlinien generiert)
 			</panel.string>
 			<panel.string name="estate_override">
 				Eine oder mehrere dieser Optionen gelten auf Grundbesitzebene
diff --git a/indra/newview/skins/default/xui/de/floater_map.xml b/indra/newview/skins/default/xui/de/floater_map.xml
index 217a641dec..f6d9db8d53 100644
--- a/indra/newview/skins/default/xui/de/floater_map.xml
+++ b/indra/newview/skins/default/xui/de/floater_map.xml
@@ -1,32 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <floater name="Map" title="">
-	<floater.string name="mini_map_north">
-		N
-	</floater.string>
-	<floater.string name="mini_map_east">
-		O
-	</floater.string>
-	<floater.string name="mini_map_west">
-		W
-	</floater.string>
-	<floater.string name="mini_map_south">
-		S
-	</floater.string>
-	<floater.string name="mini_map_southeast">
-		SO
-	</floater.string>
-	<floater.string name="mini_map_northeast">
-		NO
-	</floater.string>
-	<floater.string name="mini_map_southwest">
-		SW
-	</floater.string>
-	<floater.string name="mini_map_northwest">
-		NW
-	</floater.string>
 	<floater.string name="ToolTipMsg">
 		[REGION](Doppelklicken, um Karte zu öffnen; Umschalt-Taste gedrückt halten und ziehen, um zu schwenken)
 	</floater.string>
+	<floater.string name="AltToolTipMsg">
+		[REGION](Doppelklicken, um zu teleportieren; Umschalttaste gedrückt halten und ziehen, um zu schwenken)
+	</floater.string>
 	<floater.string name="mini_map_caption">
 		MINI-KARTE
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml
index d201fc327c..d95d674df2 100644
--- a/indra/newview/skins/default/xui/de/floater_tools.xml
+++ b/indra/newview/skins/default/xui/de/floater_tools.xml
@@ -64,6 +64,8 @@
 		<radio_item label="Fläche auswählen" name="radio select face"/>
 	</radio_group>
 	<check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/>
+	<button label="Link" name="link_btn"/>
+	<button label="Verknüpfung auflösen" name="unlink_btn"/>
 	<text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt">
 		þ: [COUNT]
 	</text>
diff --git a/indra/newview/skins/default/xui/de/menu_attachment_self.xml b/indra/newview/skins/default/xui/de/menu_attachment_self.xml
index 644fc68ba4..325d52a22e 100644
--- a/indra/newview/skins/default/xui/de/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/de/menu_attachment_self.xml
@@ -5,7 +5,7 @@
 	<menu_item_call label="Abnehmen" name="Detach"/>
 	<menu_item_call label="Hinsetzen" name="Sit Down Here"/>
 	<menu_item_call label="Aufstehen" name="Stand Up"/>
-	<menu_item_call label="Outfit ändern" name="Change Outfit"/>
+	<menu_item_call label="Mein Aussehen" name="Change Outfit"/>
 	<menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/>
 	<menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/>
 	<menu_item_call label="Meine Freunde" name="Friends..."/>
diff --git a/indra/newview/skins/default/xui/de/menu_avatar_self.xml b/indra/newview/skins/default/xui/de/menu_avatar_self.xml
index 582c76ac94..40557b7ad8 100644
--- a/indra/newview/skins/default/xui/de/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/de/menu_avatar_self.xml
@@ -21,7 +21,7 @@
 		<context_menu label="Abnehmen" name="Object Detach"/>
 		<menu_item_call label="Alles abnehmen" name="Detach All"/>
 	</context_menu>
-	<menu_item_call label="Outfit ändern" name="Chenge Outfit"/>
+	<menu_item_call label="Mein Aussehen" name="Chenge Outfit"/>
 	<menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/>
 	<menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/>
 	<menu_item_call label="Meine Freunde" name="Friends..."/>
diff --git a/indra/newview/skins/default/xui/de/menu_bottomtray.xml b/indra/newview/skins/default/xui/de/menu_bottomtray.xml
index 6c4308286a..660cd2eaf3 100644
--- a/indra/newview/skins/default/xui/de/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/de/menu_bottomtray.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_camera_move_controls_menu">
+	<menu_item_check label="Voice aktiviert" name="EnableVoiceChat"/>
 	<menu_item_check label="Schaltfläche Gesten" name="ShowGestureButton"/>
 	<menu_item_check label="Schaltfläche Bewegungssteuerung" name="ShowMoveButton"/>
 	<menu_item_check label="Schaltfläche Ansicht" name="ShowCameraButton"/>
 	<menu_item_check label="Schaltfläche Foto" name="ShowSnapshotButton"/>
-	<menu_item_check label="Schaltfläche „Seitenleiste“" name="ShowSidebarButton"/>
 	<menu_item_check label="Schaltfläche „Bauen“" name="ShowBuildButton"/>
 	<menu_item_check label="Schaltfläche „Suchen“" name="ShowSearchButton"/>
 	<menu_item_check label="Schaltfläche „Karte“" name="ShowWorldMapButton"/>
diff --git a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
index edad34a1d5..641a0ceebe 100644
--- a/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_inspect_avatar_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
+<toggleable_menu name="Gear Menu">
 	<menu_item_call label="Profil anzeigen" name="view_profile"/>
 	<menu_item_call label="Freund hinzufügen" name="add_friend"/>
 	<menu_item_call label="IM" name="im"/>
@@ -11,9 +11,11 @@
 	<menu_item_call label="Melden" name="report"/>
 	<menu_item_call label="Einfrieren" name="freeze"/>
 	<menu_item_call label="Hinauswerfen" name="eject"/>
+	<menu_item_call label="Hinauswerfen" name="kick"/>
+	<menu_item_call label="CSR" name="csr"/>
 	<menu_item_call label="Fehler in Texturen beseitigen" name="debug"/>
 	<menu_item_call label="Auf Karte anzeigen" name="find_on_map"/>
 	<menu_item_call label="Hineinzoomen" name="zoom_in"/>
 	<menu_item_call label="Bezahlen" name="pay"/>
 	<menu_item_call label="Teilen" name="share"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml
index 851a96cc09..5979194bfb 100644
--- a/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/de/menu_inspect_self_gear.xml
@@ -1,10 +1,31 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="Hinsetzen" name="sit_down_here"/>
-	<menu_item_call label="Aufstehen" name="stand_up"/>
-	<menu_item_call label="Outfit ändern" name="change_outfit"/>
-	<menu_item_call label="Mein Profil" name="my_profile"/>
-	<menu_item_call label="Meine Freunde" name="my_friends"/>
-	<menu_item_call label="Meine Gruppen" name="my_groups"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Menu">
+	<menu_item_call label="Hinsetzen" name="Sit Down Here"/>
+	<menu_item_call label="Aufstehen" name="Stand Up"/>
+	<context_menu label="Ausziehen" name="Take Off &gt;">
+		<context_menu label="Kleidung" name="Clothes &gt;">
+			<menu_item_call label="Hemd" name="Shirt"/>
+			<menu_item_call label="Hose" name="Pants"/>
+			<menu_item_call label="Rock" name="Skirt"/>
+			<menu_item_call label="Schuhe" name="Shoes"/>
+			<menu_item_call label="Strümpfe" name="Socks"/>
+			<menu_item_call label="Jacke" name="Jacket"/>
+			<menu_item_call label="Handschuhe" name="Gloves"/>
+			<menu_item_call label="Unterhemd" name="Self Undershirt"/>
+			<menu_item_call label="Unterhose" name="Self Underpants"/>
+			<menu_item_call label="Tätowierung" name="Self Tattoo"/>
+			<menu_item_call label="Alpha" name="Self Alpha"/>
+			<menu_item_call label="Alle Kleider" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="HUD" name="Object Detach HUD"/>
+		<context_menu label="Abnehmen" name="Object Detach"/>
+		<menu_item_call label="Alles abnehmen" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Outfit ändern" name="Chenge Outfit"/>
+	<menu_item_call label="Mein Outfit bearbeiten" name="Edit Outfit"/>
+	<menu_item_call label="Meine Form bearbeiten" name="Edit My Shape"/>
+	<menu_item_call label="Meine Freunde" name="Friends..."/>
+	<menu_item_call label="Meine Gruppen" name="Groups..."/>
+	<menu_item_call label="Mein Profil" name="Profile..."/>
 	<menu_item_call label="Fehler in Texturen beseitigen" name="Debug..."/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
index df86a5cf71..48dec3e856 100644
--- a/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/de/menu_inventory_gear_default.xml
@@ -3,6 +3,7 @@
 	<menu_item_call label="Neues Inventar-Fenster" name="new_window"/>
 	<menu_item_check label="Nach Name sortieren" name="sort_by_name"/>
 	<menu_item_check label="Nach aktuellesten Objekten sortieren" name="sort_by_recent"/>
+	<menu_item_check label="Ordner immer nach Namen sortieren" name="sort_folders_by_name"/>
 	<menu_item_check label="Systemordner nach oben" name="sort_system_folders_to_top"/>
 	<menu_item_call label="Filter anzeigen" name="show_filters"/>
 	<menu_item_call label="Filter zurücksetzen" name="reset_filters"/>
diff --git a/indra/newview/skins/default/xui/de/menu_object.xml b/indra/newview/skins/default/xui/de/menu_object.xml
index 19057d4228..412bd3ac04 100644
--- a/indra/newview/skins/default/xui/de/menu_object.xml
+++ b/indra/newview/skins/default/xui/de/menu_object.xml
@@ -16,14 +16,14 @@
 		<context_menu label="Anhängen" name="Object Attach"/>
 		<context_menu label="HUD anhängen" name="Object Attach HUD"/>
 	</context_menu>
-	<context_menu label="Entfernen" name="Remove">
+	<context_menu label="Verwalten" name="Remove">
 		<menu_item_call label="Missbrauch melden" name="Report Abuse..."/>
 		<menu_item_call label="Ignorieren" name="Object Mute"/>
 		<menu_item_call label="Zurückgeben" name="Return..."/>
-		<menu_item_call label="Löschen" name="Delete"/>
 	</context_menu>
 	<menu_item_call label="Nehmen" name="Pie Object Take"/>
 	<menu_item_call label="Kopie nehmen" name="Take Copy"/>
 	<menu_item_call label="Bezahlen" name="Pay..."/>
 	<menu_item_call label="Kaufen" name="Buy..."/>
+	<menu_item_call label="Löschen" name="Delete"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml
index 132d3f6466..892f075d3c 100644
--- a/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml
+++ b/indra/newview/skins/default/xui/de/menu_places_gear_folder.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
+<toggleable_menu name="menu_folder_gear">
 	<menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
 	<menu_item_call label="Ordner hinzufügen" name="add_folder"/>
+	<menu_item_call label="Objekt wiederherstellen" name="restore_item"/>
 	<menu_item_call label="Ausschneiden" name="cut"/>
 	<menu_item_call label="Kopieren" name="copy_folder"/>
 	<menu_item_call label="Einfügen" name="paste"/>
@@ -12,4 +13,4 @@
 	<menu_item_call label="Alle Ordner aufklappen" name="expand_all"/>
 	<menu_item_call label="Alle Ordner schließen" name="collapse_all"/>
 	<menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml
index 6af4d644af..8955f797a2 100644
--- a/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml
+++ b/indra/newview/skins/default/xui/de/menu_places_gear_landmark.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
+<toggleable_menu name="menu_ladmark_gear">
 	<menu_item_call label="Teleportieren" name="teleport"/>
 	<menu_item_call label="Weitere Informationen" name="more_info"/>
 	<menu_item_call label="Auf Karte zeigen" name="show_on_map"/>
 	<menu_item_call label="Landmarke hinzufügen" name="add_landmark"/>
 	<menu_item_call label="Ordner hinzufügen" name="add_folder"/>
+	<menu_item_call label="Objekt wiederherstellen" name="restore_item"/>
 	<menu_item_call label="Ausschneiden" name="cut"/>
 	<menu_item_call label="Landmarke kopieren" name="copy_landmark"/>
 	<menu_item_call label="SLurl kopieren" name="copy_slurl"/>
@@ -15,4 +16,4 @@
 	<menu_item_call label="Alle Ordner schließen" name="collapse_all"/>
 	<menu_item_check label="Nach Datum sortieren" name="sort_by_date"/>
 	<menu_item_call label="Auswahl erstellen" name="create_pick"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/de/menu_viewer.xml b/indra/newview/skins/default/xui/de/menu_viewer.xml
index 4a043e1233..17bcb013cc 100644
--- a/indra/newview/skins/default/xui/de/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/de/menu_viewer.xml
@@ -7,7 +7,7 @@
 		</menu_item_call>
 		<menu_item_call label="L$ kaufen" name="Buy and Sell L$"/>
 		<menu_item_call label="Mein Profil" name="Profile"/>
-		<menu_item_call label="Outfit ändern" name="ChangeOutfit"/>
+		<menu_item_call label="Mein Aussehen" name="ChangeOutfit"/>
 		<menu_item_check label="Mein Inventar" name="Inventory"/>
 		<menu_item_check label="Mein Inventar" name="ShowSidetrayInventory"/>
 		<menu_item_check label="Meine Gesten" name="Gestures"/>
@@ -35,6 +35,7 @@
 	<menu label="Welt" name="World">
 		<menu_item_check label="Minikarte" name="Mini-Map"/>
 		<menu_item_check label="Karte" name="World Map"/>
+		<menu_item_check label="Suchen" name="Search"/>
 		<menu_item_call label="Foto" name="Take Snapshot"/>
 		<menu_item_call label="Landmarke für diesen Ort setzen" name="Create Landmark Here"/>
 		<menu label="Ortsprofil" name="Land">
@@ -228,8 +229,10 @@
 		<menu label="Info anzeigen" name="Display Info">
 			<menu_item_check label="Zeit anzeigen" name="Show Time"/>
 			<menu_item_check label="Render-Info anzeigen" name="Show Render Info"/>
+			<menu_item_check label="Texturinfos anzeigen" name="Show Texture Info"/>
 			<menu_item_check label="Matrizen anzeigen" name="Show Matrices"/>
 			<menu_item_check label="Farbe unter Cursor anzeigen" name="Show Color Under Cursor"/>
+			<menu_item_check label="Speicher anzeigen" name="Show Memory"/>
 			<menu_item_check label="Akutalisierungen an Objekten anzeigen" name="Show Updates"/>
 		</menu>
 		<menu label="Fehler erzwingen" name="Force Errors">
@@ -254,6 +257,7 @@
 			<menu_item_check label="Shadow Frusta" name="Shadow Frusta"/>
 			<menu_item_check label="Okklusion" name="Occlusion"/>
 			<menu_item_check label="Bündel rendern" name="Render Batches"/>
+			<menu_item_check label="Typ aktualisieren" name="Update Type"/>
 			<menu_item_check label="Texture-Anim" name="Texture Anim"/>
 			<menu_item_check label="Textur-Priorität" name="Texture Priority"/>
 			<menu_item_check label="Texturbereich" name="Texture Area"/>
diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml
index b0ad989a59..3c63c093d2 100644
--- a/indra/newview/skins/default/xui/de/notifications.xml
+++ b/indra/newview/skins/default/xui/de/notifications.xml
@@ -72,9 +72,9 @@ Fehlerdetails: The notification called &apos;[_NAME]&apos; was not found in noti
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="LoginFailedNoNetwork">
-		Eine Verbindung zum [SECOND_LIFE_GRID] konnte nicht hergestellt werden.
-&apos;[DIAGNOSTIC]&apos;
-Bitte vergewissern Sie sich, dass Ihre Internetverbindung funktioniert.
+		Verbindung nicht möglich zum [SECOND_LIFE_GRID].
+    &apos;[DIAGNOSTIC]&apos;
+Stellen Sie sicher, dass Ihre Internetverbindung funktioniert.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
 	<notification name="MessageTemplateNotFound">
@@ -340,13 +340,6 @@ Sie benötigen ein Konto, um [SECOND_LIFE] betreten zu können. Möchten Sie jet
 	<notification name="InvalidCredentialFormat">
 		Sie müssen entweder den Benutzernamen oder den Vor- und Nachnamen Ihres Avatars in das Feld „Benutzername“ eingeben und die Anmeldung dann erneut versuchen.
 	</notification>
-	<notification name="AddClassified">
-		Anzeigen werden im Suchverzeichnis im Abschnitt „Anzeigen&quot; und auf [http://secondlife.com/community/classifieds secondlife.com] für eine Woche angezeigt.
-Füllen Sie Ihre Anzeige aus und klicken Sie auf &apos;Veröffentlichen...&apos;, um sie zum Verzeichnis hinzuzufügen.
-Sie werden gebeten für die Anzeige zu bezahlen, wenn Sie auf &apos;Veröffentlichen&apos; klicken.
-Wenn Sie mehr bezahlen, erscheint Ihre Anzeige weiter oben in der Liste, ebenso wenn ein Benutzer nach Ihren Suchbegriffen sucht.
-		<usetemplate ignoretext="So wird eine neue Anzeige erstellt" name="okcancelignore" notext="Abbrechen" yestext="OK"/>
-	</notification>
 	<notification name="DeleteClassified">
 		Anzeige „[NAME]“ löschen?
 Gebühren werden nicht rückerstattet.
@@ -2768,11 +2761,11 @@ Die Schaltfläche wird angezeigt, wenn genügend Platz vorhanden ist.
 		Wählen Sie Einwohner aus, für die Sie das Objekt freigeben möchten.
 	</notification>
 	<notification name="ShareItemsConfirmation">
-		Möchten Sie diese Objekte wirklich für andere freigeben:
+		Möchten Sie wirklich die folgenden Objekte:
 
 &lt;nolink&gt;[ITEMS]&lt;/nolink&gt;
 
-Für folgende Einwohner:
+für folgende Einwohner freigeben:
 
 [RESIDENTS]
 		<usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/>
@@ -2863,9 +2856,6 @@ Alle stummschalten?
 	<notification label="Welt erkunden" name="HintDestinationGuide">
 		Im Reiseführer finden Sie Tausende von interessanten Orten. Wählen Sie einfach einen Ort aus und klicken Sie auf „Teleportieren“.
 	</notification>
-	<notification label="Aussehen ändern" name="HintAvatarPicker">
-		Möchten Sie einen neuen Look ausprobieren? Klicken Sie auf die Schaltfläche unten, um mehr Avatare zu sehen.
-	</notification>
 	<notification label="Seitenleiste" name="HintSidePanel">
 		In der Seitenleiste können Sie schnell auf Ihr Inventar, Ihre Outfits, Ihre Profile u. ä. zugreifen.
 	</notification>
@@ -2903,6 +2893,38 @@ Alle stummschalten?
 			<button name="cancel" text="Abbrechen"/>
 		</form>
 	</notification>
+	<notification label="" name="ModeChange">
+		Zum Wechsel des Modus müssen Sie das Programm beenden und neu starten.
+		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
+	</notification>
+	<notification label="" name="NoClassifieds">
+		Die Erstellung und Bearbeitung von Anzeigen ist nur im Modus „Erweitert“ möglich. Möchten Sie das Programm beenden und den Modus wechseln? Die Modusauswahl ist auf dem Anmeldebildschirm zu finden.
+		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
+	</notification>
+	<notification label="" name="NoGroupInfo">
+		Die Erstellung und Bearbeitung von Gruppen ist nur im Modus „Erweitert“ möglich. Möchten Sie das Programm beenden und den Modus wechseln? Die Modusauswahl ist auf dem Anmeldebildschirm zu finden.
+		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
+	</notification>
+	<notification label="" name="NoPicks">
+		Die Erstellung und Bearbeitung von Auswahlen ist nur im Modus „Erweitert“ möglich. Möchten Sie das Programm beenden und den Modus wechseln? Die Modusauswahl ist auf dem Anmeldebildschirm zu finden.
+		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
+	</notification>
+	<notification label="" name="NoWorldMap">
+		Die Anzeige der Weltkarte ist nur im Modus „Erweitert“ möglich. Möchten Sie das Programm beenden und den Modus wechseln? Die Modusauswahl ist auf dem Anmeldebildschirm zu finden.
+		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
+	</notification>
+	<notification label="" name="NoVoiceCall">
+		Voice-Anrufe sind nur im Modus „Erweitert“ möglich. Möchten Sie sich abmelden und den Modus wechseln?
+		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
+	</notification>
+	<notification label="" name="NoAvatarShare">
+		Die Freigabe ist nur im Modus „Erweitert“ möglich. Möchten Sie sich abmelden und den Modus wechseln?
+		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
+	</notification>
+	<notification label="" name="NoAvatarPay">
+		Die Bezahlung anderer Einwohner ist nur im Modus „Erweitert“ möglich. Möchten Sie sich abmelden und den Modus wechseln?
+		<usetemplate name="okcancelbuttons" notext="Nicht beenden" yestext="Beenden"/>
+	</notification>
 	<global name="UnsupportedCPU">
 		- Ihre CPU-Geschwindigkeit entspricht nicht den Mindestanforderungen.
 	</global>
diff --git a/indra/newview/skins/default/xui/de/panel_login.xml b/indra/newview/skins/default/xui/de/panel_login.xml
index 1bee6b1ead..553bd3e2ff 100644
--- a/indra/newview/skins/default/xui/de/panel_login.xml
+++ b/indra/newview/skins/default/xui/de/panel_login.xml
@@ -17,6 +17,13 @@
 			</text>
 			<check_box label="Kennwort merken" name="remember_check"/>
 			<button label="Anmelden" name="connect_btn"/>
+			<text name="mode_selection_text">
+				Modus:
+			</text>
+			<combo_box name="mode_combo" tool_tip="Wählen Sie den gewünschten Modus aus. Basis: Second Life schnell und einfach erkunden und chatten. Erweitert: Zugriff auf zusätzliche Funktionen.">
+				<combo_box.item label="Basis" name="Basic"/>
+				<combo_box.item label="Erweitert" name="Advanced"/>
+			</combo_box>
 			<text name="start_location_text">
 				Hier anfangen:
 			</text>
diff --git a/indra/newview/skins/default/xui/de/panel_nearby_media.xml b/indra/newview/skins/default/xui/de/panel_nearby_media.xml
index ef66148902..90885c7192 100644
--- a/indra/newview/skins/default/xui/de/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/de/panel_nearby_media.xml
@@ -19,7 +19,7 @@
 		<button label="Stoppen" name="all_nearby_media_disable_btn" tool_tip="Alle Medien in der Nähe ausschalten"/>
 		<button label="Starten" name="all_nearby_media_enable_btn" tool_tip="Alle Medien in der Nähe einschalten"/>
 		<button name="open_prefs_btn" tool_tip="Medien-Einstellungen öffnen"/>
-		<button label="Mehr &gt;&gt;" label_selected="Weniger &lt;&lt;" name="more_btn" tool_tip="Erweiterte Steuerung"/>
+		<button label="Mehr &gt;&gt;" label_selected="&lt;&lt; Weniger" name="more_btn" tool_tip="Erweiterte Steuerung"/>
 		<button label="Mehr &gt;&gt;" label_selected="Weniger &lt;&lt;" name="less_btn" tool_tip="Erweiterte Steuerung"/>
 	</panel>
 	<panel name="nearby_media_panel">
diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml
index 99e0b933b8..004792bbf5 100644
--- a/indra/newview/skins/default/xui/de/panel_people.xml
+++ b/indra/newview/skins/default/xui/de/panel_people.xml
@@ -18,6 +18,8 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte].
 	<string name="groups_filter_label" value="Nach Gruppen filtern"/>
 	<string name="no_filtered_groups_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/groups/[SEARCH_TERM] Suche]."/>
 	<string name="no_groups_msg" value="Suchen Sie nach Gruppen? Versuchen Sie es mit der [secondlife:///app/search/groups Suche]."/>
+	<string name="MiniMapToolTipMsg" value="[REGION](Doppelklicken, um Karte zu öffnen; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
+	<string name="AltMiniMapToolTipMsg" value="[REGION](Doppelklicken, um zu teleportieren; Umschalttaste gedrückt halten und ziehen, um zu schwenken)"/>
 	<filter_editor label="Filter" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="IN DER NÄHE" name="nearby_panel">
diff --git a/indra/newview/skins/default/xui/de/panel_profile.xml b/indra/newview/skins/default/xui/de/panel_profile.xml
index 938631f65d..b4c6e67108 100644
--- a/indra/newview/skins/default/xui/de/panel_profile.xml
+++ b/indra/newview/skins/default/xui/de/panel_profile.xml
@@ -16,6 +16,12 @@
 	<string name="RegisterDateFormat">
 		[REG_DATE] ([AGE])
 	</string>
+	<string name="name_text_args">
+		[NAME]
+	</string>
+	<string name="display_name_text_args">
+		[DISPLAY_NAME]
+	</string>
 	<layout_stack name="layout">
 		<layout_panel name="profile_stack">
 			<scroll_container name="profile_scroll">
@@ -34,7 +40,7 @@
 					</text_editor>
 					<text name="title_partner_text" value="Partner:"/>
 					<panel name="partner_data_panel">
-						<name_box initial_value="(wird in Datenbank gesucht)" name="partner_text"/>
+						<text initial_value="(wird in Datenbank gesucht)" name="partner_text"/>
 					</panel>
 					<text name="title_groups_text" value="Gruppen:"/>
 				</panel>
diff --git a/indra/newview/skins/default/xui/de/panel_script_ed.xml b/indra/newview/skins/default/xui/de/panel_script_ed.xml
index 73789f06d8..adfe2a342b 100644
--- a/indra/newview/skins/default/xui/de/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/de/panel_script_ed.xml
@@ -15,6 +15,9 @@
 	<panel.string name="Title">
 		Skript: [NAME]
 	</panel.string>
+	<panel.string name="external_editor_not_set">
+		Wählen Sie über die Umgebungsvariable „LL_SCRIPT_EDITOR“ oder die Einstellung „ExternalEditor“ einen Editor aus.
+	</panel.string>
 	<menu_bar name="script_menu">
 		<menu label="Datei" name="File">
 			<menu_item_call label="Speichern" name="Save"/>
diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml
index 7284e40be2..0c621db6b0 100644
--- a/indra/newview/skins/default/xui/de/strings.xml
+++ b/indra/newview/skins/default/xui/de/strings.xml
@@ -1067,7 +1067,7 @@
 	<string name="PermNo">
 		Nein
 	</string>
-	<string name="Chat" value=" Chat:"/>
+	<string name="Chat Message" value="Chat:"/>
 	<string name="Sound" value=" Sound:"/>
 	<string name="Wait" value=" --- Warten:"/>
 	<string name="AnimFlagStop" value=" Animation stoppen:"/>
@@ -1864,12 +1864,6 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh
 	<string name="accel-win-shift">
 		Umschalt+
 	</string>
-	<string name="Esc">
-		Esc
-	</string>
-	<string name="Home">
-		Zuhause
-	</string>
 	<string name="FileSaved">
 		Datei wurde gespeichert
 	</string>
@@ -1898,7 +1892,7 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh
 		Rechts
 	</string>
 	<string name="Direction_Back">
-		Hinten
+		Zurück
 	</string>
 	<string name="Direction_North">
 		Norden
@@ -1987,6 +1981,9 @@ Gültige Formate: .wav, .tga, .bmp, .jpg, .jpeg oder .bvh
 	<string name="Other">
 		Sonstige
 	</string>
+	<string name="Rental">
+		Vermietung
+	</string>
 	<string name="Any">
 		Alle
 	</string>
@@ -3966,7 +3963,7 @@ Missbrauchsbericht
 	<string name="Notices">
 		Mitteilungen
 	</string>
-	<string name="Chat">
+	<string name="Chat" value=" Chat:">
 		Chat
 	</string>
 	<string name="DeleteItems">
@@ -3978,4 +3975,348 @@ Missbrauchsbericht
 	<string name="EmptyOutfitText">
 		Keine Objekte in diesem Outfit
 	</string>
+	<string name="ExternalEditorNotSet">
+		Wählen Sie über die Einstellung „ExternalEditor“ einen Editor aus
+	</string>
+	<string name="ExternalEditorNotFound">
+		Angegebener externer Editor nicht gefunden.
+Setzen Sie den Editorpfad in Anführungszeichen
+(z. B. &quot;/pfad/editor&quot; &quot;%s&quot;).
+	</string>
+	<string name="ExternalEditorCommandParseError">
+		Fehler beim Parsen des externen Editorbefehls.
+	</string>
+	<string name="ExternalEditorFailedToRun">
+		Externer Editor konnte nicht ausgeführt werden.
+	</string>
+	<string name="Esc">
+		Esc
+	</string>
+	<string name="Space">
+		Space
+	</string>
+	<string name="Enter">
+		Enter
+	</string>
+	<string name="Tab">
+		Tab
+	</string>
+	<string name="Ins">
+		Ins
+	</string>
+	<string name="Del">
+		Del
+	</string>
+	<string name="Backsp">
+		Backsp
+	</string>
+	<string name="Shift">
+		Shift
+	</string>
+	<string name="Ctrl">
+		Ctrl
+	</string>
+	<string name="Alt">
+		Alt
+	</string>
+	<string name="CapsLock">
+		CapsLock
+	</string>
+	<string name="Home">
+		Zuhause
+	</string>
+	<string name="End">
+		End
+	</string>
+	<string name="PgUp">
+		PgUp
+	</string>
+	<string name="PgDn">
+		PgDn
+	</string>
+	<string name="F1">
+		F1
+	</string>
+	<string name="F2">
+		F2
+	</string>
+	<string name="F3">
+		F3
+	</string>
+	<string name="F4">
+		F4
+	</string>
+	<string name="F5">
+		F5
+	</string>
+	<string name="F6">
+		F6
+	</string>
+	<string name="F7">
+		F7
+	</string>
+	<string name="F8">
+		F8
+	</string>
+	<string name="F9">
+		F9
+	</string>
+	<string name="F10">
+		F10
+	</string>
+	<string name="F11">
+		F11
+	</string>
+	<string name="F12">
+		F12
+	</string>
+	<string name="Add">
+		Addieren
+	</string>
+	<string name="Subtract">
+		Subtrahieren
+	</string>
+	<string name="Multiply">
+		Multiplizieren
+	</string>
+	<string name="Divide">
+		Dividieren
+	</string>
+	<string name="PAD_DIVIDE">
+		PAD_DIVIDE
+	</string>
+	<string name="PAD_LEFT">
+		PAD_LEFT
+	</string>
+	<string name="PAD_RIGHT">
+		PAD_RIGHT
+	</string>
+	<string name="PAD_DOWN">
+		PAD_DOWN
+	</string>
+	<string name="PAD_UP">
+		PAD_UP
+	</string>
+	<string name="PAD_HOME">
+		PAD_HOME
+	</string>
+	<string name="PAD_END">
+		PAD_END
+	</string>
+	<string name="PAD_PGUP">
+		PAD_PGUP
+	</string>
+	<string name="PAD_PGDN">
+		PAD_PGDN
+	</string>
+	<string name="PAD_CENTER">
+		PAD_CENTER
+	</string>
+	<string name="PAD_INS">
+		PAD_INS
+	</string>
+	<string name="PAD_DEL">
+		PAD_DEL
+	</string>
+	<string name="PAD_Enter">
+		PAD_Enter
+	</string>
+	<string name="PAD_BUTTON0">
+		PAD_BUTTON0
+	</string>
+	<string name="PAD_BUTTON1">
+		PAD_BUTTON1
+	</string>
+	<string name="PAD_BUTTON2">
+		PAD_BUTTON2
+	</string>
+	<string name="PAD_BUTTON3">
+		PAD_BUTTON3
+	</string>
+	<string name="PAD_BUTTON4">
+		PAD_BUTTON4
+	</string>
+	<string name="PAD_BUTTON5">
+		PAD_BUTTON5
+	</string>
+	<string name="PAD_BUTTON6">
+		PAD_BUTTON6
+	</string>
+	<string name="PAD_BUTTON7">
+		PAD_BUTTON7
+	</string>
+	<string name="PAD_BUTTON8">
+		PAD_BUTTON8
+	</string>
+	<string name="PAD_BUTTON9">
+		PAD_BUTTON9
+	</string>
+	<string name="PAD_BUTTON10">
+		PAD_BUTTON10
+	</string>
+	<string name="PAD_BUTTON11">
+		PAD_BUTTON11
+	</string>
+	<string name="PAD_BUTTON12">
+		PAD_BUTTON12
+	</string>
+	<string name="PAD_BUTTON13">
+		PAD_BUTTON13
+	</string>
+	<string name="PAD_BUTTON14">
+		PAD_BUTTON14
+	</string>
+	<string name="PAD_BUTTON15">
+		PAD_BUTTON15
+	</string>
+	<string name="-">
+		-
+	</string>
+	<string name="=">
+		=
+	</string>
+	<string name="`">
+		`
+	</string>
+	<string name=";">
+		;
+	</string>
+	<string name="[">
+		[
+	</string>
+	<string name="]">
+		]
+	</string>
+	<string name="\">
+		\
+	</string>
+	<string name="0">
+		0
+	</string>
+	<string name="1">
+		1
+	</string>
+	<string name="2">
+		2
+	</string>
+	<string name="3">
+		3
+	</string>
+	<string name="4">
+		4
+	</string>
+	<string name="5">
+		5
+	</string>
+	<string name="6">
+		6
+	</string>
+	<string name="7">
+		7
+	</string>
+	<string name="8">
+		8
+	</string>
+	<string name="9">
+		9
+	</string>
+	<string name="A">
+		A
+	</string>
+	<string name="B">
+		B
+	</string>
+	<string name="C">
+		C
+	</string>
+	<string name="D">
+		D
+	</string>
+	<string name="E">
+		E
+	</string>
+	<string name="F">
+		F
+	</string>
+	<string name="G">
+		G
+	</string>
+	<string name="H">
+		H
+	</string>
+	<string name="I">
+		I
+	</string>
+	<string name="J">
+		J
+	</string>
+	<string name="K">
+		K
+	</string>
+	<string name="L">
+		L
+	</string>
+	<string name="M">
+		M
+	</string>
+	<string name="N">
+		N
+	</string>
+	<string name="O">
+		O
+	</string>
+	<string name="P">
+		P
+	</string>
+	<string name="Q">
+		Q
+	</string>
+	<string name="R">
+		R
+	</string>
+	<string name="S">
+		S
+	</string>
+	<string name="T">
+		T
+	</string>
+	<string name="U">
+		U
+	</string>
+	<string name="V">
+		V
+	</string>
+	<string name="W">
+		W
+	</string>
+	<string name="X">
+		X
+	</string>
+	<string name="Y">
+		Y
+	</string>
+	<string name="Z">
+		Z
+	</string>
+	<string name="BeaconParticle">
+		Partikel-Beacons werden angezeigt (blau)
+	</string>
+	<string name="BeaconPhysical">
+		Beacons für physische Objekte werden angezeigt (grün)
+	</string>
+	<string name="BeaconScripted">
+		Beacons für Skriptobjekte werden angezeigt (rot)
+	</string>
+	<string name="BeaconScriptedTouch">
+		Beacons für Skriptobjekte mit Berührungsfunktion werden angezeigt (rot)
+	</string>
+	<string name="BeaconSound">
+		Sound-Beacons werden angezeigt (gelb)
+	</string>
+	<string name="BeaconMedia">
+		Medien-Beacons werden angezeigt (weiß)
+	</string>
+	<string name="ParticleHiding">
+		Partikel werden ausgeblendet
+	</string>
 </strings>
diff --git a/indra/newview/skins/default/xui/es/floater_about_land.xml b/indra/newview/skins/default/xui/es/floater_about_land.xml
index 3f50437c13..3df0f92842 100644
--- a/indra/newview/skins/default/xui/es/floater_about_land.xml
+++ b/indra/newview/skins/default/xui/es/floater_about_land.xml
@@ -215,7 +215,7 @@ Vaya al menú Mundo &gt; Acerca del terreno o seleccione otra parcela para ver s
 			<text name="Simulator primitive usage:">
 				Uso de primitivas:
 			</text>
-			<text  name="objects_available">
+			<text name="objects_available">
 				[COUNT] de un máx. de [MAX] ([AVAILABLE] disponibles)
 			</text>
 			<text name="Primitives parcel supports:">
@@ -347,6 +347,7 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
 				<combo_box.item label="Parques y Naturaleza" name="item9"/>
 				<combo_box.item label="Residencial" name="item10"/>
 				<combo_box.item label="Compras" name="item11"/>
+				<combo_box.item label="Terreno en alquiler" name="item13"/>
 				<combo_box.item label="Otra" name="item12"/>
 			</combo_box>
 			<combo_box name="land category">
@@ -361,6 +362,7 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda.
 				<combo_box.item label="Parques y Naturaleza" name="item9"/>
 				<combo_box.item label="Residencial" name="item10"/>
 				<combo_box.item label="Compras" name="item11"/>
+				<combo_box.item label="Terreno en alquiler" name="item13"/>
 				<combo_box.item label="Otra" name="item12"/>
 			</combo_box>
 			<check_box label="Contenido &apos;Mature&apos;" name="MatureCheck" tool_tip=""/>
@@ -439,7 +441,7 @@ los media:
 				(Definido por el Estado)
 			</panel.string>
 			<panel.string name="allow_public_access">
-				Permitir el acceso público ([MATURITY])
+				Permitir el acceso público ([MATURITY]) (Nota: Si no seleccionas esta opción, se crearán líneas de prohibición)
 			</panel.string>
 			<panel.string name="estate_override">
 				Una o más de esta opciones está configurada a nivel del estado
diff --git a/indra/newview/skins/default/xui/es/floater_map.xml b/indra/newview/skins/default/xui/es/floater_map.xml
index fa01a4a635..370b7f5053 100644
--- a/indra/newview/skins/default/xui/es/floater_map.xml
+++ b/indra/newview/skins/default/xui/es/floater_map.xml
@@ -3,6 +3,9 @@
 	<floater.string name="ToolTipMsg">
 		[REGIÓN](Haz doble clic para abrir el mapa y pulsa la tecla Mayús y arrastra para obtener una vista panorámica)
 	</floater.string>
+	<floater.string name="AltToolTipMsg">
+		[REGION](Pulsa dos veces para teleportarte, pulsa mayús y arrastra para obtener una panorámica)
+	</floater.string>
 	<floater.string name="mini_map_caption">
 		MINIMAPA
 	</floater.string>
diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml
index e2ff4a25ce..fba969f267 100644
--- a/indra/newview/skins/default/xui/es/floater_tools.xml
+++ b/indra/newview/skins/default/xui/es/floater_tools.xml
@@ -64,6 +64,8 @@
 		<radio_item label="Elegir la cara" name="radio select face"/>
 	</radio_group>
 	<check_box label="Editar las partes enlazadas" name="checkbox edit linked parts"/>
+	<button label="Enlazar" name="link_btn"/>
+	<button label="Desenlazar" name="unlink_btn"/>
 	<text name="RenderingCost" tool_tip="Muestra cuánto se calcula que cuesta renderizar este objeto">
 		þ: [COUNT]
 	</text>
diff --git a/indra/newview/skins/default/xui/es/menu_attachment_self.xml b/indra/newview/skins/default/xui/es/menu_attachment_self.xml
index ab76c92d65..0ba39378bb 100644
--- a/indra/newview/skins/default/xui/es/menu_attachment_self.xml
+++ b/indra/newview/skins/default/xui/es/menu_attachment_self.xml
@@ -5,7 +5,7 @@
 	<menu_item_call label="Quitar" name="Detach"/>
 	<menu_item_call label="Sentarte" name="Sit Down Here"/>
 	<menu_item_call label="Levantarme" name="Stand Up"/>
-	<menu_item_call label="Cambiar vestuario" name="Change Outfit"/>
+	<menu_item_call label="Mi apariencia" name="Change Outfit"/>
 	<menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
 	<menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
 	<menu_item_call label="Mis amigos" name="Friends..."/>
diff --git a/indra/newview/skins/default/xui/es/menu_avatar_self.xml b/indra/newview/skins/default/xui/es/menu_avatar_self.xml
index 50f8384b0f..a2d86d78c1 100644
--- a/indra/newview/skins/default/xui/es/menu_avatar_self.xml
+++ b/indra/newview/skins/default/xui/es/menu_avatar_self.xml
@@ -21,7 +21,7 @@
 		<context_menu label="Quitar" name="Object Detach"/>
 		<menu_item_call label="Quitarse todo" name="Detach All"/>
 	</context_menu>
-	<menu_item_call label="Cambiar vestuario" name="Chenge Outfit"/>
+	<menu_item_call label="Mi apariencia" name="Chenge Outfit"/>
 	<menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
 	<menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
 	<menu_item_call label="Mis amigos" name="Friends..."/>
diff --git a/indra/newview/skins/default/xui/es/menu_bottomtray.xml b/indra/newview/skins/default/xui/es/menu_bottomtray.xml
index 62683f3076..a16da5ae9e 100644
--- a/indra/newview/skins/default/xui/es/menu_bottomtray.xml
+++ b/indra/newview/skins/default/xui/es/menu_bottomtray.xml
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <menu name="hide_camera_move_controls_menu">
+	<menu_item_check label="Voz activada" name="EnableVoiceChat"/>
 	<menu_item_check label="Botón Gestos" name="ShowGestureButton"/>
 	<menu_item_check label="Botón Moverse" name="ShowMoveButton"/>
 	<menu_item_check label="Botón Vista" name="ShowCameraButton"/>
 	<menu_item_check label="Botón Foto" name="ShowSnapshotButton"/>
-	<menu_item_check label="Botón Barra lateral" name="ShowSidebarButton"/>
 	<menu_item_check label="Botón Construir" name="ShowBuildButton"/>
 	<menu_item_check label="Botón Buscar" name="ShowSearchButton"/>
 	<menu_item_check label="Botón Mapa" name="ShowWorldMapButton"/>
diff --git a/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml
index 236289f82a..bee4c61da2 100644
--- a/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_inspect_avatar_gear.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
+<toggleable_menu name="Gear Menu">
 	<menu_item_call label="Ver el perfil" name="view_profile"/>
 	<menu_item_call label="Añadir como amigo" name="add_friend"/>
 	<menu_item_call label="MI" name="im"/>
@@ -11,9 +11,11 @@
 	<menu_item_call label="Denunciar" name="report"/>
 	<menu_item_call label="Congelar" name="freeze"/>
 	<menu_item_call label="Expulsar" name="eject"/>
+	<menu_item_call label="Expulsar" name="kick"/>
+	<menu_item_call label="CSR" name="csr"/>
 	<menu_item_call label="Depurar las texturas" name="debug"/>
 	<menu_item_call label="Encontrar en el mapa" name="find_on_map"/>
 	<menu_item_call label="Acercar el zoom" name="zoom_in"/>
 	<menu_item_call label="Pagar" name="pay"/>
 	<menu_item_call label="Compartir" name="share"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
index c8a1e9d9da..29ad718fdd 100644
--- a/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
+++ b/indra/newview/skins/default/xui/es/menu_inspect_self_gear.xml
@@ -1,10 +1,31 @@
-<?xml version="1.0" encoding="utf-8"?>
-<menu name="Gear Menu">
-	<menu_item_call label="Sentarte" name="sit_down_here"/>
-	<menu_item_call label="Levantarme" name="stand_up"/>
-	<menu_item_call label="Cambiar vestuario" name="change_outfit"/>
-	<menu_item_call label="Mi perfil" name="my_profile"/>
-	<menu_item_call label="Mis amigos" name="my_friends"/>
-	<menu_item_call label="Mis grupos" name="my_groups"/>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
+<toggleable_menu name="Gear Menu">
+	<menu_item_call label="Sentarme" name="Sit Down Here"/>
+	<menu_item_call label="Levantarme" name="Stand Up"/>
+	<context_menu label="Quitarme" name="Take Off &gt;">
+		<context_menu label="Ropas" name="Clothes &gt;">
+			<menu_item_call label="Camisa" name="Shirt"/>
+			<menu_item_call label="Pantalones" name="Pants"/>
+			<menu_item_call label="Falda" name="Skirt"/>
+			<menu_item_call label="Zapatos" name="Shoes"/>
+			<menu_item_call label="Calcetines" name="Socks"/>
+			<menu_item_call label="Chaqueta" name="Jacket"/>
+			<menu_item_call label="Guantes" name="Gloves"/>
+			<menu_item_call label="Camiseta" name="Self Undershirt"/>
+			<menu_item_call label="Ropa interior" name="Self Underpants"/>
+			<menu_item_call label="Tatuaje" name="Self Tattoo"/>
+			<menu_item_call label="Alfa" name="Self Alpha"/>
+			<menu_item_call label="Toda la ropa" name="All Clothes"/>
+		</context_menu>
+		<context_menu label="HUD" name="Object Detach HUD"/>
+		<context_menu label="Quitar" name="Object Detach"/>
+		<menu_item_call label="Quitarse todo" name="Detach All"/>
+	</context_menu>
+	<menu_item_call label="Cambiar vestuario" name="Chenge Outfit"/>
+	<menu_item_call label="Editar mi vestuario" name="Edit Outfit"/>
+	<menu_item_call label="Editar mi anatomía" name="Edit My Shape"/>
+	<menu_item_call label="Mis amigos" name="Friends..."/>
+	<menu_item_call label="Mis grupos" name="Groups..."/>
+	<menu_item_call label="Mi perfil" name="Profile..."/>
 	<menu_item_call label="Depurar las texturas" name="Debug..."/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml b/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml
index 8e498fefba..0e9644629e 100644
--- a/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml
+++ b/indra/newview/skins/default/xui/es/menu_inventory_gear_default.xml
@@ -3,6 +3,7 @@
 	<menu_item_call label="Nueva ventana del inventario" name="new_window"/>
 	<menu_item_check label="Ordenar alfabéticamente" name="sort_by_name"/>
 	<menu_item_check label="Ordenar por los más recientes" name="sort_by_recent"/>
+	<menu_item_check label="Ordenar las carpetas siempre alfabéticamente" name="sort_folders_by_name"/>
 	<menu_item_check label="Las carpetas del sistema, arriba" name="sort_system_folders_to_top"/>
 	<menu_item_call label="Ver los filtros" name="show_filters"/>
 	<menu_item_call label="Restablecer los filtros" name="reset_filters"/>
diff --git a/indra/newview/skins/default/xui/es/menu_object.xml b/indra/newview/skins/default/xui/es/menu_object.xml
index 06121e0c09..d8c75eaf47 100644
--- a/indra/newview/skins/default/xui/es/menu_object.xml
+++ b/indra/newview/skins/default/xui/es/menu_object.xml
@@ -16,14 +16,14 @@
 		<context_menu label="Anexar" name="Object Attach"/>
 		<context_menu label="Anexar el HUD" name="Object Attach HUD"/>
 	</context_menu>
-	<context_menu label="Quitar" name="Remove">
+	<context_menu label="Gestionar" name="Remove">
 		<menu_item_call label="Denunciar una infracción" name="Report Abuse..."/>
 		<menu_item_call label="Ignorar" name="Object Mute"/>
 		<menu_item_call label="Devolver" name="Return..."/>
-		<menu_item_call label="Eliminar" name="Delete"/>
 	</context_menu>
 	<menu_item_call label="Tomar" name="Pie Object Take"/>
 	<menu_item_call label="Coger una copia" name="Take Copy"/>
 	<menu_item_call label="Pagar" name="Pay..."/>
 	<menu_item_call label="Comprar" name="Buy..."/>
+	<menu_item_call label="Borrar" name="Delete"/>
 </context_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml b/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml
index bf46eb58e3..4051ff4075 100644
--- a/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml
+++ b/indra/newview/skins/default/xui/es/menu_places_gear_folder.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_folder_gear">
+<toggleable_menu name="menu_folder_gear">
 	<menu_item_call label="Añadir este hito" name="add_landmark"/>
 	<menu_item_call label="Añadir una carpeta" name="add_folder"/>
+	<menu_item_call label="Restaurar ítem" name="restore_item"/>
 	<menu_item_call label="Cortar" name="cut"/>
 	<menu_item_call label="Copiar" name="copy_folder"/>
 	<menu_item_call label="Pegar" name="paste"/>
@@ -12,4 +13,4 @@
 	<menu_item_call label="Abrir todas las carpetas" name="expand_all"/>
 	<menu_item_call label="Cerrar todas las carpetas" name="collapse_all"/>
 	<menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml b/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml
index eac85de846..c92bd19787 100644
--- a/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml
+++ b/indra/newview/skins/default/xui/es/menu_places_gear_landmark.xml
@@ -1,10 +1,11 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
-<menu name="menu_ladmark_gear">
+<toggleable_menu name="menu_ladmark_gear">
 	<menu_item_call label="Teleportar" name="teleport"/>
 	<menu_item_call label="Más información" name="more_info"/>
 	<menu_item_call label="Mostrar en el mapa" name="show_on_map"/>
 	<menu_item_call label="Añadir un hito" name="add_landmark"/>
 	<menu_item_call label="Añadir una carpeta" name="add_folder"/>
+	<menu_item_call label="Restaurar ítem" name="restore_item"/>
 	<menu_item_call label="Cortar" name="cut"/>
 	<menu_item_call label="Copiar el hito" name="copy_landmark"/>
 	<menu_item_call label="Copiar la SLurl" name="copy_slurl"/>
@@ -15,4 +16,4 @@
 	<menu_item_call label="Cerrar todas las carpetas" name="collapse_all"/>
 	<menu_item_check label="Ordenar por fecha" name="sort_by_date"/>
 	<menu_item_call label="Crear un Destacado" name="create_pick"/>
-</menu>
+</toggleable_menu>
diff --git a/indra/newview/skins/default/xui/es/menu_viewer.xml b/indra/newview/skins/default/xui/es/menu_viewer.xml
index 2fe7db1041..c48203f95c 100644
--- a/indra/newview/skins/default/xui/es/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/es/menu_viewer.xml
@@ -7,7 +7,7 @@
 		</menu_item_call>
 		<menu_item_call label="Comprar L$" name="Buy and Sell L$"/>
 		<menu_item_call label="Mi perfil" name="Profile"/>
-		<menu_item_call label="Cambiar vestuario" name="ChangeOutfit"/>
+		<menu_item_call label="Mi apariencia" name="ChangeOutfit"/>
 		<menu_item_check label="Mi Inventario" name="Inventory"/>
 		<menu_item_check label="Mi Inventario" name="ShowSidetrayInventory"/>
 		<menu_item_check label="Mis gestos" name="Gestures"/>
@@ -35,6 +35,7 @@
 	<menu label="Mundo" name="World">
 		<menu_item_check label="Minimapa" name="Mini-Map"/>
 		<menu_item_check label="Mapa del mundo" name="World Map"/>
+		<menu_item_check label="Buscar" name="Search"/>
 		<menu_item_call label="Foto" name="Take Snapshot"/>
 		<menu_item_call label="Crear un hito de este sitio" name="Create Landmark Here"/>
 		<menu label="Perfil del lugar" name="Land">
@@ -224,7 +225,9 @@
 		<menu label="Show Info" name="Display Info">
 			<menu_item_check label="Show Time" name="Show Time"/>
 			<menu_item_check label="Show Render Info" name="Show Render Info"/>
+			<menu_item_check label="Mostrar información de textura" name="Show Texture Info"/>
 			<menu_item_check label="Show Color Under Cursor" name="Show Color Under Cursor"/>
+			<menu_item_check label="Mostrar la memoria" name="Show Memory"/>
 			<menu_item_check label="Show Updates to Objects" name="Show Updates"/>
 		</menu>
 		<menu label="Force an Error" name="Force Errors">
@@ -242,6 +245,9 @@
 			<menu_item_check label="Randomize Framerate" name="Randomize Framerate"/>
 			<menu_item_check label="Frame Test" name="Frame Test"/>
 		</menu>
+		<menu label="Render Metadata" name="Render Metadata">
+			<menu_item_check label="Actualizar el tipo" name="Update Type"/>
+		</menu>
 		<menu label="Rendering" name="Rendering">
 			<menu_item_check label="Axes" name="Axes"/>
 			<menu_item_check label="Wireframe" name="Wireframe"/>
diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml
index 2bf36bb763..1379f710c3 100644
--- a/indra/newview/skins/default/xui/es/notifications.xml
+++ b/indra/newview/skins/default/xui/es/notifications.xml
@@ -73,7 +73,7 @@ Detalles del error: la notificación de nombre &apos;[_NAME]&apos; no se ha enco
 	</notification>
 	<notification name="LoginFailedNoNetwork">
 		No se puede conectar con [SECOND_LIFE_GRID].
-&apos;[DIAGNOSTIC]&apos;
+    &apos;[DIAGNOSTIC]&apos;
 Asegúrate de que tu conexión a Internet está funcionando adecuadamente.
 		<usetemplate name="okbutton" yestext="OK"/>
 	</notification>
@@ -330,13 +330,6 @@ Necesitas una cuenta para acceder a [SECOND_LIFE]. ¿Te gustaría crear una ahor
 	<notification name="InvalidCredentialFormat">
 		Escribe el nombre de usuario o el nombre y el apellido de tu avatar en el campo Nombre de usuario e inicia sesión otra vez.
 	</notification>
-	<notification name="AddClassified">
-		Los anuncios clasificados aparecen durante una semana en la sección &apos;Clasificados&apos; de la búsqueda y en [http://secondlife.com/community/classifieds secondlife.com].
-Rellena tu anuncio y pulsa &apos;Publicar...&apos; para añadirlo al directorio.
-Cuando pulses Publicar, se te preguntará por un precio a pagar.
-El pagar más hará que tu anuncio aparezca más arriba en la lista, y que también aparezca más arriba en la lista cuando la gente busque por palabras clave.
-		<usetemplate ignoretext="Cómo crear un anuncio clasificado nuevo." name="okcancelignore" notext="Cancelar" yestext="OK"/>
-	</notification>
 	<notification name="DeleteClassified">
 		¿Borrar el clasificado &apos;[NAME]&apos;?
 No se reembolsan las cuotas pagadas.
@@ -2851,9 +2844,6 @@ Si lo haces, todos los residentes que se unan posteriormente a la llamada tambi
 	<notification label="Explora el mundo" name="HintDestinationGuide">
 		La Guía de destinos contiene miles de nuevos lugares por descubrir. Selecciona una ubicación y elige Teleportarme para iniciar la exploración.
 	</notification>
-	<notification label="Cambiar de apariencia" name="HintAvatarPicker">
-		¿Te gustaría cambiar de apariencia? Haz clic en el botón que aparece a continuación para ver más avatares.
-	</notification>
 	<notification label="Panel lateral" name="HintSidePanel">
 		Accede de manera rápida a tu inventario, así como a tu ropa, los perfiles y el resto de la información disponible en el panel lateral.
 	</notification>
@@ -2891,6 +2881,38 @@ Si lo haces, todos los residentes que se unan posteriormente a la llamada tambi
 			<button name="cancel" text="Cancelar"/>
 		</form>
 	</notification>
+	<notification label="" name="ModeChange">
+		Para cambiar de modo tienes que salir y reiniciar.
+		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
+	</notification>
+	<notification label="" name="NoClassifieds">
+		La creación y edición de clasificados sólo está disponible en el modo Avanzado. ¿Quieres salir y cambiar de modo? El selector de modo se encuentra en la pantalla de inicio de sesión.
+		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
+	</notification>
+	<notification label="" name="NoGroupInfo">
+		La creación y edición de grupos sólo está disponible en el modo Avanzado. ¿Quieres salir y cambiar de modo? El selector de modo se encuentra en la pantalla de inicio de sesión.
+		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
+	</notification>
+	<notification label="" name="NoPicks">
+		La creación y edición de Destacados sólo está disponible en el modo Avanzado. ¿Quieres salir y cambiar de modo? El selector de modo se encuentra en la pantalla de inicio de sesión.
+		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
+	</notification>
+	<notification label="" name="NoWorldMap">
+		La visualización del mapa del mundo sólo está disponible en el modo Avanzado. ¿Quieres salir y cambiar de modo? El selector de modo se encuentra en la pantalla de inicio de sesión.
+		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
+	</notification>
+	<notification label="" name="NoVoiceCall">
+		Las llamadas de voz sólo están disponibles en el modo Avanzado. ¿Quieres cerrar sesión y cambiar de modo?
+		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
+	</notification>
+	<notification label="" name="NoAvatarShare">
+		Compartir sólo está disponible en el modo Avanzado. ¿Quieres cerrar sesión y cambiar de modo?
+		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
+	</notification>
+	<notification label="" name="NoAvatarPay">
+		El pago a otros residentes sólo está disponible en el modo Avanzado. ¿Quieres cerrar sesión y cambiar de modo?
+		<usetemplate name="okcancelbuttons" notext="No salir" yestext="Salir"/>
+	</notification>
 	<global name="UnsupportedCPU">
 		- La velocidad de tu CPU no cumple los requerimientos mínimos.
 	</global>
diff --git a/indra/newview/skins/default/xui/es/panel_login.xml b/indra/newview/skins/default/xui/es/panel_login.xml
index ada964f33e..eee1844c46 100644
--- a/indra/newview/skins/default/xui/es/panel_login.xml
+++ b/indra/newview/skins/default/xui/es/panel_login.xml
@@ -17,6 +17,13 @@
 			</text>
 			<check_box label="Recordar la contraseña" name="remember_check"/>
 			<button label="Iniciar sesión" name="connect_btn"/>
+			<text name="mode_selection_text">
+				Modo:
+			</text>
+			<combo_box name="mode_combo" tool_tip="Selecciona el modo. Elige Básico para una exploración rápida y fácil y para chatear. Elige Avanzado para tener acceso a más funciones.">
+				<combo_box.item label="Básico" name="Basic"/>
+				<combo_box.item label="Avanzado" name="Advanced"/>
+			</combo_box>
 			<text name="start_location_text">
 				Empezar en:
 			</text>
diff --git a/indra/newview/skins/default/xui/es/panel_nearby_media.xml b/indra/newview/skins/default/xui/es/panel_nearby_media.xml
index f65cae6e20..8d4f9eda18 100644
--- a/indra/newview/skins/default/xui/es/panel_nearby_media.xml
+++ b/indra/newview/skins/default/xui/es/panel_nearby_media.xml
@@ -19,7 +19,7 @@
 		<button label="Parar todo" name="all_nearby_media_disable_btn" tool_tip="Apagar todos los media cercanos"/>
 		<button label="Iniciar todo" name="all_nearby_media_enable_btn" tool_tip="Encender todos los media cercanos"/>
 		<button name="open_prefs_btn" tool_tip="Abrir las preferencias de los media"/>
-		<button label="Más &gt;&gt;" label_selected="Menos &lt;&lt;" name="more_btn" tool_tip="Controles avanzados"/>
+		<button label="Más &gt;&gt;" label_selected="&lt;&lt; Menos" name="more_btn" tool_tip="Controles avanzados"/>
 		<button label="Más &gt;&gt;" label_selected="Menos &lt;&lt;" name="less_btn" tool_tip="Controles avanzados"/>
 	</panel>
 	<panel name="nearby_media_panel">
diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml
index d0c80ebae5..01149e412d 100644
--- a/indra/newview/skins/default/xui/es/panel_people.xml
+++ b/indra/newview/skins/default/xui/es/panel_people.xml
@@ -18,6 +18,8 @@
 	<string name="groups_filter_label" value="Filtrar a los grupos"/>
 	<string name="no_filtered_groups_msg" value="¿No encuentras lo que buscas? Prueba con [secondlife:///app/search/groups/[SEARCH_TERM] Buscar]."/>
 	<string name="no_groups_msg" value="¿Buscas grupos en que participar? Prueba la [secondlife:///app/search/groups Búsqueda]."/>
+	<string name="MiniMapToolTipMsg" value="[REGION](Pulsa dos veces para abrir el mapa, pulsa mayús y arrastra para obtener una panorámica)"/>
+	<string name="AltMiniMapToolTipMsg" value="[REGION](Pulsa dos veces para teleportarte, pulsa mayús y arrastra para obtener una panorámica)"/>
 	<filter_editor label="Filtrar" name="filter_input"/>
 	<tab_container name="tabs">
 		<panel label="CERCANA" name="nearby_panel">
diff --git a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
index 6c4ab0f14f..db3659abcd 100644
--- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
+++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml
@@ -9,7 +9,7 @@
 	<slider label="Ambiental" name="Wind Volume"/>
 	<slider label="Efectos de sonido" name="SFX Volume"/>
 	<slider label="Música en streaming" name="Music Volume"/>
-	<check_box label="Activada" name="enable_music"/>
+	<check_box label="Activados" name="enable_music"/>
 	<slider label="Multimedia" name="Media Volume"/>
 	<check_box label="Activada" name="enable_media"/>
 	<slider label="Chat de voz" name="Voice Volume"/>
diff --git a/indra/newview/skins/default/xui/es/panel_profile.xml b/indra/newview/skins/default/xui/es/panel_profile.xml
index 339a1f236b..334c0541af 100644
--- a/indra/newview/skins/default/xui/es/panel_profile.xml
+++ b/indra/newview/skins/default/xui/es/panel_profile.xml
@@ -16,6 +16,12 @@
 	<string name="RegisterDateFormat">
 		[REG_DATE] ([AGE])
 	</string>
+	<string name="name_text_args">
+		[NAME]
+	</string>
+	<string name="display_name_text_args">
+		[DISPLAY_NAME]
+	</string>
 	<layout_stack name="layout">
 		<layout_panel name="profile_stack">
 			<scroll_container name="profile_scroll">
@@ -30,7 +36,7 @@
 					<text name="title_acc_status_text" value="Estado de la cuenta:"/>
 					<text name="title_partner_text" value="Compañero/a:"/>
 					<panel name="partner_data_panel">
-						<name_box initial_value="(obteniendo)" name="partner_text"/>
+						<text initial_value="(obteniendo)" name="partner_text"/>
 					</panel>
 					<text name="title_groups_text" value="Grupos:"/>
 				</panel>
diff --git a/indra/newview/skins/default/xui/es/panel_script_ed.xml b/indra/newview/skins/default/xui/es/panel_script_ed.xml
index 5be25a286d..46952c6974 100644
--- a/indra/newview/skins/default/xui/es/panel_script_ed.xml
+++ b/indra/newview/skins/default/xui/es/panel_script_ed.xml
@@ -15,6 +15,9 @@
 	<panel.string name="Title">
 		Script: [NAME]
 	</panel.string>
+	<panel.string name="external_editor_not_set">
+		Puedes seleccionar un editor configurando la variable de entorno LL_SCRIPT_EDITOR o mediante la configuración de ExternalEditor.
+	</panel.string>
 	<menu_bar name="script_menu">
 		<menu label="Archivo" name="File">
 			<menu_item_call label="Guardar" name="Save"/>
diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml
index df40a2b6b4..cd1fb767c8 100644
--- a/indra/newview/skins/default/xui/es/strings.xml
+++ b/indra/newview/skins/default/xui/es/strings.xml
@@ -1040,7 +1040,7 @@
 	</string>
 	<string name="WornOnAttachmentPoint" value="(lo llevas en: [ATTACHMENT_POINT])"/>
 	<string name="ActiveGesture" value="[GESLABEL] (activo)"/>
-	<string name="Chat" value="Chat :"/>
+	<string name="Chat Message" value="Chat:"/>
 	<string name="Sound" value="Sonido :"/>
 	<string name="Wait" value="--- Espera :"/>
 	<string name="AnimFlagStop" value="Parar la animación:"/>
@@ -1822,12 +1822,6 @@ Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh
 	<string name="accel-win-shift">
 		Mayús+
 	</string>
-	<string name="Esc">
-		Esc
-	</string>
-	<string name="Home">
-		Base
-	</string>
 	<string name="FileSaved">
 		Archivo guardado
 	</string>
@@ -1945,6 +1939,9 @@ Se esperaba .wav, .tga, .bmp, .jpg, .jpeg, o .bvh
 	<string name="Other">
 		Otra
 	</string>
+	<string name="Rental">
+		Terreno en alquiler
+	</string>
 	<string name="Any">
 		Cualquiera
 	</string>
@@ -3864,7 +3861,7 @@ Denuncia de infracción
 	<string name="Notices">
 		Avisos
 	</string>
-	<string name="Chat">
+	<string name="Chat" value="Chat :">
 		Chat
 	</string>
 	<string name="DeleteItems">
@@ -3876,4 +3873,348 @@ Denuncia de infracción
 	<string name="EmptyOutfitText">
 		No hay elementos en este vestuario
 	</string>
+	<string name="ExternalEditorNotSet">
+		Selecciona un editor mediante la configuración de ExternalEditor.
+	</string>
+	<string name="ExternalEditorNotFound">
+		No se encuentra el editor externo especificado.
+Inténtalo incluyendo la ruta de acceso al editor entre comillas
+(por ejemplo, &quot;/ruta a mi/editor&quot; &quot;%s&quot;).
+	</string>
+	<string name="ExternalEditorCommandParseError">
+		Error al analizar el comando de editor externo.
+	</string>
+	<string name="ExternalEditorFailedToRun">
+		Error al ejecutar el editor externo.
+	</string>
+	<string name="Esc">
+		Esc
+	</string>
+	<string name="Space">
+		Space
+	</string>
+	<string name="Enter">
+		Enter
+	</string>
+	<string name="Tab">
+		Tab
+	</string>
+	<string name="Ins">
+		Ins
+	</string>
+	<string name="Del">
+		Del
+	</string>
+	<string name="Backsp">
+		Backsp
+	</string>
+	<string name="Shift">
+		Shift
+	</string>
+	<string name="Ctrl">
+		Ctrl
+	</string>
+	<string name="Alt">
+		Alt
+	</string>
+	<string name="CapsLock">
+		CapsLock
+	</string>
+	<string name="Home">
+		Base
+	</string>
+	<string name="End">
+		End
+	</string>
+	<string name="PgUp">
+		PgUp
+	</string>
+	<string name="PgDn">
+		PgDn
+	</string>
+	<string name="F1">
+		F1
+	</string>
+	<string name="F2">
+		F2
+	</string>
+	<string name="F3">
+		F3
+	</string>
+	<string name="F4">
+		F4
+	</string>
+	<string name="F5">
+		F5
+	</string>
+	<string name="F6">
+		F6
+	</string>
+	<string name="F7">
+		F7
+	</string>
+	<string name="F8">
+		F8
+	</string>
+	<string name="F9">
+		F9
+	</string>
+	<string name="F10">
+		F10
+	</string>
+	<string name="F11">
+		F11
+	</string>
+	<string name="F12">
+		F12
+	</string>
+	<string name="Add">
+		Añadir
+	</string>
+	<string name="Subtract">
+		Restar
+	</string>
+	<string name="Multiply">
+		Multiplicar
+	</string>
+	<string name="Divide">
+		Dividir
+	</string>
+	<string name="PAD_DIVIDE">
+		PAD_DIVIDE
+	</string>
+	<string name="PAD_LEFT">
+		PAD_LEFT
+	</string>
+	<string name="PAD_RIGHT">
+		PAD_RIGHT
+	</string>
+	<string name="PAD_DOWN">
+		PAD_DOWN
+	</string>
+	<string name="PAD_UP">
+		PAD_UP
+	</string>
+	<string name="PAD_HOME">
+		PAD_HOME
+	</string>
+	<string name="PAD_END">
+		PAD_END
+	</string>
+	<string name="PAD_PGUP">
+		PAD_PGUP
+	</string>
+	<string name="PAD_PGDN">
+		PAD_PGDN
+	</string>
+	<string name="PAD_CENTER">
+		PAD_CENTER
+	</string>
+	<string name="PAD_INS">
+		PAD_INS
+	</string>
+	<string name="PAD_DEL">
+		PAD_DEL
+	</string>
+	<string name="PAD_Enter">
+		PAD_Enter
+	</string>
+	<string name="PAD_BUTTON0">
+		PAD_BUTTON0
+	</string>
+	<string name="PAD_BUTTON1">
+		PAD_BUTTON1
+	</string>
+	<string name="PAD_BUTTON2">
+		PAD_BUTTON2
+	</string>
+	<string name="PAD_BUTTON3">
+		PAD_BUTTON3
+	</string>
+	<string name="PAD_BUTTON4">
+		PAD_BUTTON4
+	</string>
+	<string name="PAD_BUTTON5">
+		PAD_BUTTON5
+	</string>
+	<string name="PAD_BUTTON6">
+		PAD_BUTTON6
+	</string>
+	<string name="PAD_BUTTON7">
+		PAD_BUTTON7
+	</string>
+	<string name="PAD_BUTTON8">
+		PAD_BUTTON8
+	</string>
+	<string name="PAD_BUTTON9">
+		PAD_BUTTON9
+	</string>
+	<string name="PAD_BUTTON10">
+		PAD_BUTTON10
+	</string>
+	<string name="PAD_BUTTON11">
+		PAD_BUTTON11
+	</string>
+	<string name="PAD_BUTTON12">
+		PAD_BUTTON12
+	</string>
+	<string name="PAD_BUTTON13">
+		PAD_BUTTON13
+	</string>
+	<string name="PAD_BUTTON14">
+		PAD_BUTTON14
+	</string>
+	<string name="PAD_BUTTON15">
+		PAD_BUTTON15
+	</string>
+	<string name="-">
+		-
+	</string>
+	<string name="=">
+		=
+	</string>
+	<string name="`">
+		`
+	</string>
+	<string name=";">
+		;
+	</string>
+	<string name="[">
+		[
+	</string>
+	<string name="]">
+		]
+	</string>
+	<string name="\">
+		\
+	</string>
+	<string name="0">
+		0
+	</string>
+	<string name="1">
+		1
+	</string>
+	<string name="2">
+		2
+	</string>
+	<string name="3">
+		3
+	</string>
+	<string name="4">
+		4
+	</string>
+	<string name="5">
+		5
+	</string>
+	<string name="6">
+		6
+	</string>
+	<string name="7">
+		7
+	</string>
+	<string name="8">
+		8
+	</string>
+	<string name="9">
+		9
+	</string>
+	<string name="A">
+		A
+	</string>
+	<string name="B">
+		B
+	</string>
+	<string name="C">
+		C
+	</string>
+	<string name="D">
+		D
+	</string>
+	<string name="E">
+		E
+	</string>
+	<string name="F">
+		F
+	</string>
+	<string name="G">
+		G
+	</string>
+	<string name="H">
+		H
+	</string>
+	<string name="I">
+		I
+	</string>
+	<string name="J">
+		J
+	</string>
+	<string name="K">
+		K
+	</string>
+	<string name="L">
+		L
+	</string>
+	<string name="M">
+		M
+	</string>
+	<string name="N">
+		N
+	</string>
+	<string name="O">
+		O
+	</string>
+	<string name="P">
+		P
+	</string>
+	<string name="Q">
+		Q
+	</string>
+	<string name="R">
+		R
+	</string>
+	<string name="S">
+		S
+	</string>
+	<string name="T">
+		T
+	</string>
+	<string name="U">
+		U
+	</string>
+	<string name="V">
+		V
+	</string>
+	<string name="W">
+		W
+	</string>
+	<string name="X">
+		X
+	</string>
+	<string name="Y">
+		Y
+	</string>
+	<string name="Z">
+		Z
+	</string>
+	<string name="BeaconParticle">
+		Viendo balizas de partículas (azules)
+	</string>
+	<string name="BeaconPhysical">
+		Viendo balizas de objetos materiales (verdes)
+	</string>
+	<string name="BeaconScripted">
+		Viendo balizas de objetos con script (rojas)
+	</string>
+	<string name="BeaconScriptedTouch">
+		Viendo el objeto con script con balizas de función táctil (rojas)
+	</string>
+	<string name="BeaconSound">
+		Viendo balizas de sonido (amarillas)
+	</string>
+	<string name="BeaconMedia">
+		Viendo balizas de medios (blancas)
+	</string>
+	<string name="ParticleHiding">
+		Ocultando las partículas
+	</string>
 </strings>
-- 
cgit v1.2.3


From df05762114bae02d18fe14bbfbb5ca45222104f8 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Tue, 29 Mar 2011 16:54:52 -0700
Subject: STORM-987: Make building of llimage_libtest optional so that builf
 failure on Linux doesn't block autobuild merge

---
 indra/integration_tests/CMakeLists.txt                 | 4 +++-
 indra/integration_tests/llimage_libtest/CMakeLists.txt | 4 ++--
 2 files changed, 5 insertions(+), 3 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/CMakeLists.txt b/indra/integration_tests/CMakeLists.txt
index 5935f23fe9..248583d775 100644
--- a/indra/integration_tests/CMakeLists.txt
+++ b/indra/integration_tests/CMakeLists.txt
@@ -1,4 +1,6 @@
 # -*- cmake -*-
 
 add_subdirectory(llui_libtest)
-add_subdirectory(llimage_libtest)
+if (LLIMAGE_LIBTEST)
+  add_subdirectory(llimage_libtest)
+endif (LLIMAGE_LIBTEST)
diff --git a/indra/integration_tests/llimage_libtest/CMakeLists.txt b/indra/integration_tests/llimage_libtest/CMakeLists.txt
index f59440be6b..cab0546083 100644
--- a/indra/integration_tests/llimage_libtest/CMakeLists.txt
+++ b/indra/integration_tests/llimage_libtest/CMakeLists.txt
@@ -53,9 +53,9 @@ if (DARWIN)
   find_library(COREFOUNDATION_LIBRARY CoreFoundation)
   set(OS_LIBRARIES ${COREFOUNDATION_LIBRARY})
 elseif (WINDOWS)
-#  set(OS_LIBRARIES)
+  set(OS_LIBRARIES)
 elseif (LINUX)
-#  set(OS_LIBRARIES)
+  set(OS_LIBRARIES)
 else (DARWIN)
   message(FATAL_ERROR "Unknown platform")
 endif (DARWIN)
-- 
cgit v1.2.3


From 7b47c0a6f6f74bd42382f37102446742f91bd34a Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Wed, 30 Mar 2011 13:22:41 -0700
Subject: STORM-987 : cmake fixes so that llimage_libtest builds correctly on
 Mac with autobuild

---
 indra/integration_tests/CMakeLists.txt                 |  7 +++++--
 indra/integration_tests/llimage_libtest/CMakeLists.txt | 18 +++++++++---------
 2 files changed, 14 insertions(+), 11 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/CMakeLists.txt b/indra/integration_tests/CMakeLists.txt
index 248583d775..dcd2079631 100644
--- a/indra/integration_tests/CMakeLists.txt
+++ b/indra/integration_tests/CMakeLists.txt
@@ -1,6 +1,9 @@
 # -*- cmake -*-
 
 add_subdirectory(llui_libtest)
-if (LLIMAGE_LIBTEST)
+IF (LLIMAGE_LIBTEST)
+  MESSAGE(STATUS "Build llimage_libtest")
   add_subdirectory(llimage_libtest)
-endif (LLIMAGE_LIBTEST)
+ELSE (LLIMAGE_LIBTEST)
+  MESSAGE(STATUS "Skip llimage_libtest")
+ENDIF (LLIMAGE_LIBTEST)
diff --git a/indra/integration_tests/llimage_libtest/CMakeLists.txt b/indra/integration_tests/llimage_libtest/CMakeLists.txt
index cab0546083..fdd6770aca 100644
--- a/indra/integration_tests/llimage_libtest/CMakeLists.txt
+++ b/indra/integration_tests/llimage_libtest/CMakeLists.txt
@@ -102,20 +102,20 @@ add_custom_command(TARGET llimage_libtest POST_BUILD
 if (DARWIN)
   # Copy the required libraries to the package app
   add_custom_command(TARGET llimage_libtest POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libapr-1.0.3.7.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
-    DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libapr-1.0.3.7.dylib
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libapr-1.0.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
+    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libapr-1.0.dylib
   )
- add_custom_command(TARGET llimage_libtest POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libaprutil-1.0.3.8.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
-    DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libaprutil-1.0.3.8.dylib
+  add_custom_command(TARGET llimage_libtest POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libaprutil-1.0.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
+    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libaprutil-1.0.dylib
   )
   add_custom_command(TARGET llimage_libtest POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexception_handler.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
-    DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexception_handler.dylib
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexception_handler.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
+    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexception_handler.dylib
   )
   add_custom_command(TARGET llimage_libtest POST_BUILD
-    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexpat.0.5.0.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
-    DEPENDS ${CMAKE_SOURCE_DIR}/../libraries/universal-darwin/lib_release/libexpat.0.5.0.dylib
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexpat.1.5.2.dylib ${LLIMAGE_LIBTEST_DESTINATION_DIR}
+    DEPENDS ${CMAKE_SOURCE_DIR}/../build-darwin-i386/packages/lib/release/libexpat.1.5.2.dylib
   )
 endif (DARWIN)
 
-- 
cgit v1.2.3


From 48be3c6af841231f705d88598672588e68e2977e Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Wed, 30 Mar 2011 14:47:35 -0700
Subject: STORM-1121 : Simplify dependencies for llimage_libtest

---
 indra/integration_tests/CMakeLists.txt                 | 2 ++
 indra/integration_tests/llimage_libtest/CMakeLists.txt | 6 ------
 2 files changed, 2 insertions(+), 6 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/CMakeLists.txt b/indra/integration_tests/CMakeLists.txt
index dcd2079631..63a053479b 100644
--- a/indra/integration_tests/CMakeLists.txt
+++ b/indra/integration_tests/CMakeLists.txt
@@ -1,4 +1,6 @@
 # -*- cmake -*-
+# For STORM-1121 debug. Will delete when ready
+SET (LLIMAGE_LIBTEST ON CACHE BOOL "Force build of llimage_libtest for testing")
 
 add_subdirectory(llui_libtest)
 IF (LLIMAGE_LIBTEST)
diff --git a/indra/integration_tests/llimage_libtest/CMakeLists.txt b/indra/integration_tests/llimage_libtest/CMakeLists.txt
index fdd6770aca..a687e60610 100644
--- a/indra/integration_tests/llimage_libtest/CMakeLists.txt
+++ b/indra/integration_tests/llimage_libtest/CMakeLists.txt
@@ -6,19 +6,15 @@ project (llimage_libtest)
 
 include(00-Common)
 include(LLCommon)
-include(Linking)
-include(LLSharedLibs)
 include(LLImage)
 include(LLImageJ2COJ) 
 include(LLKDU)
-include(LLMath)
 include(LLVFS)
 
 include_directories(
     ${LLCOMMON_INCLUDE_DIRS}
     ${LLVFS_INCLUDE_DIRS}
     ${LLIMAGE_INCLUDE_DIRS}
-    ${LLMATH_INCLUDE_DIRS}
     )
 
 set(llimage_libtest_SOURCE_FILES
@@ -127,5 +123,3 @@ endif (WINDOWS)
 # *NOTE: This could be removed, or only built by TeamCity, if the build
 # and link times become too long.
 add_dependencies(viewer llimage_libtest)
-
-ll_deploy_sharedlibs_command(llimage_libtest) 
-- 
cgit v1.2.3


From 61056a68cd1952ee062a5ae3207b9670a31e4c55 Mon Sep 17 00:00:00 2001
From: Merov Linden <merov@lindenlab.com>
Date: Wed, 30 Mar 2011 19:43:35 -0700
Subject: STORM-1121 : Suppress the debug cmake instruction

---
 indra/integration_tests/CMakeLists.txt | 3 ---
 1 file changed, 3 deletions(-)

(limited to 'indra')

diff --git a/indra/integration_tests/CMakeLists.txt b/indra/integration_tests/CMakeLists.txt
index 63a053479b..ced2b3dbcf 100644
--- a/indra/integration_tests/CMakeLists.txt
+++ b/indra/integration_tests/CMakeLists.txt
@@ -1,7 +1,4 @@
 # -*- cmake -*-
-# For STORM-1121 debug. Will delete when ready
-SET (LLIMAGE_LIBTEST ON CACHE BOOL "Force build of llimage_libtest for testing")
-
 add_subdirectory(llui_libtest)
 IF (LLIMAGE_LIBTEST)
   MESSAGE(STATUS "Build llimage_libtest")
-- 
cgit v1.2.3


From 926e506d0ad67e4ba9370efae60f5641c932b672 Mon Sep 17 00:00:00 2001
From: Andrew de Laix <alain@lindenlab.com>
Date: Thu, 31 Mar 2011 16:17:12 +0000
Subject: d'oh, forgot to add back some q libs to the build when reverting to
 older linux package; here they are.

---
 indra/cmake/WebKitLibPlugin.cmake | 2 ++
 1 file changed, 2 insertions(+)

(limited to 'indra')

diff --git a/indra/cmake/WebKitLibPlugin.cmake b/indra/cmake/WebKitLibPlugin.cmake
index b599982afb..0f5a81c020 100644
--- a/indra/cmake/WebKitLibPlugin.cmake
+++ b/indra/cmake/WebKitLibPlugin.cmake
@@ -67,6 +67,8 @@ elseif (LINUX)
         QtNetwork
         QtGui
         QtCore
+        qgif
+        qjpeg
         jpeg
         fontconfig
         X11
-- 
cgit v1.2.3


From 453b0c700a8712f7ff79434772296a487d38184a Mon Sep 17 00:00:00 2001
From: Richard Linden <none@none>
Date: Fri, 1 Apr 2011 16:42:30 -0700
Subject: SOCIAL-822 FIX UI and Sizing issues with hints in Basic and Advanced
 modes fixed crash for advanced mode

---
 indra/newview/llhints.cpp | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

(limited to 'indra')

diff --git a/indra/newview/llhints.cpp b/indra/newview/llhints.cpp
index 722d67caf9..b5e676e626 100644
--- a/indra/newview/llhints.cpp
+++ b/indra/newview/llhints.cpp
@@ -213,19 +213,22 @@ void LLHintPopup::draw()
 		alpha = clamp_rescale(mFadeTimer.getElapsedTimeF32(), 0.f, mFadeInTime, 0.f, 1.f);
 	}
 	
-	LLIconCtrl& hint_icon = getChildRef<LLIconCtrl>("hint_image");
+	LLIconCtrl* hint_icon = findChild<LLIconCtrl>("hint_image");
 
-	LLUIImagePtr hint_image = hint_icon.getImage();
-	S32 image_height = hint_image.isNull() ? 0 : hint_image->getHeight();
-	S32 image_width = hint_image.isNull() ? 0 : hint_image->getWidth();
+	if (hint_icon)
+	{
+		LLUIImagePtr hint_image = hint_icon.getImage();
+		S32 image_height = hint_image.isNull() ? 0 : hint_image->getHeight();
+		S32 image_width = hint_image.isNull() ? 0 : hint_image->getWidth();
 
-	S32 delta_height = image_height - hint_icon.getParent()->getParent()->getRect().getHeight();
-	hint_icon.getParent()->reshape(image_width, hint_icon.getParent()->getRect().getHeight());
-	hint_icon.getParent()->getParent()->reshape(hint_icon.getParent()->getParent()->getRect().getWidth(), image_height);
-	hint_icon.getParent()->getParent()->translate(0, -delta_height);
+		S32 delta_height = image_height - hint_icon.getParent()->getParent()->getRect().getHeight();
+		hint_icon.getParent()->reshape(image_width, hint_icon.getParent()->getRect().getHeight());
+		hint_icon.getParent()->getParent()->reshape(hint_icon.getParent()->getParent()->getRect().getWidth(), image_height);
+		hint_icon.getParent()->getParent()->translate(0, -delta_height);
 
-	LLRect hint_rect = getLocalRect();
-	reshape(hint_rect.getWidth(), hint_rect.getHeight() + delta_height);
+		LLRect hint_rect = getLocalRect();
+		reshape(hint_rect.getWidth(), hint_rect.getHeight() + delta_height);
+	}
 
 	{	LLViewDrawContext context(alpha); 
 
-- 
cgit v1.2.3