diff --git a/.hgtags b/.hgtags index 993ae0d7d60e49cfb2ccff6fdf766dfd469e109f..db450a1a145a2bb628955a10ea887a365af552de 100644 --- a/.hgtags +++ b/.hgtags @@ -147,10 +147,10 @@ a9abb9633a266c8d2fe62411cfd1c86d32da72bf 2.7.1-release 19a498fa62570f352d7d246f17e3c81cc1d82d8b 2.7.5-start 09984bfa6cae17e0f72d02b75c1b7393c65eecfc DRTVWR-69_2.7.5-beta1 09984bfa6cae17e0f72d02b75c1b7393c65eecfc 2.7.5-beta1 -6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release -6866d9df6efbd441c66451debd376d21211de39c 2.7.5-release e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-start 502f6a5deca9365ddae57db4f1e30172668e171e 2.8.1-start +6866d9df6efbd441c66451debd376d21211de39c DRTVWR-68_2.7.5-release +6866d9df6efbd441c66451debd376d21211de39c 2.7.5-release e1ed60913230dd64269a7f7fc52cbc6004f6d52c DRTVWR-71_2.8.0-beta1 e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-beta1 493d9127ee50e84ba08a736a65a23ca86f7a5b01 DRTVWR-70_2.8.0-release @@ -159,3 +159,11 @@ e1ed60913230dd64269a7f7fc52cbc6004f6d52c 2.8.0-beta1 2c7e459e0c883f8e406b932e41e60097e9ee077e 2.8.1-beta1 29e93d7e19991011bd12b5748142b11a5dcb4370 DRTVWR-72_2.8.1-release 29e93d7e19991011bd12b5748142b11a5dcb4370 2.8.1-release +4780e3bd2b3042f91be3426151f28c30d199bb3b DRTVWR-76_2.8.1-hotfix +4780e3bd2b3042f91be3426151f28c30d199bb3b 2.8.1-hotfix +54bc7823ad4e3a436fef79710f685a7372bbf795 2.8.2-start +ac0f1a132d35c02a58861d37cca75b0429ac9137 2.8.3-start +599677276b227357140dda35bea4a2c18e2e67b5 DRTVWR-75_2.8.3-beta1 +599677276b227357140dda35bea4a2c18e2e67b5 2.8.3-beta1 +fb85792b84bf28428889c4cc966469d92e5dac4c DRTVWR-74_2.8.3-release +fb85792b84bf28428889c4cc966469d92e5dac4c 2.8.3-release diff --git a/BuildParams b/BuildParams index 9433e335fe118da0949c9d47aa5e9e8ae54caa90..ad2f71e336c8ceea5504c4daa79d95a616bf6559 100644 --- a/BuildParams +++ b/BuildParams @@ -14,8 +14,8 @@ public_build = true # skip windows debug build until we can get a fix in. build_CYGWIN_Debug = false -# Update Public Inworld Build Status Indicators -email_status_this_is_os = false +# Update Public Inworld Build Status Indicators (setting should mirror "public_build") +email_status_this_is_os = true # Limit extent of codeticket updates to revisions after... codeticket_since = 2.2.0-release @@ -163,6 +163,7 @@ viewer-asset-delivery-metrics.build_server_tests = false # Simon says # ======================================== simon_viewer-dev-private.public_build = false +simon_viewer-dev-private.email_status_this_is_os = false # eof diff --git a/build.sh b/build.sh index 4268c76e78affe3e73432526d3f3e8b0056cce7e..c7c89fe3c2bdc40376b04230c94f1e8defe4937a 100755 --- a/build.sh +++ b/build.sh @@ -209,7 +209,7 @@ do end_section BuildParallel else begin_section "Build$variant" - build "$variant" "$build_dir" 2>&1 | tee -a "$build_log" | grep --line-buffered "^##teamcity" + build "$variant" "$build_dir" 2>&1 | tee -a "$build_log" | sed -n 's/^ *\(##teamcity.*\)/\1/p' if `cat "$build_dir/build_ok"` then echo so far so good. @@ -238,7 +238,7 @@ then begin_section "Build$variant" build_dir=`build_dir_$arch $variant` build_dir_stubs="$build_dir/win_setup/$variant" - tee -a $build_log < "$build_dir/build.log" | grep --line-buffered "^##teamcity" + tee -a $build_log < "$build_dir/build.log" | sed -n 's/^ *\(##teamcity.*\)/\1/p' if `cat "$build_dir/build_ok"` then echo so far so good. diff --git a/doc/contributions.txt b/doc/contributions.txt index 68b0a4279f009de4473124bb1ff48296007ee323..ee56ef36653ac97c63c93a8929d8d4d9f3f3e3e9 100644 --- a/doc/contributions.txt +++ b/doc/contributions.txt @@ -219,6 +219,7 @@ Boroondas Gupte VWR-20891 VWR-23455 VWR-24487 + VWR-26066 WEB-262 Bulli Schumann CT-218 diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt index 9910281b649b472107be29397c4293f80377ab53..c755020a64e28f13c1f85b560b8a4ef2e3e69e27 100644 --- a/indra/llcommon/CMakeLists.txt +++ b/indra/llcommon/CMakeLists.txt @@ -317,7 +317,8 @@ if (LL_TESTS) LL_ADD_INTEGRATION_TEST(lllazy "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llprocessor "" "${test_libs}") LL_ADD_INTEGRATION_TEST(llrand "" "${test_libs}") - LL_ADD_INTEGRATION_TEST(llsdserialize "" "${test_libs}") + LL_ADD_INTEGRATION_TEST(llsdserialize "" "${test_libs}" + "${PYTHON_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/tests/setpython.py") LL_ADD_INTEGRATION_TEST(llstring "" "${test_libs}") LL_ADD_INTEGRATION_TEST(lltreeiterators "" "${test_libs}") LL_ADD_INTEGRATION_TEST(lluri "" "${test_libs}") diff --git a/indra/llcommon/llfasttimer_class.cpp b/indra/llcommon/llfasttimer_class.cpp index bd594b06cfd5094cd28aa3b1ec56ee59f755a954..675eda2fc580a19be813e0f09c69d492f12ab14e 100644 --- a/indra/llcommon/llfasttimer_class.cpp +++ b/indra/llcommon/llfasttimer_class.cpp @@ -228,6 +228,14 @@ void LLFastTimer::DeclareTimer::updateCachedPointers() // update cached pointer it->mFrameState = &it->mTimer.getFrameState(); } + + // also update frame states of timers on stack + LLFastTimer* cur_timerp = LLFastTimer::sCurTimerData.mCurTimer; + while(cur_timerp->mLastTimerData.mCurTimer != cur_timerp) + { + cur_timerp->mFrameState = &cur_timerp->mFrameState->mTimer->getFrameState(); + cur_timerp = cur_timerp->mLastTimerData.mCurTimer; + } } //static diff --git a/indra/llcommon/llsys.cpp b/indra/llcommon/llsys.cpp index 99e61433c65c748cd48286f9b09c7e4dc7e86499..8807bf1bf8a5b5ee9ad0e9a1627279cf9b9c3d86 100644 --- a/indra/llcommon/llsys.cpp +++ b/indra/llcommon/llsys.cpp @@ -1003,184 +1003,6 @@ LLSD LLMemoryInfo::loadStatsMap() LL_WARNS("LLMemoryInfo") << "Unable to collect hw.memsize memory information" << LL_ENDL; } - FILE* pout = popen("vm_stat 2>&1", "r"); - if (! pout) // popen() couldn't run vm_stat - { - // Save errno right away. - int popen_errno(errno); - LL_WARNS("LLMemoryInfo") << "Unable to collect vm_stat memory information: "; - char buffer[256]; - if (0 == strerror_r(popen_errno, buffer, sizeof(buffer))) - { - LL_CONT << buffer; - } - else - { - LL_CONT << "errno " << popen_errno; - } - LL_CONT << LL_ENDL; - } - else // popen() launched vm_stat - { - // Mach Virtual Memory Statistics: (page size of 4096 bytes) - // Pages free: 462078. - // Pages active: 142010. - // Pages inactive: 220007. - // Pages wired down: 159552. - // "Translation faults": 220825184. - // Pages copy-on-write: 2104153. - // Pages zero filled: 167034876. - // Pages reactivated: 65153. - // Pageins: 2097212. - // Pageouts: 41759. - // Object cache: 841598 hits of 7629869 lookups (11% hit rate) - - // Intentionally don't pass the boost::no_except flag. These - // boost::regex objects are constructed with string literals, so they - // should be valid every time. If they become invalid, we WANT an - // exception, hopefully even before the dev checks in. - boost::regex pagesize_rx("\\(page size of ([0-9]+) bytes\\)"); - boost::regex stat_rx("(.+): +([0-9]+)\\."); - boost::regex cache_rx("Object cache: ([0-9]+) hits of ([0-9]+) lookups " - "\\(([0-9]+)% hit rate\\)"); - boost::cmatch matched; - LLSD::Integer pagesizekb(4096/1024); - - // Here 'pout' is vm_stat's stdout. Search it for relevant data. - char line[100]; - line[sizeof(line)-1] = '\0'; - while (fgets(line, sizeof(line)-1, pout)) - { - size_t linelen(strlen(line)); - // Truncate any trailing newline - if (line[linelen - 1] == '\n') - { - line[--linelen] = '\0'; - } - LL_DEBUGS("LLMemoryInfo") << line << LL_ENDL; - if (regex_search_no_exc(line, matched, pagesize_rx)) - { - // "Mach Virtual Memory Statistics: (page size of 4096 bytes)" - std::string pagesize_str(matched[1].first, matched[1].second); - try - { - // Reasonable to assume that pagesize will always be a - // multiple of 1Kb? - pagesizekb = boost::lexical_cast<LLSD::Integer>(pagesize_str)/1024; - } - catch (const boost::bad_lexical_cast&) - { - LL_WARNS("LLMemoryInfo") << "couldn't parse '" << pagesize_str - << "' in vm_stat line: " << line << LL_ENDL; - continue; - } - stats.add("page size", pagesizekb); - } - else if (regex_match_no_exc(line, matched, stat_rx)) - { - // e.g. "Pages free: 462078." - // Strip double-quotes off certain statistic names - const char *key_begin(matched[1].first), *key_end(matched[1].second); - if (key_begin[0] == '"' && key_end[-1] == '"') - { - ++key_begin; - --key_end; - } - LLSD::String key(key_begin, key_end); - LLSD::String value_str(matched[2].first, matched[2].second); - LLSD::Integer value(0); - try - { - value = boost::lexical_cast<LLSD::Integer>(value_str); - } - catch (const boost::bad_lexical_cast&) - { - LL_WARNS("LLMemoryInfo") << "couldn't parse '" << value_str - << "' in vm_stat line: " << line << LL_ENDL; - continue; - } - // Store this statistic. - stats.add(key, value); - // Is this in units of pages? If so, convert to Kb. - static const LLSD::String pages("Pages "); - if (key.substr(0, pages.length()) == pages) - { - // Synthesize a new key with kb in place of Pages - LLSD::String kbkey("kb "); - kbkey.append(key.substr(pages.length())); - stats.add(kbkey, value * pagesizekb); - } - } - else if (regex_match_no_exc(line, matched, cache_rx)) - { - // e.g. "Object cache: 841598 hits of 7629869 lookups (11% hit rate)" - static const char* cache_keys[] = { "cache hits", "cache lookups", "cache hit%" }; - std::vector<LLSD::Integer> cache_values; - for (size_t i = 0; i < (sizeof(cache_keys)/sizeof(cache_keys[0])); ++i) - { - LLSD::String value_str(matched[i+1].first, matched[i+1].second); - LLSD::Integer value(0); - try - { - value = boost::lexical_cast<LLSD::Integer>(value_str); - } - catch (boost::bad_lexical_cast&) - { - LL_WARNS("LLMemoryInfo") << "couldn't parse '" << value_str - << "' in vm_stat line: " << line << LL_ENDL; - continue; - } - stats.add(cache_keys[i], value); - } - } - else - { - LL_WARNS("LLMemoryInfo") << "unrecognized vm_stat line: " << line << LL_ENDL; - } - } - int status(pclose(pout)); - if (status == -1) // pclose() couldn't retrieve rc - { - // Save errno right away. - int pclose_errno(errno); - // The ECHILD error happens so frequently that unless filtered, - // the warning below spams the log file. This is too bad, because - // sometimes the logic above fails to produce any output derived - // from vm_stat, but we've been unable to observe any specific - // error indicating the problem. - if (pclose_errno != ECHILD) - { - LL_WARNS("LLMemoryInfo") << "Unable to obtain vm_stat termination code: "; - char buffer[256]; - if (0 == strerror_r(pclose_errno, buffer, sizeof(buffer))) - { - LL_CONT << buffer; - } - else - { - LL_CONT << "errno " << pclose_errno; - } - LL_CONT << LL_ENDL; - } - } - else // pclose() retrieved rc; analyze - { - if (WIFEXITED(status)) - { - int rc(WEXITSTATUS(status)); - if (rc != 0) - { - LL_WARNS("LLMemoryInfo") << "vm_stat terminated with rc " << rc << LL_ENDL; - } - } - else if (WIFSIGNALED(status)) - { - LL_WARNS("LLMemoryInfo") << "vm_stat terminated by signal " << WTERMSIG(status) - << LL_ENDL; - } - } - } - #elif LL_SOLARIS U64 phys = 0; diff --git a/indra/llcommon/llthread.cpp b/indra/llcommon/llthread.cpp index d9400fb5b325f1cbe05f57fb477def27eab36b86..4063cc730b49e5b470c6f534f19dc49b4e015218 100644 --- a/indra/llcommon/llthread.cpp +++ b/indra/llcommon/llthread.cpp @@ -323,7 +323,8 @@ LLMutex::LLMutex(apr_pool_t *poolp) : LLMutex::~LLMutex() { #if MUTEX_DEBUG - llassert_always(!isLocked()); // better not be locked! + //bad assertion, the subclass LLSignal might be "locked", and that's OK + //llassert_always(!isLocked()); // better not be locked! #endif apr_thread_mutex_destroy(mAPRMutexp); mAPRMutexp = NULL; diff --git a/indra/llcommon/llversionviewer.h b/indra/llcommon/llversionviewer.h index 0018b8e844a18b7941a65594f222dbe42f9e8c1b..f98a5398c3ba8ec41f7d0b0ddcd57618b922c871 100644 --- a/indra/llcommon/llversionviewer.h +++ b/indra/llcommon/llversionviewer.h @@ -29,7 +29,7 @@ const S32 LL_VERSION_MAJOR = 2; const S32 LL_VERSION_MINOR = 8; -const S32 LL_VERSION_PATCH = 1; +const S32 LL_VERSION_PATCH = 3; const S32 LL_VERSION_BUILD = 0; const char * const LL_CHANNEL = "Second Life Developer"; diff --git a/indra/llcommon/tests/llsdserialize_test.cpp b/indra/llcommon/tests/llsdserialize_test.cpp index 7b4c7d6a48652edb1e2bcfd4428ec5faecfdbc18..72322c3b727a46b9f24a9527badfa76657eb2229 100644 --- a/indra/llcommon/tests/llsdserialize_test.cpp +++ b/indra/llcommon/tests/llsdserialize_test.cpp @@ -25,35 +25,293 @@ * $/LicenseInfo$ */ -#if !LL_WINDOWS + +#include "linden_common.h" + +#if LL_WINDOWS +#include <winsock2.h> +typedef U32 uint32_t; +#include <process.h> +#include <io.h> +#else +#include <unistd.h> #include <netinet/in.h> +#include <errno.h> +#include <fcntl.h> +#include <sys/stat.h> +#include <sys/wait.h> +#include "llprocesslauncher.h" #endif -#include "linden_common.h" +#include <sstream> + +/*==========================================================================*| +// Whoops, seems Linden's Boost package and the viewer are built with +// different settings of VC's /Zc:wchar_t switch! Using Boost.Filesystem +// pathname operations produces Windows link errors: +// unresolved external symbol "private: static class std::codecvt<unsigned short, +// char,int> const * & __cdecl boost::filesystem3::path::wchar_t_codecvt_facet()" +// unresolved external symbol "void __cdecl boost::filesystem3::path_traits::convert()" +// See: +// http://boost.2283326.n4.nabble.com/filesystem-v3-unicode-and-std-codecvt-linker-error-td3455549.html +// which points to: +// http://msdn.microsoft.com/en-us/library/dh8che7s%28v=VS.100%29.aspx + +// As we're not trying to preserve compatibility with old Boost.Filesystem +// code, but rather writing brand-new code, use the newest available +// Filesystem API. +#define BOOST_FILESYSTEM_VERSION 3 +#include "boost/filesystem.hpp" +#include "boost/filesystem/v3/fstream.hpp" +|*==========================================================================*/ +#include "boost/range.hpp" +#include "boost/foreach.hpp" +#include "boost/function.hpp" +#include "boost/lambda/lambda.hpp" +#include "boost/lambda/bind.hpp" +namespace lambda = boost::lambda; +/*==========================================================================*| +// Aaaarrgh, Linden's Boost package doesn't even include Boost.Iostreams! +#include "boost/iostreams/stream.hpp" +#include "boost/iostreams/device/file_descriptor.hpp" +|*==========================================================================*/ + #include "../llsd.h" #include "../llsdserialize.h" +#include "llsdutil.h" #include "../llformat.h" #include "../test/lltut.h" +#include "stringize.h" +std::vector<U8> string_to_vector(const std::string& str) +{ + return std::vector<U8>(str.begin(), str.end()); +} -#if LL_WINDOWS -#include <winsock2.h> -typedef U32 uint32_t; -#endif +#if ! LL_WINDOWS +// We want to call strerror_r(), but alarmingly, there are two different +// variants. The one that returns int always populates the passed buffer +// (except in case of error), whereas the other one always returns a valid +// char* but might or might not populate the passed buffer. How do we know +// which one we're getting? Define adapters for each and let the compiler +// select the applicable adapter. -std::vector<U8> string_to_vector(std::string str) +// strerror_r() returns char* +std::string message_from(int /*orig_errno*/, const char* /*buffer*/, const char* strerror_ret) { - // bc LLSD can't... - size_t len = (size_t)str.length(); - std::vector<U8> v(len); - for (size_t i = 0; i < len ; i++) - { - v[i] = str[i]; - } - return v; + return strerror_ret; } +// strerror_r() returns int +std::string message_from(int orig_errno, const char* buffer, int strerror_ret) +{ + if (strerror_ret == 0) + { + return buffer; + } + // Here strerror_r() has set errno. Since strerror_r() has already failed, + // seems like a poor bet to call it again to diagnose its own error... + int stre_errno = errno; + if (stre_errno == ERANGE) + { + return STRINGIZE("strerror_r() can't explain errno " << orig_errno + << " (buffer too small)"); + } + if (stre_errno == EINVAL) + { + return STRINGIZE("unknown errno " << orig_errno); + } + // Here we don't even understand the errno from strerror_r()! + return STRINGIZE("strerror_r() can't explain errno " << orig_errno + << " (error " << stre_errno << ')'); +} +#endif // ! LL_WINDOWS + +// boost::filesystem::temp_directory_path() isn't yet in Boost 1.45! :-( +std::string temp_directory_path() +{ +#if LL_WINDOWS + char buffer[4096]; + GetTempPathA(sizeof(buffer), buffer); + return buffer; + +#else // LL_DARWIN, LL_LINUX + static const char* vars[] = { "TMPDIR", "TMP", "TEMP", "TEMPDIR" }; + BOOST_FOREACH(const char* var, vars) + { + const char* found = getenv(var); + if (found) + return found; + } + return "/tmp"; +#endif // LL_DARWIN, LL_LINUX +} + +// Windows presents a kinda sorta compatibility layer. Code to the yucky +// Windows names because they're less likely than the Posix names to collide +// with any other names in this source. +#if LL_WINDOWS +#define _remove DeleteFileA +#else // ! LL_WINDOWS +#define _open open +#define _write write +#define _close close +#define _remove remove +#endif // ! LL_WINDOWS + +// Create a text file with specified content "somewhere in the +// filesystem," cleaning up when it goes out of scope. +class NamedTempFile +{ +public: + // Function that accepts an ostream ref and (presumably) writes stuff to + // it, e.g.: + // (lambda::_1 << "the value is " << 17 << '\n') + typedef boost::function<void(std::ostream&)> Streamer; + + NamedTempFile(const std::string& ext, const std::string& content): + mPath(temp_directory_path()) + { + createFile(ext, lambda::_1 << content); + } + + // Disambiguate when passing string literal + NamedTempFile(const std::string& ext, const char* content): + mPath(temp_directory_path()) + { + createFile(ext, lambda::_1 << content); + } + + NamedTempFile(const std::string& ext, const Streamer& func): + mPath(temp_directory_path()) + { + createFile(ext, func); + } + + ~NamedTempFile() + { + _remove(mPath.c_str()); + } + + std::string getName() const { return mPath; } + +private: + void createFile(const std::string& ext, const Streamer& func) + { + // Silly maybe, but use 'ext' as the name prefix. Strip off a leading + // '.' if present. + int pfx_offset = ((! ext.empty()) && ext[0] == '.')? 1 : 0; + +#if ! LL_WINDOWS + // Make sure mPath ends with a directory separator, if it doesn't already. + if (mPath.empty() || + ! (mPath[mPath.length() - 1] == '\\' || mPath[mPath.length() - 1] == '/')) + { + mPath.append("/"); + } + + // mkstemp() accepts and modifies a char* template string. Generate + // the template string, then copy to modifiable storage. + // mkstemp() requires its template string to end in six X's. + mPath += ext.substr(pfx_offset) + "XXXXXX"; + // Copy to vector<char> + std::vector<char> pathtemplate(mPath.begin(), mPath.end()); + // append a nul byte for classic-C semantics + pathtemplate.push_back('\0'); + // std::vector promises that a pointer to the 0th element is the same + // as a pointer to a contiguous classic-C array + int fd(mkstemp(&pathtemplate[0])); + if (fd == -1) + { + // The documented errno values (http://linux.die.net/man/3/mkstemp) + // are used in a somewhat unusual way, so provide context-specific + // errors. + if (errno == EEXIST) + { + LL_ERRS("NamedTempFile") << "mkstemp(\"" << mPath + << "\") could not create unique file " << LL_ENDL; + } + if (errno == EINVAL) + { + LL_ERRS("NamedTempFile") << "bad mkstemp() file path template '" + << mPath << "'" << LL_ENDL; + } + // Shrug, something else + int mkst_errno = errno; + char buffer[256]; + LL_ERRS("NamedTempFile") << "mkstemp(\"" << mPath << "\") failed: " + << message_from(mkst_errno, buffer, + strerror_r(mkst_errno, buffer, sizeof(buffer))) + << LL_ENDL; + } + // mkstemp() seems to have worked! Capture the modified filename. + // Avoid the nul byte we appended. + mPath.assign(pathtemplate.begin(), (pathtemplate.end()-1)); + +/*==========================================================================*| + // Define an ostream on the open fd. Tell it to close fd on destruction. + boost::iostreams::stream<boost::iostreams::file_descriptor_sink> + out(fd, boost::iostreams::close_handle); +|*==========================================================================*/ + + // Write desired content. + std::ostringstream out; + // Stream stuff to it. + func(out); + + std::string data(out.str()); + int written(_write(fd, data.c_str(), data.length())); + int closed(_close(fd)); + llassert_always(written == data.length() && closed == 0); + +#else // LL_WINDOWS + // GetTempFileName() is documented to require a MAX_PATH buffer. + char tempname[MAX_PATH]; + // Use 'ext' as filename prefix, but skip leading '.' if any. + // The 0 param is very important: requests iterating until we get a + // unique name. + if (0 == GetTempFileNameA(mPath.c_str(), ext.c_str() + pfx_offset, 0, tempname)) + { + // I always have to look up this call... :-P + LPSTR msgptr; + FormatMessageA( + FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + LPSTR(&msgptr), // have to cast (char**) to (char*) + 0, NULL ); + LL_ERRS("NamedTempFile") << "GetTempFileName(\"" << mPath << "\", \"" + << (ext.c_str() + pfx_offset) << "\") failed: " + << msgptr << LL_ENDL; + LocalFree(msgptr); + } + // GetTempFileName() appears to have worked! Capture the actual + // filename. + mPath = tempname; + // Open the file and stream content to it. Destructor will close. + std::ofstream out(tempname); + func(out); + +#endif // LL_WINDOWS + } + + void peep() + { + std::cout << "File '" << mPath << "' contains:\n"; + std::ifstream reader(mPath.c_str()); + std::string line; + while (std::getline(reader, line)) + std::cout << line << '\n'; + std::cout << "---\n"; + } + + std::string mPath; +}; + namespace tut { struct sd_xml_data @@ -1494,5 +1752,223 @@ namespace tut ensureBinaryAndNotation("map", test); ensureBinaryAndXML("map", test); } -} + struct TestPythonCompatible + { + TestPythonCompatible(): + // Note the peculiar insertion of __FILE__ into this string. Since + // this script is being written into a platform-dependent temp + // directory, we can't locate indra/lib/python relative to + // Python's __file__. Use __FILE__ instead, navigating relative + // to this C++ source file. Use Python raw-string syntax so + // Windows pathname backslashes won't mislead Python's string + // scanner. + import_llsd("import os.path\n" + "import sys\n" + "sys.path.insert(0,\n" + " os.path.join(os.path.dirname(r'" __FILE__ "'),\n" + " os.pardir, os.pardir, 'lib', 'python'))\n" + "try:\n" + " from llbase import llsd\n" + "except ImportError:\n" + " from indra.base import llsd\n") + {} + ~TestPythonCompatible() {} + + std::string import_llsd; + + template <typename CONTENT> + void python(const std::string& desc, const CONTENT& script, int expect=0) + { + const char* PYTHON(getenv("PYTHON")); + ensure("Set $PYTHON to the Python interpreter", PYTHON); + + NamedTempFile scriptfile(".py", script); + +#if LL_WINDOWS + std::string q("\""); + std::string qPYTHON(q + PYTHON + q); + std::string qscript(q + scriptfile.getName() + q); + int rc = _spawnl(_P_WAIT, PYTHON, qPYTHON.c_str(), qscript.c_str(), NULL); + if (rc == -1) + { + char buffer[256]; + strerror_s(buffer, errno); // C++ can infer the buffer size! :-O + ensure(STRINGIZE("Couldn't run Python " << desc << "script: " << buffer), false); + } + else + { + ensure_equals(STRINGIZE(desc << " script terminated with rc " << rc), rc, expect); + } + +#else // LL_DARWIN, LL_LINUX + LLProcessLauncher py; + py.setExecutable(PYTHON); + py.addArgument(scriptfile.getName()); + ensure_equals(STRINGIZE("Couldn't launch " << desc << " script"), py.launch(), 0); + // Implementing timeout would mean messing with alarm() and + // catching SIGALRM... later maybe... + int status(0); + if (waitpid(py.getProcessID(), &status, 0) == -1) + { + int waitpid_errno(errno); + ensure_equals(STRINGIZE("Couldn't retrieve rc from " << desc << " script: " + "waitpid() errno " << waitpid_errno), + waitpid_errno, ECHILD); + } + else + { + if (WIFEXITED(status)) + { + int rc(WEXITSTATUS(status)); + ensure_equals(STRINGIZE(desc << " script terminated with rc " << rc), + rc, expect); + } + else if (WIFSIGNALED(status)) + { + ensure(STRINGIZE(desc << " script terminated by signal " << WTERMSIG(status)), + false); + } + else + { + ensure(STRINGIZE(desc << " script produced impossible status " << status), + false); + } + } +#endif + } + }; + + typedef tut::test_group<TestPythonCompatible> TestPythonCompatibleGroup; + typedef TestPythonCompatibleGroup::object TestPythonCompatibleObject; + TestPythonCompatibleGroup pycompat("LLSD serialize Python compatibility"); + + template<> template<> + void TestPythonCompatibleObject::test<1>() + { + set_test_name("verify python()"); + python("hello", + "import sys\n" + "sys.exit(17)\n", + 17); // expect nonzero rc + } + + template<> template<> + void TestPythonCompatibleObject::test<2>() + { + set_test_name("verify NamedTempFile"); + python("platform", + "import sys\n" + "print 'Running on', sys.platform\n"); + } + + template<> template<> + void TestPythonCompatibleObject::test<3>() + { + set_test_name("verify sequence to Python"); + + LLSD cdata(LLSDArray(17)(3.14) + ("This string\n" + "has several\n" + "lines.")); + + const char pydata[] = + "def verify(iterable):\n" + " it = iter(iterable)\n" + " assert it.next() == 17\n" + " assert abs(it.next() - 3.14) < 0.01\n" + " assert it.next() == '''\\\n" + "This string\n" + "has several\n" + "lines.'''\n" + " try:\n" + " it.next()\n" + " except StopIteration:\n" + " pass\n" + " else:\n" + " assert False, 'Too many data items'\n"; + + // Create a something.llsd file containing 'data' serialized to + // notation. It's important to separate with newlines because Python's + // llsd module doesn't support parsing from a file stream, only from a + // string, so we have to know how much of the file to read into a + // string. + NamedTempFile file(".llsd", + // NamedTempFile's boost::function constructor + // takes a callable. To this callable it passes the + // std::ostream with which it's writing the + // NamedTempFile. This lambda-based expression + // first calls LLSD::Serialize() with that ostream, + // then streams a newline to it, etc. + (lambda::bind(LLSDSerialize::toNotation, cdata[0], lambda::_1), + lambda::_1 << '\n', + lambda::bind(LLSDSerialize::toNotation, cdata[1], lambda::_1), + lambda::_1 << '\n', + lambda::bind(LLSDSerialize::toNotation, cdata[2], lambda::_1), + lambda::_1 << '\n')); + + python("read C++ notation", + lambda::_1 << + import_llsd << + "def parse_each(iterable):\n" + " for item in iterable:\n" + " yield llsd.parse(item)\n" << + pydata << + // Don't forget raw-string syntax for Windows pathnames. + "verify(parse_each(open(r'" << file.getName() << "')))\n"); + } + + template<> template<> + void TestPythonCompatibleObject::test<4>() + { + set_test_name("verify sequence from Python"); + + // Create an empty data file. This is just a placeholder for our + // script to write into. Create it to establish a unique name that + // we know. + NamedTempFile file(".llsd", ""); + + python("write Python notation", + lambda::_1 << + "from __future__ import with_statement\n" << + import_llsd << + "DATA = [\n" + " 17,\n" + " 3.14,\n" + " '''\\\n" + "This string\n" + "has several\n" + "lines.''',\n" + "]\n" + // Don't forget raw-string syntax for Windows pathnames. + // N.B. Using 'print' implicitly adds newlines. + "with open(r'" << file.getName() << "', 'w') as f:\n" + " for item in DATA:\n" + " print >>f, llsd.format_notation(item)\n"); + + std::ifstream inf(file.getName().c_str()); + LLSD item; + // Notice that we're not doing anything special to parse out the + // newlines: LLSDSerialize::fromNotation ignores them. While it would + // seem they're not strictly necessary, going in this direction, we + // want to ensure that notation-separated-by-newlines works in both + // directions -- since in practice, a given file might be read by + // either language. + ensure_equals("Failed to read LLSD::Integer from Python", + LLSDSerialize::fromNotation(item, inf, LLSDSerialize::SIZE_UNLIMITED), + 1); + ensure_equals(item.asInteger(), 17); + ensure_equals("Failed to read LLSD::Real from Python", + LLSDSerialize::fromNotation(item, inf, LLSDSerialize::SIZE_UNLIMITED), + 1); + ensure_approximately_equals("Bad LLSD::Real value from Python", + item.asReal(), 3.14, 7); // 7 bits ~= 0.01 + ensure_equals("Failed to read LLSD::String from Python", + LLSDSerialize::fromNotation(item, inf, LLSDSerialize::SIZE_UNLIMITED), + 1); + ensure_equals(item.asString(), + "This string\n" + "has several\n" + "lines."); + } +} diff --git a/indra/llcommon/tests/setpython.py b/indra/llcommon/tests/setpython.py new file mode 100644 index 0000000000000000000000000000000000000000..df7b90428e929614b0d45986e875801bf5d0e1f4 --- /dev/null +++ b/indra/llcommon/tests/setpython.py @@ -0,0 +1,19 @@ +#!/usr/bin/python +"""\ +@file setpython.py +@author Nat Goodspeed +@date 2011-07-13 +@brief Set PYTHON environment variable for tests that care. + +$LicenseInfo:firstyear=2011&license=viewerlgpl$ +Copyright (c) 2011, Linden Research, Inc. +$/LicenseInfo$ +""" + +import os +import sys +import subprocess + +if __name__ == "__main__": + os.environ["PYTHON"] = sys.executable + sys.exit(subprocess.call(sys.argv[1:])) diff --git a/indra/llmessage/llcurl.cpp b/indra/llmessage/llcurl.cpp index 7c8b7e3584b6818309a3c5936dc768a3cdb43278..0735842dcd2e625eef829b73e580d70cec4d2128 100644 --- a/indra/llmessage/llcurl.cpp +++ b/indra/llmessage/llcurl.cpp @@ -579,11 +579,18 @@ void LLCurl::Easy::prepRequest(const std::string& url, //////////////////////////////////////////////////////////////////////////// -class LLCurl::Multi +class LLCurl::Multi : public LLThread { LOG_CLASS(Multi); public: - + + typedef enum + { + PERFORM_STATE_READY=0, + PERFORM_STATE_PERFORMING=1, + PERFORM_STATE_COMPLETED=2 + } ePerformState; + Multi(); ~Multi(); @@ -593,13 +600,20 @@ class LLCurl::Multi void removeEasy(Easy* easy); S32 process(); - S32 perform(); + void perform(); + virtual void run(); + CURLMsg* info_read(S32* msgs_in_queue); S32 mQueued; S32 mErrorCount; + S32 mPerformState; + + LLCondition* mSignal; + bool mQuitting; + private: void easyFree(Easy*); @@ -614,9 +628,14 @@ class LLCurl::Multi }; LLCurl::Multi::Multi() - : mQueued(0), - mErrorCount(0) + : LLThread("Curl Multi"), + mQueued(0), + mErrorCount(0), + mPerformState(PERFORM_STATE_READY) { + mQuitting = false; + mSignal = new LLCondition(NULL); + mCurlMultiHandle = curl_multi_init(); if (!mCurlMultiHandle) { @@ -630,6 +649,11 @@ LLCurl::Multi::Multi() LLCurl::Multi::~Multi() { + llassert(isStopped()); + + delete mSignal; + mSignal = NULL; + // Clean up active for(easy_active_list_t::iterator iter = mEasyActiveList.begin(); iter != mEasyActiveList.end(); ++iter) @@ -655,30 +679,50 @@ CURLMsg* LLCurl::Multi::info_read(S32* msgs_in_queue) return curlmsg; } +void LLCurl::Multi::perform() +{ + if (mPerformState == PERFORM_STATE_READY) + { + mSignal->signal(); + } +} -S32 LLCurl::Multi::perform() +void LLCurl::Multi::run() { - S32 q = 0; - for (S32 call_count = 0; - call_count < MULTI_PERFORM_CALL_REPEAT; - call_count += 1) + while (!mQuitting) { - CURLMcode code = curl_multi_perform(mCurlMultiHandle, &q); - if (CURLM_CALL_MULTI_PERFORM != code || q == 0) + mSignal->wait(); + mPerformState = PERFORM_STATE_PERFORMING; + if (!mQuitting) { - check_curl_multi_code(code); - break; - } + S32 q = 0; + for (S32 call_count = 0; + call_count < MULTI_PERFORM_CALL_REPEAT; + call_count += 1) + { + CURLMcode code = curl_multi_perform(mCurlMultiHandle, &q); + if (CURLM_CALL_MULTI_PERFORM != code || q == 0) + { + check_curl_multi_code(code); + break; + } + } + mQueued = q; + mPerformState = PERFORM_STATE_COMPLETED; + } } - mQueued = q; - return q; } S32 LLCurl::Multi::process() { perform(); - + + if (mPerformState != PERFORM_STATE_COMPLETED) + { + return 0; + } + CURLMsg* msg; int msgs_in_queue; @@ -709,6 +753,8 @@ S32 LLCurl::Multi::process() } } } + + mPerformState = PERFORM_STATE_READY; return processed; } @@ -787,6 +833,18 @@ LLCurlRequest::LLCurlRequest() : LLCurlRequest::~LLCurlRequest() { llassert_always(mThreadID == LLThread::currentID()); + + //stop all Multi handle background threads + for (curlmulti_set_t::iterator iter = mMultiSet.begin(); iter != mMultiSet.end(); ++iter) + { + LLCurl::Multi* multi = *iter; + multi->mQuitting = true; + while (!multi->isStopped()) + { + multi->mSignal->signal(); + apr_sleep(1000); + } + } for_each(mMultiSet.begin(), mMultiSet.end(), DeletePointer()); } @@ -794,6 +852,7 @@ void LLCurlRequest::addMulti() { llassert_always(mThreadID == LLThread::currentID()); LLCurl::Multi* multi = new LLCurl::Multi(); + multi->start(); mMultiSet.insert(multi); mActiveMulti = multi; mActiveRequestCount = 0; @@ -923,6 +982,13 @@ S32 LLCurlRequest::process() if (multi != mActiveMulti && tres == 0 && multi->mQueued == 0) { mMultiSet.erase(curiter); + multi->mQuitting = true; + while (!multi->isStopped()) + { + multi->mSignal->signal(); + apr_sleep(1000); + } + delete multi; } } @@ -953,6 +1019,7 @@ LLCurlEasyRequest::LLCurlEasyRequest() mResultReturned(false) { mMulti = new LLCurl::Multi(); + mMulti->start(); mEasy = mMulti->allocEasy(); if (mEasy) { @@ -963,6 +1030,12 @@ LLCurlEasyRequest::LLCurlEasyRequest() LLCurlEasyRequest::~LLCurlEasyRequest() { + mMulti->mQuitting = true; + while (!mMulti->isStopped()) + { + mMulti->mSignal->signal(); + apr_sleep(1000); + } delete mMulti; } @@ -1059,14 +1132,20 @@ void LLCurlEasyRequest::requestComplete() } } -S32 LLCurlEasyRequest::perform() +void LLCurlEasyRequest::perform() { - return mMulti->perform(); + mMulti->perform(); } // Usage: Call getRestult until it returns false (no more messages) bool LLCurlEasyRequest::getResult(CURLcode* result, LLCurl::TransferInfo* info) { + if (mMulti->mPerformState != LLCurl::Multi::PERFORM_STATE_COMPLETED) + { //we're busy, try again later + return false; + } + mMulti->mPerformState = LLCurl::Multi::PERFORM_STATE_READY; + if (!mEasy) { // Special case - we failed to initialize a curl_easy (can happen if too many open files) diff --git a/indra/llmessage/llcurl.h b/indra/llmessage/llcurl.h index 4ce3fa10780b4c7021432280acd548531e9fc1f9..2f951d6ab8eb0ebd905ac8438e13805c899cd348 100644 --- a/indra/llmessage/llcurl.h +++ b/indra/llmessage/llcurl.h @@ -236,7 +236,7 @@ class LLCurlEasyRequest void slist_append(const char* str); void sendRequest(const std::string& url); void requestComplete(); - S32 perform(); + void perform(); bool getResult(CURLcode* result, LLCurl::TransferInfo* info = NULL); std::string getErrorString(); diff --git a/indra/llmessage/llfiltersd2xmlrpc.cpp b/indra/llmessage/llfiltersd2xmlrpc.cpp index 812ef7c151e680ed32dada0949a1269053456b72..e0ca056a5f698afb11ad860f0be48c2e291cc0a4 100644 --- a/indra/llmessage/llfiltersd2xmlrpc.cpp +++ b/indra/llmessage/llfiltersd2xmlrpc.cpp @@ -308,6 +308,7 @@ LLFilterSD2XMLRPCResponse::~LLFilterSD2XMLRPCResponse() } +static LLFastTimer::DeclareTimer FTM_PROCESS_SD2XMLRPC_RESPONSE("SD2XMLRPC Response"); // virtual LLIOPipe::EStatus LLFilterSD2XMLRPCResponse::process_impl( const LLChannelDescriptors& channels, @@ -316,6 +317,8 @@ LLIOPipe::EStatus LLFilterSD2XMLRPCResponse::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_SD2XMLRPC_RESPONSE); + PUMP_DEBUG; // This pipe does not work if it does not have everyting. This // could be addressed by making a stream parser for llsd which @@ -382,6 +385,8 @@ LLFilterSD2XMLRPCRequest::~LLFilterSD2XMLRPCRequest() { } +static LLFastTimer::DeclareTimer FTM_PROCESS_SD2XMLRPC_REQUEST("S22XMLRPC Request"); + // virtual LLIOPipe::EStatus LLFilterSD2XMLRPCRequest::process_impl( const LLChannelDescriptors& channels, @@ -390,6 +395,7 @@ LLIOPipe::EStatus LLFilterSD2XMLRPCRequest::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_SD2XMLRPC_REQUEST); // This pipe does not work if it does not have everyting. This // could be addressed by making a stream parser for llsd which // handled partial information. @@ -586,6 +592,8 @@ LLFilterXMLRPCResponse2LLSD::~LLFilterXMLRPCResponse2LLSD() { } +static LLFastTimer::DeclareTimer FTM_PROCESS_XMLRPC2LLSD_RESPONSE("XMLRPC2LLSD Response"); + LLIOPipe::EStatus LLFilterXMLRPCResponse2LLSD::process_impl( const LLChannelDescriptors& channels, buffer_ptr_t& buffer, @@ -593,6 +601,8 @@ LLIOPipe::EStatus LLFilterXMLRPCResponse2LLSD::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_XMLRPC2LLSD_RESPONSE); + PUMP_DEBUG; if(!eos) return STATUS_BREAK; if(!buffer) return STATUS_ERROR; @@ -668,6 +678,7 @@ LLFilterXMLRPCRequest2LLSD::~LLFilterXMLRPCRequest2LLSD() { } +static LLFastTimer::DeclareTimer FTM_PROCESS_XMLRPC2LLSD_REQUEST("XMLRPC2LLSD Request"); LLIOPipe::EStatus LLFilterXMLRPCRequest2LLSD::process_impl( const LLChannelDescriptors& channels, buffer_ptr_t& buffer, @@ -675,6 +686,7 @@ LLIOPipe::EStatus LLFilterXMLRPCRequest2LLSD::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_XMLRPC2LLSD_REQUEST); PUMP_DEBUG; if(!eos) return STATUS_BREAK; if(!buffer) return STATUS_ERROR; diff --git a/indra/llmessage/lliohttpserver.cpp b/indra/llmessage/lliohttpserver.cpp index 3b18a9177cf055e244953b36373016eb05619b6c..73e8a690851800ca5bf7a69314e15ee446bc316e 100644 --- a/indra/llmessage/lliohttpserver.cpp +++ b/indra/llmessage/lliohttpserver.cpp @@ -140,6 +140,7 @@ class LLHTTPPipe : public LLIOPipe LLSD mHeaders; }; +static LLFastTimer::DeclareTimer FTM_PROCESS_HTTP_PIPE("HTTP Pipe"); LLIOPipe::EStatus LLHTTPPipe::process_impl( const LLChannelDescriptors& channels, buffer_ptr_t& buffer, @@ -147,6 +148,7 @@ LLIOPipe::EStatus LLHTTPPipe::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_HTTP_PIPE); PUMP_DEBUG; lldebugs << "LLSDHTTPServer::process_impl" << llendl; @@ -428,6 +430,9 @@ class LLHTTPResponseHeader : public LLIOPipe /** * LLHTTPResponseHeader */ + +static LLFastTimer::DeclareTimer FTM_PROCESS_HTTP_HEADER("HTTP Header"); + // virtual LLIOPipe::EStatus LLHTTPResponseHeader::process_impl( const LLChannelDescriptors& channels, @@ -436,6 +441,7 @@ LLIOPipe::EStatus LLHTTPResponseHeader::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_HTTP_HEADER); PUMP_DEBUG; LLMemType m1(LLMemType::MTYPE_IO_HTTP_SERVER); if(eos) @@ -630,6 +636,8 @@ void LLHTTPResponder::markBad( << "</body>\n</html>\n"; } +static LLFastTimer::DeclareTimer FTM_PROCESS_HTTP_RESPONDER("HTTP Responder"); + // virtual LLIOPipe::EStatus LLHTTPResponder::process_impl( const LLChannelDescriptors& channels, @@ -638,6 +646,7 @@ LLIOPipe::EStatus LLHTTPResponder::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_HTTP_RESPONDER); PUMP_DEBUG; LLMemType m1(LLMemType::MTYPE_IO_HTTP_SERVER); LLIOPipe::EStatus status = STATUS_OK; diff --git a/indra/llmessage/lliosocket.cpp b/indra/llmessage/lliosocket.cpp index 8c752fbe301e74f2767e4203555d6cc4bc7fd868..b717e321bfe9eef182eba707001dc171837c6c03 100644 --- a/indra/llmessage/lliosocket.cpp +++ b/indra/llmessage/lliosocket.cpp @@ -301,6 +301,8 @@ LLIOSocketReader::~LLIOSocketReader() //lldebugs << "Destroying LLIOSocketReader" << llendl; } +static LLFastTimer::DeclareTimer FTM_PROCESS_SOCKET_READER("Socket Reader"); + // virtual LLIOPipe::EStatus LLIOSocketReader::process_impl( const LLChannelDescriptors& channels, @@ -309,6 +311,7 @@ LLIOPipe::EStatus LLIOSocketReader::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_SOCKET_READER); PUMP_DEBUG; LLMemType m1(LLMemType::MTYPE_IO_TCP); if(!mSource) return STATUS_PRECONDITION_NOT_MET; @@ -401,6 +404,7 @@ LLIOSocketWriter::~LLIOSocketWriter() //lldebugs << "Destroying LLIOSocketWriter" << llendl; } +static LLFastTimer::DeclareTimer FTM_PROCESS_SOCKET_WRITER("Socket Writer"); // virtual LLIOPipe::EStatus LLIOSocketWriter::process_impl( const LLChannelDescriptors& channels, @@ -409,6 +413,7 @@ LLIOPipe::EStatus LLIOSocketWriter::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_SOCKET_WRITER); PUMP_DEBUG; LLMemType m1(LLMemType::MTYPE_IO_TCP); if(!mDestination) return STATUS_PRECONDITION_NOT_MET; @@ -555,6 +560,7 @@ void LLIOServerSocket::setResponseTimeout(F32 timeout_secs) mResponseTimeout = timeout_secs; } +static LLFastTimer::DeclareTimer FTM_PROCESS_SERVER_SOCKET("Server Socket"); // virtual LLIOPipe::EStatus LLIOServerSocket::process_impl( const LLChannelDescriptors& channels, @@ -563,6 +569,7 @@ LLIOPipe::EStatus LLIOServerSocket::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_SERVER_SOCKET); PUMP_DEBUG; LLMemType m1(LLMemType::MTYPE_IO_TCP); if(!pump) diff --git a/indra/llmessage/llioutil.cpp b/indra/llmessage/llioutil.cpp index 2e6ee59ff2cdfb160e1c820c9a2bd75b75c0abc3..8c50fd50693a1e62ab70d57c8649465d2ebecd21 100644 --- a/indra/llmessage/llioutil.cpp +++ b/indra/llmessage/llioutil.cpp @@ -43,6 +43,8 @@ LLIOPipe::EStatus LLIOFlush::process_impl( return STATUS_OK; } + +static LLFastTimer::DeclareTimer FTM_PROCESS_SLEEP("IO Sleep"); /** * @class LLIOSleep */ @@ -53,6 +55,7 @@ LLIOPipe::EStatus LLIOSleep::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_SLEEP); if(mSeconds > 0.0) { if(pump) pump->sleepChain(mSeconds); @@ -62,6 +65,7 @@ LLIOPipe::EStatus LLIOSleep::process_impl( return STATUS_DONE; } +static LLFastTimer::DeclareTimer FTM_PROCESS_ADD_CHAIN("Add Chain"); /** * @class LLIOAddChain */ @@ -72,6 +76,7 @@ LLIOPipe::EStatus LLIOAddChain::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_ADD_CHAIN); pump->addChain(mChain, mTimeout); return STATUS_DONE; } diff --git a/indra/llmessage/llsdrpcclient.cpp b/indra/llmessage/llsdrpcclient.cpp index 86fe5c79122f026244107999b7a22a2a258441b2..91fd070f0744b6ac24252ee1563cdc3d06f0e545 100644 --- a/indra/llmessage/llsdrpcclient.cpp +++ b/indra/llmessage/llsdrpcclient.cpp @@ -82,6 +82,8 @@ bool LLSDRPCResponse::extractResponse(const LLSD& sd) return rv; } +static LLFastTimer::DeclareTimer FTM_SDRPC_RESPONSE("SDRPC Response"); + // virtual LLIOPipe::EStatus LLSDRPCResponse::process_impl( const LLChannelDescriptors& channels, @@ -90,6 +92,7 @@ LLIOPipe::EStatus LLSDRPCResponse::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_SDRPC_RESPONSE); PUMP_DEBUG; LLMemType m1(LLMemType::MTYPE_IO_SD_CLIENT); if(mIsError) @@ -178,6 +181,8 @@ bool LLSDRPCClient::call( return true; } +static LLFastTimer::DeclareTimer FTM_PROCESS_SDRPC_CLIENT("SDRPC Client"); + // virtual LLIOPipe::EStatus LLSDRPCClient::process_impl( const LLChannelDescriptors& channels, @@ -186,6 +191,7 @@ LLIOPipe::EStatus LLSDRPCClient::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_SDRPC_CLIENT); PUMP_DEBUG; LLMemType m1(LLMemType::MTYPE_IO_SD_CLIENT); if((STATE_NONE == mState) || (!pump)) diff --git a/indra/llmessage/llsdrpcserver.cpp b/indra/llmessage/llsdrpcserver.cpp index f87c418fb152c5aece31c7e3c0ce73245a18ebba..9f776aca72a252220fbf4b9f659d376a88a18125 100644 --- a/indra/llmessage/llsdrpcserver.cpp +++ b/indra/llmessage/llsdrpcserver.cpp @@ -97,6 +97,8 @@ void LLSDRPCServer::clearLock() } } +static LLFastTimer::DeclareTimer FTM_PROCESS_SDRPC_SERVER("SDRPC Server"); + // virtual LLIOPipe::EStatus LLSDRPCServer::process_impl( const LLChannelDescriptors& channels, @@ -105,6 +107,7 @@ LLIOPipe::EStatus LLSDRPCServer::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_SDRPC_SERVER); PUMP_DEBUG; LLMemType m1(LLMemType::MTYPE_IO_SD_SERVER); // lldebugs << "LLSDRPCServer::process_impl" << llendl; diff --git a/indra/llmessage/llurlrequest.cpp b/indra/llmessage/llurlrequest.cpp index 28bd09fc4cb10615f60d1f224411b2249fa1770a..e8e35d00a21aa5808c6e5b35047e007751fc66f1 100644 --- a/indra/llmessage/llurlrequest.cpp +++ b/indra/llmessage/llurlrequest.cpp @@ -270,6 +270,8 @@ LLIOPipe::EStatus LLURLRequest::handleError( return status; } +static LLFastTimer::DeclareTimer FTM_PROCESS_URL_REQUEST("URL Request"); + // virtual LLIOPipe::EStatus LLURLRequest::process_impl( const LLChannelDescriptors& channels, @@ -278,6 +280,7 @@ LLIOPipe::EStatus LLURLRequest::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_URL_REQUEST); PUMP_DEBUG; LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST); //llinfos << "LLURLRequest::process_impl()" << llendl; @@ -288,6 +291,8 @@ LLIOPipe::EStatus LLURLRequest::process_impl( const S32 MIN_ACCUMULATION = 100000; if(pump && (mDetail->mByteAccumulator > MIN_ACCUMULATION)) { + static LLFastTimer::DeclareTimer FTM_URL_ADJUST_TIMEOUT("Adjust Timeout"); + LLFastTimer t(FTM_URL_ADJUST_TIMEOUT); // This is a pretty sloppy calculation, but this // tries to make the gross assumption that if data // is coming in at 56kb/s, then this transfer will @@ -335,16 +340,30 @@ LLIOPipe::EStatus LLURLRequest::process_impl( { PUMP_DEBUG; LLIOPipe::EStatus status = STATUS_BREAK; - mDetail->mCurlRequest->perform(); + static LLFastTimer::DeclareTimer FTM_URL_PERFORM("Perform"); + { + LLFastTimer t(FTM_URL_PERFORM); + mDetail->mCurlRequest->perform(); + } + while(1) { CURLcode result; - bool newmsg = mDetail->mCurlRequest->getResult(&result); + + static LLFastTimer::DeclareTimer FTM_PROCESS_URL_REQUEST_GET_RESULT("Get Result"); + + bool newmsg = false; + { + LLFastTimer t(FTM_PROCESS_URL_REQUEST_GET_RESULT); + newmsg = mDetail->mCurlRequest->getResult(&result); + } + if(!newmsg) { // keep processing break; } + mState = STATE_HAVE_RESPONSE; context[CONTEXT_REQUEST][CONTEXT_TRANSFERED_BYTES] = mRequestTransferedBytes; @@ -370,7 +389,11 @@ LLIOPipe::EStatus LLURLRequest::process_impl( link.mChannels = LLBufferArray::makeChannelConsumer( channels); chain.push_back(link); - pump->respond(chain, buffer, context); + static LLFastTimer::DeclareTimer FTM_PROCESS_URL_PUMP_RESPOND("Pump Respond"); + { + LLFastTimer t(FTM_PROCESS_URL_PUMP_RESPOND); + pump->respond(chain, buffer, context); + } mCompletionCallback = NULL; } break; @@ -422,8 +445,11 @@ void LLURLRequest::initialize() mResponseTransferedBytes = 0; } +static LLFastTimer::DeclareTimer FTM_URL_REQUEST_CONFIGURE("URL Configure"); bool LLURLRequest::configure() { + LLFastTimer t(FTM_URL_REQUEST_CONFIGURE); + LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST); bool rv = false; S32 bytes = mDetail->mResponseBuffer->countAfter( @@ -624,6 +650,7 @@ static size_t headerCallback(void* data, size_t size, size_t nmemb, void* user) return header_len; } +static LLFastTimer::DeclareTimer FTM_PROCESS_URL_EXTRACTOR("URL Extractor"); /** * LLContextURLExtractor */ @@ -635,6 +662,7 @@ LLIOPipe::EStatus LLContextURLExtractor::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_URL_EXTRACTOR); PUMP_DEBUG; LLMemType m1(LLMemType::MTYPE_IO_URL_REQUEST); // The destination host is in the context. @@ -713,6 +741,7 @@ void LLURLRequestComplete::responseStatus(LLIOPipe::EStatus status) mRequestStatus = status; } +static LLFastTimer::DeclareTimer FTM_PROCESS_URL_COMPLETE("URL Complete"); // virtual LLIOPipe::EStatus LLURLRequestComplete::process_impl( const LLChannelDescriptors& channels, @@ -721,6 +750,7 @@ LLIOPipe::EStatus LLURLRequestComplete::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_PROCESS_URL_COMPLETE); PUMP_DEBUG; complete(channels, buffer); return STATUS_OK; diff --git a/indra/llrender/llcubemap.cpp b/indra/llrender/llcubemap.cpp index fb22d7f1f581dbf3ea70ae301ff4a83bc8ca0fab..1b10354c22919e597b2ee67d0660cf579d6c30fb 100644 --- a/indra/llrender/llcubemap.cpp +++ b/indra/llrender/llcubemap.cpp @@ -259,7 +259,7 @@ void LLCubeMap::setMatrix(S32 stage) if (mMatrixStage < 0) return; - if (stage > 0) + //if (stage > 0) { gGL.getTexUnit(stage)->activate(); } @@ -278,17 +278,17 @@ void LLCubeMap::setMatrix(S32 stage) glLoadMatrixf((F32 *)trans.mMatrix); glMatrixMode(GL_MODELVIEW); - if (stage > 0) + /*if (stage > 0) { gGL.getTexUnit(0)->activate(); - } + }*/ } void LLCubeMap::restoreMatrix() { if (mMatrixStage < 0) return; - if (mMatrixStage > 0) + //if (mMatrixStage > 0) { gGL.getTexUnit(mMatrixStage)->activate(); } @@ -296,10 +296,10 @@ void LLCubeMap::restoreMatrix() glPopMatrix(); glMatrixMode(GL_MODELVIEW); - if (mMatrixStage > 0) + /*if (mMatrixStage > 0) { gGL.getTexUnit(0)->activate(); - } + }*/ } void LLCubeMap::setReflection (void) diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp index c224ab0e9bb20a8c6aefb7517315e1c9cf1a6180..89377262091d981cf80ba0cba2a3c16b3e4d68b6 100644 --- a/indra/llrender/llgl.cpp +++ b/indra/llrender/llgl.cpp @@ -128,9 +128,21 @@ PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB = NULL; PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB = NULL; // GL_ARB_map_buffer_range -PFNGLMAPBUFFERRANGEPROC glMapBufferRange; -PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange; - +PFNGLMAPBUFFERRANGEPROC glMapBufferRange = NULL; +PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange = NULL; + +// GL_ARB_sync +PFNGLFENCESYNCPROC glFenceSync = NULL; +PFNGLISSYNCPROC glIsSync = NULL; +PFNGLDELETESYNCPROC glDeleteSync = NULL; +PFNGLCLIENTWAITSYNCPROC glClientWaitSync = NULL; +PFNGLWAITSYNCPROC glWaitSync = NULL; +PFNGLGETINTEGER64VPROC glGetInteger64v = NULL; +PFNGLGETSYNCIVPROC glGetSynciv = NULL; + +// GL_APPLE_flush_buffer_range +PFNGLBUFFERPARAMETERIAPPLEPROC glBufferParameteriAPPLE = NULL; +PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE = NULL; // vertex object prototypes PFNGLNEWOBJECTBUFFERATIPROC glNewObjectBufferATI = NULL; @@ -334,9 +346,10 @@ LLGLManager::LLGLManager() : mHasFramebufferObject(FALSE), mMaxSamples(0), mHasBlendFuncSeparate(FALSE), - + mHasSync(FALSE), mHasVertexBufferObject(FALSE), mHasMapBufferRange(FALSE), + mHasFlushBufferRange(FALSE), mHasPBuffer(FALSE), mHasShaderObjects(FALSE), mHasVertexShader(FALSE), @@ -774,7 +787,9 @@ void LLGLManager::initExtensions() mHasOcclusionQuery = ExtensionExists("GL_ARB_occlusion_query", gGLHExts.mSysExts); mHasOcclusionQuery2 = ExtensionExists("GL_ARB_occlusion_query2", gGLHExts.mSysExts); mHasVertexBufferObject = ExtensionExists("GL_ARB_vertex_buffer_object", gGLHExts.mSysExts); + mHasSync = ExtensionExists("GL_ARB_sync", gGLHExts.mSysExts); mHasMapBufferRange = ExtensionExists("GL_ARB_map_buffer_range", gGLHExts.mSysExts); + mHasFlushBufferRange = ExtensionExists("GL_APPLE_flush_buffer_range", gGLHExts.mSysExts); mHasDepthClamp = ExtensionExists("GL_ARB_depth_clamp", gGLHExts.mSysExts) || ExtensionExists("GL_NV_depth_clamp", gGLHExts.mSysExts); // mask out FBO support when packed_depth_stencil isn't there 'cause we need it for LLRenderTarget -Brad #ifdef GL_ARB_framebuffer_object @@ -969,6 +984,16 @@ void LLGLManager::initExtensions() mHasVertexBufferObject = FALSE; } } + if (mHasSync) + { + glFenceSync = (PFNGLFENCESYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glFenceSync"); + glIsSync = (PFNGLISSYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glIsSync"); + glDeleteSync = (PFNGLDELETESYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glDeleteSync"); + glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glClientWaitSync"); + glWaitSync = (PFNGLWAITSYNCPROC) GLH_EXT_GET_PROC_ADDRESS("glWaitSync"); + glGetInteger64v = (PFNGLGETINTEGER64VPROC) GLH_EXT_GET_PROC_ADDRESS("glGetInteger64v"); + glGetSynciv = (PFNGLGETSYNCIVPROC) GLH_EXT_GET_PROC_ADDRESS("glGetSynciv"); + } if (mHasMapBufferRange) { glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC) GLH_EXT_GET_PROC_ADDRESS("glMapBufferRange"); @@ -1354,6 +1379,8 @@ void LLGLState::checkStates(const std::string& msg) glGetIntegerv(GL_BLEND_SRC, &src); glGetIntegerv(GL_BLEND_DST, &dst); + stop_glerror(); + BOOL error = FALSE; if (src != GL_SRC_ALPHA || dst != GL_ONE_MINUS_SRC_ALPHA) @@ -1374,7 +1401,9 @@ void LLGLState::checkStates(const std::string& msg) { LLGLenum state = iter->first; LLGLboolean cur_state = iter->second; + stop_glerror(); LLGLboolean gl_state = glIsEnabled(state); + stop_glerror(); if(cur_state != gl_state) { dumpStates(); @@ -1399,11 +1428,11 @@ void LLGLState::checkStates(const std::string& msg) void LLGLState::checkTextureChannels(const std::string& msg) { +#if 0 if (!gDebugGL) { return; } - stop_glerror(); GLint activeTexture; @@ -1569,6 +1598,7 @@ void LLGLState::checkTextureChannels(const std::string& msg) LL_GL_ERRS << "GL texture state corruption detected. " << msg << LL_ENDL; } } +#endif } void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) @@ -1685,7 +1715,7 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) } } - if (glIsEnabled(GL_TEXTURE_2D)) + /*if (glIsEnabled(GL_TEXTURE_2D)) { if (!(data_mask & 0x0008)) { @@ -1708,7 +1738,7 @@ void LLGLState::checkClientArrays(const std::string& msg, U32 data_mask) gFailLog << "GL does not have GL_TEXTURE_2D enabled on channel 1." << std::endl; } } - } + }*/ glClientActiveTextureARB(GL_TEXTURE0_ARB); gGL.getTexUnit(0)->activate(); diff --git a/indra/llrender/llgl.h b/indra/llrender/llgl.h index d1bee001617b33f0c3447b6571c50cefeff5949b..d736133f3ffc14ba21ec732be273c5338bcf0e76 100644 --- a/indra/llrender/llgl.h +++ b/indra/llrender/llgl.h @@ -88,7 +88,9 @@ class LLGLManager // ARB Extensions BOOL mHasVertexBufferObject; + BOOL mHasSync; BOOL mHasMapBufferRange; + BOOL mHasFlushBufferRange; BOOL mHasPBuffer; BOOL mHasShaderObjects; BOOL mHasVertexShader; diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h index f35f329f002488b8b8ce61cd2149f462b253be47..851a75629e184e60767390c843360156d7d8515a 100644 --- a/indra/llrender/llglheaders.h +++ b/indra/llrender/llglheaders.h @@ -68,6 +68,19 @@ extern PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB; extern PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB; extern PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB; +// GL_ARB_sync +extern PFNGLFENCESYNCPROC glFenceSync; +extern PFNGLISSYNCPROC glIsSync; +extern PFNGLDELETESYNCPROC glDeleteSync; +extern PFNGLCLIENTWAITSYNCPROC glClientWaitSync; +extern PFNGLWAITSYNCPROC glWaitSync; +extern PFNGLGETINTEGER64VPROC glGetInteger64v; +extern PFNGLGETSYNCIVPROC glGetSynciv; + +// GL_APPLE_flush_buffer_range +extern PFNGLBUFFERPARAMETERIAPPLEPROC glBufferParameteriAPPLE; +extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE; + // GL_ARB_map_buffer_range extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange; extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange; @@ -310,6 +323,19 @@ extern PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB; extern PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB; extern PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB; +// GL_ARB_sync +extern PFNGLFENCESYNCPROC glFenceSync; +extern PFNGLISSYNCPROC glIsSync; +extern PFNGLDELETESYNCPROC glDeleteSync; +extern PFNGLCLIENTWAITSYNCPROC glClientWaitSync; +extern PFNGLWAITSYNCPROC glWaitSync; +extern PFNGLGETINTEGER64VPROC glGetInteger64v; +extern PFNGLGETSYNCIVPROC glGetSynciv; + +// GL_APPLE_flush_buffer_range +extern PFNGLBUFFERPARAMETERIAPPLEPROC glBufferParameteriAPPLE; +extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE; + // GL_ARB_map_buffer_range extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange; extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange; @@ -519,6 +545,19 @@ extern PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB; extern PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB; extern PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB; +// GL_ARB_sync +extern PFNGLFENCESYNCPROC glFenceSync; +extern PFNGLISSYNCPROC glIsSync; +extern PFNGLDELETESYNCPROC glDeleteSync; +extern PFNGLCLIENTWAITSYNCPROC glClientWaitSync; +extern PFNGLWAITSYNCPROC glWaitSync; +extern PFNGLGETINTEGER64VPROC glGetInteger64v; +extern PFNGLGETSYNCIVPROC glGetSynciv; + +// GL_APPLE_flush_buffer_range +extern PFNGLBUFFERPARAMETERIAPPLEPROC glBufferParameteriAPPLE; +extern PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC glFlushMappedBufferRangeAPPLE; + // GL_ARB_map_buffer_range extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange; extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange; diff --git a/indra/llrender/llglslshader.cpp b/indra/llrender/llglslshader.cpp index ad2c662dfcacf784d89fa681003cb956d4bd3d6d..80c93bb0d2335ba015f7d7b663b03347c7e6773d 100644 --- a/indra/llrender/llglslshader.cpp +++ b/indra/llrender/llglslshader.cpp @@ -49,6 +49,11 @@ using std::make_pair; using std::string; GLhandleARB LLGLSLShader::sCurBoundShader = 0; +bool LLGLSLShader::sNoFixedFunction = false; + +//UI shader -- declared here so llui_libtest will link properly +LLGLSLShader gUIProgram; +LLGLSLShader gSolidColorProgram; BOOL shouldChange(const LLVector4& v1, const LLVector4& v2) { @@ -376,6 +381,7 @@ BOOL LLGLSLShader::link(BOOL suppress_errors) void LLGLSLShader::bind() { + gGL.flush(); if (gGLManager.mHasShaderObjects) { glUseProgramObjectARB(mProgramObject); @@ -390,6 +396,7 @@ void LLGLSLShader::bind() void LLGLSLShader::unbind() { + gGL.flush(); if (gGLManager.mHasShaderObjects) { stop_glerror(); diff --git a/indra/llrender/llglslshader.h b/indra/llrender/llglslshader.h index 4922eb6d6725bd0eee38177a2d776231c9e27ed1..621e0b82eeabb98a5e9b50927922bb02d9dbe350 100644 --- a/indra/llrender/llglslshader.h +++ b/indra/llrender/llglslshader.h @@ -67,6 +67,7 @@ class LLGLSLShader LLGLSLShader(); static GLhandleARB sCurBoundShader; + static bool sNoFixedFunction; void unload(); BOOL createShader(std::vector<std::string> * attributes, @@ -141,4 +142,10 @@ class LLGLSLShader std::string mName; }; +//UI shader (declared here so llui_libtest will link properly) +extern LLGLSLShader gUIProgram; +//output vec4(color.rgb,color.a*tex0[tc0].a) +extern LLGLSLShader gSolidColorProgram; + + #endif diff --git a/indra/llrender/llimagegl.cpp b/indra/llrender/llimagegl.cpp index 60a5962234054aa34b64ea9d543759f54113beb6..9ca3a23d52cd4665e76c792b8c3158d65c45a1e5 100644 --- a/indra/llrender/llimagegl.cpp +++ b/indra/llrender/llimagegl.cpp @@ -1414,6 +1414,8 @@ BOOL LLImageGL::readBackRaw(S32 discard_level, LLImageRaw* imageraw, bool compre void LLImageGL::deleteDeadTextures() { + bool reset = false; + while (!sDeadTextureList.empty()) { GLuint tex = sDeadTextureList.front(); @@ -1426,12 +1428,22 @@ void LLImageGL::deleteDeadTextures() { tex_unit->unbind(tex_unit->getCurrType()); stop_glerror(); + + if (i > 0) + { + reset = true; + } } } glDeleteTextures(1, &tex); stop_glerror(); } + + if (reset) + { + gGL.getTexUnit(0)->activate(); + } } void LLImageGL::destroyGLTexture() diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 1d82dda30f6b4e3b289a15c8bd108c7885184613..70df1dd1d184522b5f716509c8ed9600c20fbb01 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -46,6 +46,7 @@ S32 gGLViewport[4]; U32 LLRender::sUICalls = 0; U32 LLRender::sUIVerts = 0; +U32 LLTexUnit::sWhiteTexture = 0; static const U32 LL_NUM_TEXTURE_LAYERS = 32; static const U32 LL_NUM_LIGHT_UNITS = 8; @@ -126,7 +127,8 @@ void LLTexUnit::refreshState(void) // Per apple spec, don't call glEnable/glDisable when index exceeds max texture units // http://www.mailinglistarchive.com/html/mac-opengl@lists.apple.com/2008-07/msg00653.html // - bool enableDisable = (mIndex < gGLManager.mNumTextureUnits) && mCurrTexType != LLTexUnit::TT_MULTISAMPLE_TEXTURE; + bool enableDisable = !LLGLSLShader::sNoFixedFunction && + (mIndex < gGLManager.mNumTextureUnits) && mCurrTexType != LLTexUnit::TT_MULTISAMPLE_TEXTURE; if (mCurrTexType != TT_NONE) { @@ -184,7 +186,8 @@ void LLTexUnit::enable(eTextureType type) mCurrTexType = type; gGL.flush(); - if (type != LLTexUnit::TT_MULTISAMPLE_TEXTURE && + if (!LLGLSLShader::sNoFixedFunction && + type != LLTexUnit::TT_MULTISAMPLE_TEXTURE && mIndex < gGLManager.mNumTextureUnits) { glEnable(sGLTextureType[type]); @@ -201,7 +204,8 @@ void LLTexUnit::disable(void) activate(); unbind(mCurrTexType); gGL.flush(); - if (mCurrTexType != LLTexUnit::TT_MULTISAMPLE_TEXTURE && + if (!LLGLSLShader::sNoFixedFunction && + mCurrTexType != LLTexUnit::TT_MULTISAMPLE_TEXTURE && mIndex < gGLManager.mNumTextureUnits) { glDisable(sGLTextureType[mCurrTexType]); @@ -403,7 +407,14 @@ void LLTexUnit::unbind(eTextureType type) activate(); mCurrTexture = 0; - glBindTexture(sGLTextureType[type], 0); + if (LLGLSLShader::sNoFixedFunction && type == LLTexUnit::TT_TEXTURE) + { + glBindTexture(sGLTextureType[type], sWhiteTexture); + } + else + { + glBindTexture(sGLTextureType[type], 0); + } stop_glerror(); } } @@ -474,6 +485,11 @@ void LLTexUnit::setTextureFilteringOption(LLTexUnit::eTextureFilterOptions optio void LLTexUnit::setTextureBlendType(eTextureBlendType type) { + if (LLGLSLShader::sNoFixedFunction) + { //texture blend type means nothing when using shaders + return; + } + if (mIndex < 0) return; // Do nothing if it's already correctly set. @@ -594,6 +610,11 @@ GLint LLTexUnit::getTextureSourceType(eTextureBlendSrc src, bool isAlpha) void LLTexUnit::setTextureCombiner(eTextureBlendOp op, eTextureBlendSrc src1, eTextureBlendSrc src2, bool isAlpha) { + if (LLGLSLShader::sNoFixedFunction) + { //register combiners do nothing when not using fixed function + return; + } + if (mIndex < 0) return; activate(); diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h index 41e7b35341d17f27b77ccd761d44bca95463e399..9eedebe2ce08efb9d74d45871c70466b5883da86 100644 --- a/indra/llrender/llrender.h +++ b/indra/llrender/llrender.h @@ -52,6 +52,8 @@ class LLTexUnit { friend class LLRender; public: + static U32 sWhiteTexture; + typedef enum { TT_TEXTURE = 0, // Standard 2D Texture diff --git a/indra/llrender/llrendertarget.cpp b/indra/llrender/llrendertarget.cpp index b6463309e111f81db4805915fe472577ec435f20..8c0d3592df9fde28330dbc706d6a70bdf5d5595a 100644 --- a/indra/llrender/llrendertarget.cpp +++ b/indra/llrender/llrendertarget.cpp @@ -72,11 +72,11 @@ LLRenderTarget::~LLRenderTarget() release(); } -void LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, bool stencil, LLTexUnit::eTextureType usage, bool use_fbo, S32 samples) +bool LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, bool stencil, LLTexUnit::eTextureType usage, bool use_fbo, S32 samples) { stop_glerror(); - release(); + stop_glerror(); mResX = resx; mResY = resy; @@ -103,9 +103,11 @@ void LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, boo { if (depth) { - stop_glerror(); - allocateDepth(); - stop_glerror(); + if (!allocateDepth()) + { + llwarns << "Failed to allocate depth buffer for render target." << llendl; + return false; + } } glGenFramebuffers(1, (GLuint *) &mFBO); @@ -131,14 +133,14 @@ void LLRenderTarget::allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, boo stop_glerror(); } - addColorAttachment(color_fmt); + return addColorAttachment(color_fmt); } -void LLRenderTarget::addColorAttachment(U32 color_fmt) +bool LLRenderTarget::addColorAttachment(U32 color_fmt) { if (color_fmt == 0) { - return; + return true; } U32 offset = mTex.size(); @@ -158,14 +160,26 @@ void LLRenderTarget::addColorAttachment(U32 color_fmt) #ifdef GL_ARB_texture_multisample if (mSamples > 1) { + clear_glerror(); glTexImage2DMultisample(LLTexUnit::getInternalType(mUsage), mSamples, color_fmt, mResX, mResY, GL_TRUE); + if (glGetError() != GL_NO_ERROR) + { + llwarns << "Could not allocate multisample color buffer for render target." << llendl; + return false; + } } else #else llassert_always(mSamples <= 1); #endif { + clear_glerror(); LLImageGL::setManualImage(LLTexUnit::getInternalType(mUsage), 0, color_fmt, mResX, mResY, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + if (glGetError() != GL_NO_ERROR) + { + llwarns << "Could not allocate color buffer for render target." << llendl; + return false; + } } stop_glerror(); @@ -217,15 +231,18 @@ void LLRenderTarget::addColorAttachment(U32 color_fmt) flush(); } + return true; } -void LLRenderTarget::allocateDepth() +bool LLRenderTarget::allocateDepth() { if (mStencil) { //use render buffers where stencil buffers are in play glGenRenderbuffers(1, (GLuint *) &mDepth); glBindRenderbuffer(GL_RENDERBUFFER, mDepth); + stop_glerror(); + clear_glerror(); glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, mResX, mResY); glBindRenderbuffer(GL_RENDERBUFFER, 0); } @@ -237,17 +254,29 @@ void LLRenderTarget::allocateDepth() { U32 internal_type = LLTexUnit::getInternalType(mUsage); gGL.getTexUnit(0)->setTextureFilteringOption(LLTexUnit::TFO_POINT); + stop_glerror(); + clear_glerror(); LLImageGL::setManualImage(internal_type, 0, GL_DEPTH_COMPONENT32, mResX, mResY, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, NULL); } #ifdef GL_ARB_texture_multisample else { + stop_glerror(); + clear_glerror(); glTexImage2DMultisample(LLTexUnit::getInternalType(mUsage), mSamples, GL_DEPTH_COMPONENT32, mResX, mResY, GL_TRUE); } #else llassert_always(mSamples <= 1); #endif } + + if (glGetError() != GL_NO_ERROR) + { + llwarns << "Unable to allocate depth buffer for render target." << llendl; + return false; + } + + return true; } void LLRenderTarget::shareDepthBuffer(LLRenderTarget& target) diff --git a/indra/llrender/llrendertarget.h b/indra/llrender/llrendertarget.h index 094b58b562cabcab805cbfc7415c7805714d9940..dea1de12d80953a2f519e337a62b4805bb1fc068 100644 --- a/indra/llrender/llrendertarget.h +++ b/indra/llrender/llrendertarget.h @@ -66,30 +66,30 @@ class LLRenderTarget static bool sUseFBO; LLRenderTarget(); - virtual ~LLRenderTarget(); + ~LLRenderTarget(); //allocate resources for rendering //must be called before use //multiple calls will release previously allocated resources - void allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, bool stencil, LLTexUnit::eTextureType usage = LLTexUnit::TT_TEXTURE, bool use_fbo = false, S32 samples = 0); + bool allocate(U32 resx, U32 resy, U32 color_fmt, bool depth, bool stencil, LLTexUnit::eTextureType usage = LLTexUnit::TT_TEXTURE, bool use_fbo = false, S32 samples = 0); //add color buffer attachment //limit of 4 color attachments per render target - virtual void addColorAttachment(U32 color_fmt); + bool addColorAttachment(U32 color_fmt); //allocate a depth texture - virtual void allocateDepth(); + bool allocateDepth(); //share depth buffer with provided render target - virtual void shareDepthBuffer(LLRenderTarget& target); + void shareDepthBuffer(LLRenderTarget& target); //free any allocated resources //safe to call redundantly - virtual void release(); + void release(); //bind target for rendering //applies appropriate viewport - virtual void bindTarget(); + void bindTarget(); //unbind target for rendering static void unbindTarget(); diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 4a0b964e616bb06644ed4bbe6b5f011ca2fdb021..1180afa6313758f760a643c10f078e69ba5f8a52 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -35,6 +35,8 @@ #include "llmemtype.h" #include "llrender.h" #include "llvector4a.h" +#include "llglslshader.h" + //============================================================================ @@ -65,6 +67,60 @@ S32 LLVertexBuffer::sWeight4Loc = -1; std::vector<U32> LLVertexBuffer::sDeleteList; +const U32 FENCE_WAIT_TIME_NANOSECONDS = 10000; //1 ms + +class LLGLSyncFence : public LLGLFence +{ +public: +#ifdef GL_ARB_sync + GLsync mSync; +#endif + + LLGLSyncFence() + { +#ifdef GL_ARB_sync + mSync = 0; +#endif + } + + ~LLGLSyncFence() + { +#ifdef GL_ARB_sync + if (mSync) + { + glDeleteSync(mSync); + } +#endif + } + + void placeFence() + { +#ifdef GL_ARB_sync + if (mSync) + { + glDeleteSync(mSync); + } + mSync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); +#endif + } + + void wait() + { +#ifdef GL_ARB_sync + if (mSync) + { + while (glClientWaitSync(mSync, 0, FENCE_WAIT_TIME_NANOSECONDS) == GL_TIMEOUT_EXPIRED) + { //track the number of times we've waited here + static S32 waits = 0; + waits++; + } + } +#endif + } + + +}; + S32 LLVertexBuffer::sTypeSize[LLVertexBuffer::TYPE_MAX] = { sizeof(LLVector4), // TYPE_VERTEX, @@ -309,6 +365,7 @@ void LLVertexBuffer::drawRange(U32 mode, U32 start, U32 end, U32 count, U32 indi glDrawRangeElements(sGLMode[mode], start, end, count, GL_UNSIGNED_SHORT, idx); stop_glerror(); + placeFence(); } void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const @@ -340,6 +397,7 @@ void LLVertexBuffer::draw(U32 mode, U32 count, U32 indices_offset) const glDrawElements(sGLMode[mode], count, GL_UNSIGNED_SHORT, ((U16*) getIndicesPointer()) + indices_offset); stop_glerror(); + placeFence(); } void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const @@ -365,6 +423,7 @@ void LLVertexBuffer::drawArrays(U32 mode, U32 first, U32 count) const stop_glerror(); glDrawArrays(sGLMode[mode], first, count); stop_glerror(); + placeFence(); } //static @@ -444,9 +503,11 @@ LLVertexBuffer::LLVertexBuffer(U32 typemask, S32 usage) : mFilthy(FALSE), mEmpty(TRUE), mResized(FALSE), - mDynamicSize(FALSE) + mDynamicSize(FALSE), + mFence(NULL) { LLMemType mt2(LLMemType::MTYPE_VERTEX_CONSTRUCTOR); + mFence = NULL; if (!sEnableVBOs) { mUsage = 0 ; @@ -527,9 +588,40 @@ LLVertexBuffer::~LLVertexBuffer() destroyGLIndices(); sCount--; + if (mFence) + { + delete mFence; + } + + mFence = NULL; + llassert_always(!mMappedData && !mMappedIndexData) ; }; +void LLVertexBuffer::placeFence() const +{ + /*if (!mFence && useVBOs()) + { + if (gGLManager.mHasSync) + { + mFence = new LLGLSyncFence(); + } + } + + if (mFence) + { + mFence->placeFence(); + }*/ +} + +void LLVertexBuffer::waitFence() const +{ + /*if (mFence) + { + mFence->wait(); + }*/ +} + //---------------------------------------------------------------------------- void LLVertexBuffer::genBuffer() @@ -892,17 +984,11 @@ BOOL LLVertexBuffer::useVBOs() const { //it's generally ineffective to use VBO for things that are streaming on apple -#if LL_DARWIN - if (!mUsage || mUsage == GL_STREAM_DRAW_ARB) - { - return FALSE; - } -#else if (!mUsage) { return FALSE; } -#endif + return TRUE; } @@ -967,8 +1053,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran if (useVBOs()) { - - if (sDisableVBOMapping || gGLManager.mHasMapBufferRange) + if (sDisableVBOMapping || gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange) { if (count == -1) { @@ -1008,6 +1093,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran LLMemType mt_v(LLMemType::MTYPE_VERTEX_MAP_BUFFER_VERTICES); setBuffer(0, type); mVertexLocked = TRUE; + sMappedCount++; stop_glerror(); if(sDisableVBOMapping) @@ -1018,29 +1104,50 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran else { U8* src = NULL; -#ifdef GL_ARB_map_buffer_range + waitFence(); if (gGLManager.mHasMapBufferRange) { if (map_range) { +#ifdef GL_ARB_map_buffer_range S32 offset = mOffsets[type] + sTypeSize[type]*index; S32 length = (sTypeSize[type]*count+0xF) & ~0xF; - src = (U8*) glMapBufferRange(GL_ARRAY_BUFFER_ARB, offset, length, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT | GL_MAP_INVALIDATE_RANGE_BIT); + src = (U8*) glMapBufferRange(GL_ARRAY_BUFFER_ARB, offset, length, + GL_MAP_WRITE_BIT | + GL_MAP_FLUSH_EXPLICIT_BIT | + GL_MAP_INVALIDATE_RANGE_BIT); +#endif } else { - src = (U8*) glMapBufferRange(GL_ARRAY_BUFFER_ARB, 0, mSize, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT); +#ifdef GL_ARB_map_buffer_range + src = (U8*) glMapBufferRange(GL_ARRAY_BUFFER_ARB, 0, mSize, + GL_MAP_WRITE_BIT | + GL_MAP_FLUSH_EXPLICIT_BIT); +#endif + } + } + else if (gGLManager.mHasFlushBufferRange) + { + if (map_range) + { + glBufferParameteriAPPLE(GL_ARRAY_BUFFER_ARB, GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_FALSE); + glBufferParameteriAPPLE(GL_ARRAY_BUFFER_ARB, GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE); + src = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); + } + else + { + src = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); } } else -#else - llassert_always(!gGLManager.mHasMapBufferRange); -#endif { map_range = false; src = (U8*) glMapBufferARB(GL_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); } + llassert(src != NULL); + mMappedData = LL_NEXT_ALIGNED_ADDRESS<U8>(src); mAlignedOffset = mMappedData - src; @@ -1082,7 +1189,6 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran llerrs << "memory allocation for vertex data failed." << llendl ; } } - sMappedCount++; } } else @@ -1090,7 +1196,7 @@ U8* LLVertexBuffer::mapVertexBuffer(S32 type, S32 index, S32 count, bool map_ran map_range = false; } - if (map_range && !sDisableVBOMapping) + if (map_range && gGLManager.mHasMapBufferRange && !sDisableVBOMapping) { return mMappedData; } @@ -1114,7 +1220,7 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range) if (useVBOs()) { - if (sDisableVBOMapping || gGLManager.mHasMapBufferRange) + if (sDisableVBOMapping || gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange) { if (count == -1) { @@ -1152,6 +1258,7 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range) setBuffer(0, TYPE_INDEX); mIndexLocked = TRUE; + sMappedCount++; stop_glerror(); if(sDisableVBOMapping) @@ -1162,29 +1269,51 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range) else { U8* src = NULL; -#ifdef GL_ARB_map_buffer_range + waitFence(); if (gGLManager.mHasMapBufferRange) { if (map_range) { +#ifdef GL_ARB_map_buffer_range S32 offset = sizeof(U16)*index; S32 length = sizeof(U16)*count; - src = (U8*) glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT | GL_MAP_INVALIDATE_RANGE_BIT); + src = (U8*) glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length, + GL_MAP_WRITE_BIT | + GL_MAP_FLUSH_EXPLICIT_BIT | + GL_MAP_INVALIDATE_RANGE_BIT); +#endif + } + else + { +#ifdef GL_ARB_map_buffer_range + src = (U8*) glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, sizeof(U16)*mNumIndices, + GL_MAP_WRITE_BIT | + GL_MAP_FLUSH_EXPLICIT_BIT); +#endif + } + } + else if (gGLManager.mHasFlushBufferRange) + { + if (map_range) + { + glBufferParameteriAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_BUFFER_SERIALIZED_MODIFY_APPLE, GL_FALSE); + glBufferParameteriAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_BUFFER_FLUSHING_UNMAP_APPLE, GL_FALSE); + src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); } else { - src = (U8*) glMapBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, 0, sizeof(U16)*mNumIndices, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT); + src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); } } else -#else - llassert_always(!gGLManager.mHasMapBufferRange); -#endif { map_range = false; src = (U8*) glMapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, GL_WRITE_ONLY_ARB); } + llassert(src != NULL); + + mMappedIndexData = src; //LL_NEXT_ALIGNED_ADDRESS<U8>(src); mAlignedIndexOffset = mMappedIndexData - src; stop_glerror(); @@ -1211,15 +1340,13 @@ U8* LLVertexBuffer::mapIndexBuffer(S32 index, S32 count, bool map_range) llerrs << "memory allocation for Index data failed. " << llendl ; } } - - sMappedCount++; } else { map_range = false; } - if (map_range && !sDisableVBOMapping) + if (map_range && gGLManager.mHasMapBufferRange && !sDisableVBOMapping) { return mMappedIndexData; } @@ -1268,8 +1395,7 @@ void LLVertexBuffer::unmapBuffer(S32 type) } else { -#ifdef GL_ARB_map_buffer_range - if (gGLManager.mHasMapBufferRange) + if (gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange) { if (!mMappedVertexRegions.empty()) { @@ -1279,16 +1405,22 @@ void LLVertexBuffer::unmapBuffer(S32 type) const MappedRegion& region = mMappedVertexRegions[i]; S32 offset = region.mIndex >= 0 ? mOffsets[region.mType]+sTypeSize[region.mType]*region.mIndex : 0; S32 length = sTypeSize[region.mType]*region.mCount; - glFlushMappedBufferRange(GL_ARRAY_BUFFER_ARB, offset, length); + if (gGLManager.mHasMapBufferRange) + { +#ifdef GL_ARB_map_buffer_range + glFlushMappedBufferRange(GL_ARRAY_BUFFER_ARB, offset, length); +#endif + } + else if (gGLManager.mHasFlushBufferRange) + { + glFlushMappedBufferRangeAPPLE(GL_ARRAY_BUFFER_ARB, offset, length); + } stop_glerror(); } mMappedVertexRegions.clear(); } } -#else - llassert_always(!gGLManager.mHasMapBufferRange); -#endif stop_glerror(); glUnmapBufferARB(GL_ARRAY_BUFFER_ARB); stop_glerror(); @@ -1326,8 +1458,7 @@ void LLVertexBuffer::unmapBuffer(S32 type) } else { -#ifdef GL_ARB_map_buffer_range - if (gGLManager.mHasMapBufferRange) + if (gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange) { if (!mMappedIndexRegions.empty()) { @@ -1336,16 +1467,24 @@ void LLVertexBuffer::unmapBuffer(S32 type) const MappedRegion& region = mMappedIndexRegions[i]; S32 offset = region.mIndex >= 0 ? sizeof(U16)*region.mIndex : 0; S32 length = sizeof(U16)*region.mCount; - glFlushMappedBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length); + if (gGLManager.mHasMapBufferRange) + { +#ifdef GL_ARB_map_buffer_range + glFlushMappedBufferRange(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length); +#endif + } + else if (gGLManager.mHasFlushBufferRange) + { +#ifdef GL_APPLE_flush_buffer_range + glFlushMappedBufferRangeAPPLE(GL_ELEMENT_ARRAY_BUFFER_ARB, offset, length); +#endif + } stop_glerror(); } mMappedIndexRegions.clear(); } } -#else - llassert_always(!gGLManager.mHasMapBufferRange); -#endif stop_glerror(); glUnmapBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB); stop_glerror(); diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index aa5df305a66f0eda5bf8b31caa304311f454e4d1..cc5d11e1c29018ff1ec085da20c4e7045d33600d 100644 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h @@ -70,6 +70,12 @@ class LLVBOPool : public LLGLNamePool } }; +class LLGLFence +{ +public: + virtual void placeFence() = 0; + virtual void wait() = 0; +}; //============================================================================ // base class @@ -270,6 +276,12 @@ class LLVertexBuffer : public LLRefCount std::vector<MappedRegion> mMappedVertexRegions; std::vector<MappedRegion> mMappedIndexRegions; + mutable LLGLFence* mFence; + + void placeFence() const; + void waitFence() const; + + public: static S32 sCount; static S32 sGLCount; diff --git a/indra/llui/lltextbase.cpp b/indra/llui/lltextbase.cpp index 349dbc340537bd9d3a559445dc261ccaf4f98d3c..919364be632a6dce3b38ae2f7885770366fe97e5 100644 --- a/indra/llui/lltextbase.cpp +++ b/indra/llui/lltextbase.cpp @@ -2024,8 +2024,17 @@ S32 LLTextBase::getDocIndexFromLocalCoord( S32 local_x, S32 local_y, BOOL round, } else if (hit_past_end_of_line && segmentp->getEnd() >= line_iter->mDocIndexEnd) { - // segment wraps to next line, so just set doc pos to the end of the line - pos = llclamp(line_iter->mDocIndexEnd - 1, 0, getLength()); + if (getLineNumFromDocIndex(line_iter->mDocIndexEnd - 1) == line_iter->mLineNum) + { + // if segment wraps to the next line we should step one char back + // to compensate for the space char between words + // which is removed due to wrapping + pos = llclamp(line_iter->mDocIndexEnd - 1, 0, getLength()); + } + else + { + pos = llclamp(line_iter->mDocIndexEnd, 0, getLength()); + } break; } start_x += text_width; diff --git a/indra/llui/llui.cpp b/indra/llui/llui.cpp index 8020ca802bd2df162653bc2acd89318fd088c58a..28d7e0a5ba6cc93486895b31778f3b6447bdf196 100644 --- a/indra/llui/llui.cpp +++ b/indra/llui/llui.cpp @@ -95,7 +95,6 @@ static LLDefaultChildRegistry::Register<LLSearchEditor> register_search_editor(" // register other widgets which otherwise may not be linked in static LLDefaultChildRegistry::Register<LLLoadingIndicator> register_loading_indicator("loading_indicator"); - // // Functions // @@ -524,8 +523,15 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex if (solid_color) { - gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR); - gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA); + if (LLGLSLShader::sNoFixedFunction) + { + gSolidColorProgram.bind(); + } + else + { + gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_PREV_COLOR); + gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_ALPHA, LLTexUnit::TBS_VERT_ALPHA); + } } gGL.getTexUnit(0)->bind(image); @@ -699,7 +705,14 @@ void gl_draw_scaled_image_with_border(S32 x, S32 y, S32 width, S32 height, LLTex if (solid_color) { - gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + if (LLGLSLShader::sNoFixedFunction) + { + gUIProgram.bind(); + } + else + { + gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + } } } diff --git a/indra/llui/llui.h b/indra/llui/llui.h index c583d58d5a5076645fc797bf4bc556eb36879deb..a04b232a28190dd7569582eb2462a3cdc8cf9e5b 100644 --- a/indra/llui/llui.h +++ b/indra/llui/llui.h @@ -33,6 +33,7 @@ #include "llrect.h" #include "llcontrol.h" #include "llcoord.h" +#include "llglslshader.h" #include "llinitparam.h" #include "llregistry.h" #include "lluicolor.h" @@ -47,6 +48,7 @@ // for initparam specialization #include "llfontgl.h" + class LLColor4; class LLVector3; class LLVector2; @@ -484,4 +486,7 @@ namespace LLInitParam }; } +extern LLGLSLShader gSolidColorProgram; +extern LLGLSLShader gUIProgram; + #endif diff --git a/indra/llvfs/lldiriterator.cpp b/indra/llvfs/lldiriterator.cpp index 25550321f0218f93a931e5d2448c4ceb057a9481..ff92cbb7fde4fa011fc678d53b92126168d03881 100644 --- a/indra/llvfs/lldiriterator.cpp +++ b/indra/llvfs/lldiriterator.cpp @@ -52,8 +52,20 @@ LLDirIterator::Impl::Impl(const std::string &dirname, const std::string &mask) { fs::path dir_path(dirname); - // Check if path exists. - if (!fs::exists(dir_path)) + bool is_dir = false; + + // Check if path is a directory. + try + { + is_dir = fs::is_directory(dir_path); + } + catch (fs::basic_filesystem_error<fs::path>& e) + { + llwarns << e.what() << llendl; + return; + } + + if (!is_dir) { llwarns << "Invalid path: \"" << dir_path.string() << "\"" << llendl; return; @@ -66,7 +78,7 @@ LLDirIterator::Impl::Impl(const std::string &dirname, const std::string &mask) } catch (fs::basic_filesystem_error<fs::path>& e) { - llerrs << e.what() << llendl; + llwarns << e.what() << llendl; return; } @@ -82,7 +94,7 @@ LLDirIterator::Impl::Impl(const std::string &dirname, const std::string &mask) } catch (boost::regex_error& e) { - llerrs << "\"" << exp << "\" is not a valid regular expression: " + llwarns << "\"" << exp << "\" is not a valid regular expression: " << e.what() << llendl; return; } diff --git a/indra/newview/app_settings/logcontrol.xml b/indra/newview/app_settings/logcontrol.xml index 9f4e89691f1ba3dc5628c63dcbce4a028983d77c..ae72dee9002f13939ae85e7e919eb40a7749c614 100644 --- a/indra/newview/app_settings/logcontrol.xml +++ b/indra/newview/app_settings/logcontrol.xml @@ -44,7 +44,6 @@ <array> <!-- sample entry for debugging a specific item --> <!-- <string>Voice</string> --> - <string>Capabilities</string> </array> </map> </array> diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml index 27c3e42a37d1b8b2b344db03d8c4e07707c2fff2..34890b23eb91806fd47c3e26435eaffd5282a59a 100644 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -3848,7 +3848,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>https://www.xstreetsl.com/modules.php?name=Marketplace&CategoryID=233</string> + <string>https://marketplace.secondlife.com/products/search?search[category_id]=200&search[maturity][]=General&search[page]=1&search[per_page]=12</string> </map> <key>GridCrossSections</key> <map> @@ -4872,7 +4872,7 @@ <key>Type</key> <string>String</string> <key>Value</key> - <string>http://viewer-login.agni.lindenlab.com/</string> + <string/> </map> <key>LosslessJ2CUpload</key> <map> @@ -12578,7 +12578,7 @@ <key>WatchdogEnabled</key> <map> <key>Comment</key> - <string>Controls whether the thread watchdog timer is activated.</string> + <string>Controls whether the thread watchdog timer is activated. Value is boolean. Set to -1 to defer to built-in default.</string> <key>Persist</key> <integer>0</integer> <key>Type</key> diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl index 60082f40d691feee85946a50b180123a28c6b45a..d327216a0cbd16e54c9c20e4da40ac5b25a8248a 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightF.glsl @@ -270,72 +270,41 @@ void main() vec4 diffuse = texture2DRect(diffuseRect, tc); vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); - calcAtmospherics(pos.xyz, 1.0); + vec3 col; + float bloom = 0.0; + if (diffuse.a < 0.9) + { + calcAtmospherics(pos.xyz, 1.0); + + col = atmosAmbient(vec3(0)); + col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a)); - vec3 col = atmosAmbient(vec3(0)); - col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a)); + col *= diffuse.rgb; - col *= diffuse.rgb; + if (spec.a > 0.0) // specular reflection + { + // the old infinite-sky shiny reflection + // + vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); + float sa = dot(refnormpersp, vary_light.xyz); + vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a; + + // add the two types of shiny together + vec3 spec_contrib = dumbshiny * spec.rgb; + bloom = dot(spec_contrib, spec_contrib); + col += spec_contrib; + } - if (spec.a > 0.0) // specular reflection + col = atmosLighting(col); + col = scaleSoftClip(col); + + col = mix(col.rgb, diffuse.rgb, diffuse.a); + } + else { - // the old infinite-sky shiny reflection - // - vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); - float sa = dot(refnormpersp, vary_light.xyz); - vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a; - - /* - // screen-space cheap fakey reflection map - // - vec3 refnorm = normalize(reflect(vec3(0,0,-1), norm.xyz)); - depth -= 0.5; // unbias depth - // first figure out where we'll make our 2D guess from - vec2 ref2d = (0.25 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth; - // Offset the guess source a little according to a trivial - // checkerboard dither function and spec.a. - // This is meant to be similar to sampling a blurred version - // of the diffuse map. LOD would be better in that regard. - // The goal of the blur is to soften reflections in surfaces - // with low shinyness, and also to disguise our lameness. - float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0 - float checkoffset = (3.0 + (7.0*(1.0-spec.a)))*(checkerboard-0.5); - ref2d += vec2(checkoffset, checkoffset); - ref2d += tc.xy; // use as offset from destination - // Get attributes from the 2D guess point. - // We average two samples of diffuse (not of anything else) per - // pixel to try to reduce aliasing some more. - vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb + - texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb); - float refdepth = texture2DRect(depthMap, ref2d).a; - vec3 refpos = getPosition_d(ref2d, refdepth).xyz; - vec3 refn = texture2DRect(normalMap, ref2d).rgb; - refn = normalize(vec3((refn.xy-0.5)*2.0,refn.z)); // unpack norm - // figure out how appropriate our guess actually was - float refapprop = max(0.0, dot(-refnorm, normalize(pos - refpos))); - // darken reflections from points which face away from the reflected ray - our guess was a back-face - //refapprop *= step(dot(refnorm, refn), 0.0); - refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant - // get appropriate light strength for guess-point. - // reflect light direction to increase the illusion that - // these are reflections. - vec3 reflight = reflect(lightnorm.xyz, norm.xyz); - float reflit = max(dot(refn, reflight.xyz), 0.0); - // apply sun color to guess-point, dampen according to inappropriateness of guess - float refmod = min(refapprop, reflit); - vec3 refprod = vary_SunlitColor * refcol.rgb * refmod; - vec3 ssshiny = (refprod * spec.a); - ssshiny *= 0.3; // dampen it even more - */ - vec3 ssshiny = vec3(0,0,0); - - // add the two types of shiny together - col += (ssshiny + dumbshiny) * spec.rgb; + col = diffuse.rgb; } - - col = atmosLighting(col); - col = scaleSoftClip(col); - + gl_FragColor.rgb = col; - gl_FragColor.a = 0.0; + gl_FragColor.a = bloom; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl index 9dfacfb520cd8638b252a2845d3560f5806a4a7e..2cce43e2bfb322c3b7412cacf03149ef24481047 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/softenLightMSF.glsl @@ -266,7 +266,7 @@ void main() vec2 tc = vary_fragcoord.xy; ivec2 itc = ivec2(tc); - vec3 fcol = vec3(0,0,0); + vec4 fcol = vec4(0,0,0,0); for (int i = 0; i < samples; ++i) { @@ -280,17 +280,16 @@ void main() float da = max(dot(norm.xyz, vary_light.xyz), 0.0); vec4 diffuse = texelFetch(diffuseRect, itc, i); - if (diffuse.a >= 1.0) - { - fcol += diffuse.rgb; - } - else + vec3 col; + float bloom = 0.0; + + if (diffuse.a < 0.9) { vec4 spec = texelFetch(specularRect, itc, i); calcAtmospherics(pos.xyz, 1.0); - vec3 col = atmosAmbient(vec3(0)); + col = atmosAmbient(vec3(0)); col += atmosAffectDirectionalLight(max(min(da, 1.0), diffuse.a)); col *= diffuse.rgb; @@ -304,15 +303,22 @@ void main() vec3 dumbshiny = vary_SunlitColor*texture2D(lightFunc, vec2(sa, spec.a)).a; // add the two types of shiny together - col += dumbshiny * spec.rgb; + vec3 spec_contrib = dumbshiny * spec.rgb; + bloom = dot(spec_contrib, spec_contrib); + col += spec_contrib; } col = atmosLighting(col); col = scaleSoftClip(col); - fcol += col; + col = mix(col, diffuse.rgb, diffuse.a); } + else + { + col = diffuse.rgb; + } + + fcol += vec4(col, bloom); } - gl_FragColor.rgb = fcol.rgb/samples; - gl_FragColor.a = 0.0; + gl_FragColor = fcol/samples; } diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl new file mode 100644 index 0000000000000000000000000000000000000000..3827c72f4cdd5df65393f15aedaa834482d95032 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/customalphaF.glsl @@ -0,0 +1,17 @@ +/** + * @file customalphaF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +uniform sampler2D diffuseMap; + +uniform float custom_alpha; + +void main() +{ + vec4 color = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy); + color.a *= custom_alpha; + gl_FragColor = color; +} diff --git a/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl new file mode 100644 index 0000000000000000000000000000000000000000..04bfff22c1298a7dd592e5d9ded26f7b2d24fde8 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/customalphaV.glsl @@ -0,0 +1,16 @@ +/** + * @file customalphaV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + + + +void main() +{ + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_FrontColor = gl_Color; +} + diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl new file mode 100644 index 0000000000000000000000000000000000000000..a60fb1eaa7d54edbf4bbb4c3a7af51393f6f6c5e --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl @@ -0,0 +1,17 @@ +/** + * @file glowcombineF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +#extension GL_ARB_texture_rectangle : enable + +uniform sampler2D glowMap; +uniform sampler2DRect screenMap; + +void main() +{ + gl_FragColor = texture2D(glowMap, gl_TexCoord[0].xy) + + texture2DRect(screenMap, gl_TexCoord[1].xy); +} diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl new file mode 100644 index 0000000000000000000000000000000000000000..ce183ec15421c999aa0913b6f8cdebc143ea574b --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineV.glsl @@ -0,0 +1,15 @@ +/** + * @file glowcombineV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + + +void main() +{ + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_TexCoord[1] = gl_MultiTexCoord1; +} + diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl new file mode 100644 index 0000000000000000000000000000000000000000..b140712f181ff1d0b0a6666f65d85aa37a5694c1 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/occlusionF.glsl @@ -0,0 +1,11 @@ +/** + * @file occlusionF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +void main() +{ + gl_FragColor = vec4(1,1,1,1); +} diff --git a/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl new file mode 100644 index 0000000000000000000000000000000000000000..5a5d0ec506bd1b9f231b659f2fe43cc34d2b79aa --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/occlusionV.glsl @@ -0,0 +1,12 @@ +/** + * @file uiV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +void main() +{ + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; +} + diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl new file mode 100644 index 0000000000000000000000000000000000000000..5b7cc5757498f2a745fbf4a210fce97b68996007 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorF.glsl @@ -0,0 +1,15 @@ +/** + * @file twotextureaddF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +uniform sampler2D tex0; + +void main() +{ + float alpha = texture2D(tex0, gl_TexCoord[0].xy).a * gl_Color.a; + + gl_FragColor = vec4(gl_Color.rgb, alpha); +} diff --git a/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl new file mode 100644 index 0000000000000000000000000000000000000000..8401208e28244ddb060a756c73605cb582551b23 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/solidcolorV.glsl @@ -0,0 +1,16 @@ +/** + * @file solidcolorV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + + + +void main() +{ + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_FrontColor = gl_Color; + gl_TexCoord[0] = gl_MultiTexCoord0; +} + diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl new file mode 100644 index 0000000000000000000000000000000000000000..d81b56fdb9856ef52419bd67042d09fb9491d970 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddF.glsl @@ -0,0 +1,14 @@ +/** + * @file twotextureaddF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +uniform sampler2D tex0; +uniform sampler2D tex1; + +void main() +{ + gl_FragColor = texture2D(tex0, gl_TexCoord[0].xy)+texture2D(tex1, gl_TexCoord[1].xy); +} diff --git a/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl new file mode 100644 index 0000000000000000000000000000000000000000..f685b112b4517394932db079809b66678e170f20 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/twotextureaddV.glsl @@ -0,0 +1,16 @@ +/** + * @file twotextureaddV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + + + +void main() +{ + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_TexCoord[1] = gl_MultiTexCoord1; +} + diff --git a/indra/newview/app_settings/shaders/class1/interface/uiF.glsl b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl new file mode 100644 index 0000000000000000000000000000000000000000..9dec7a56ba78141f456fc12da420494dffac85e8 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/uiF.glsl @@ -0,0 +1,13 @@ +/** + * @file uiF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +uniform sampler2D diffuseMap; + +void main() +{ + gl_FragColor = gl_Color*texture2D(diffuseMap, gl_TexCoord[0].xy); +} diff --git a/indra/newview/app_settings/shaders/class1/interface/uiV.glsl b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl new file mode 100644 index 0000000000000000000000000000000000000000..9ca6cae5c5f78586532b46afc9069c67c7b83423 --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/interface/uiV.glsl @@ -0,0 +1,16 @@ +/** + * @file uiV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + + + +void main() +{ + gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex; + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_FrontColor = gl_Color; +} + diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl new file mode 100644 index 0000000000000000000000000000000000000000..587ab93a80e20a25532451268df65485d4b8179c --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/objects/bumpF.glsl @@ -0,0 +1,17 @@ +/** + * @file bumpF.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + +uniform sampler2D texture0; +uniform sampler2D texture1; + +void main() +{ + float tex0 = texture2D(texture0, gl_TexCoord[0].xy).a; + float tex1 = texture2D(texture1, gl_TexCoord[1].xy).a; + + gl_FragColor = vec4(tex0+(1.0-tex1)-0.5); +} diff --git a/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl new file mode 100644 index 0000000000000000000000000000000000000000..056d1a9582e3694c343ec6e9cc0d7fb80a645b9e --- /dev/null +++ b/indra/newview/app_settings/shaders/class1/objects/bumpV.glsl @@ -0,0 +1,16 @@ +/** + * @file bumpV.glsl + * + * $LicenseInfo:firstyear=2007&license=viewerlgpl$ + * $/LicenseInfo$ + */ + + +void main() +{ + //transform vertex + gl_Position = gl_ModelViewProjectionMatrix*gl_Vertex; + gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0; + gl_TexCoord[1] = gl_TextureMatrix[1] * gl_MultiTexCoord1; + gl_FrontColor = gl_Color; +} diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl index f44a5ce32e5ab4760f27269a464b65a7ee5f9121..5283e80407ff188ba4c692c81c0c0c505eacfbb2 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightShinySkinnedV.glsl @@ -10,8 +10,6 @@ void calcAtmospherics(vec3 inPositionEye); mat4 getObjectSkinnedTransform(); -attribute vec4 object_weight; - void main() { mat4 mat = getObjectSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl index e5dafa8c789e07ee9069ba1ae34ec30718888004..1db79791de38741a6b2d9e85f957de858f634f91 100644 --- a/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/fullbrightSkinnedV.glsl @@ -10,8 +10,6 @@ void calcAtmospherics(vec3 inPositionEye); mat4 getObjectSkinnedTransform(); -attribute vec4 object_weight; - void main() { //transform vertex diff --git a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl index cd655f3bb51cde3cf018f6cfa20cef2f5efa5416..eea41bb4f0d2c70543dc2a7c32d6c964ecb4ec4e 100644 --- a/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/shinySimpleSkinnedV.glsl @@ -11,8 +11,6 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); mat4 getObjectSkinnedTransform(); -attribute vec4 object_weight; - void main() { mat4 mat = getObjectSkinnedTransform(); diff --git a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl index 900448035c44a78a29fde95f33dff7b05852efe8..af92e5e00268a7b8242410914f3601de747adebb 100644 --- a/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl +++ b/indra/newview/app_settings/shaders/class1/objects/simpleSkinnedV.glsl @@ -11,8 +11,6 @@ vec4 calcLighting(vec3 pos, vec3 norm, vec4 color, vec4 baseCol); void calcAtmospherics(vec3 inPositionEye); mat4 getObjectSkinnedTransform(); -attribute vec4 object_weight; - void main() { //transform vertex diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl index 66a1a8515f257bf4fc7fa610edb12afe455d20cb..f0c9b01671fc2dcfbae8b2bc11ffcf7471cab439 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightF.glsl @@ -267,34 +267,49 @@ void main() float da = max(dot(norm.xyz, vary_light.xyz), 0.0); vec4 diffuse = texture2DRect(diffuseRect, tc); - vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); - - vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; - float scol = max(scol_ambocc.r, diffuse.a); - float ambocc = scol_ambocc.g; + + vec3 col; + float bloom = 0.0; + + if (diffuse.a < 0.9) + { + vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); + + vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; + float scol = max(scol_ambocc.r, diffuse.a); + float ambocc = scol_ambocc.g; - calcAtmospherics(pos.xyz, ambocc); + calcAtmospherics(pos.xyz, ambocc); - vec3 col = atmosAmbient(vec3(0)); - col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); + col = atmosAmbient(vec3(0)); + col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); - col *= diffuse.rgb; + col *= diffuse.rgb; - if (spec.a > 0.0) // specular reflection + if (spec.a > 0.0) // specular reflection + { + // the old infinite-sky shiny reflection + // + vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); + float sa = dot(refnormpersp, vary_light.xyz); + vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a; + + // add the two types of shiny together + vec3 spec_contrib = dumbshiny * spec.rgb; + bloom = dot(spec_contrib, spec_contrib); + col += spec_contrib; + } + + col = atmosLighting(col); + col = scaleSoftClip(col); + + col = mix(col, diffuse.rgb, diffuse.a); + } + else { - // the old infinite-sky shiny reflection - // - vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); - float sa = dot(refnormpersp, vary_light.xyz); - vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a; - - // add the two types of shiny together - col += dumbshiny * spec.rgb; + col = diffuse.rgb; } - - col = atmosLighting(col); - col = scaleSoftClip(col); gl_FragColor.rgb = col; - gl_FragColor.a = 0.0; + gl_FragColor.a = bloom; } diff --git a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl index 0bae10ca7d218a844f7fd4562548a6cb9881fb0d..3b572320c3298fee827b083bd40dbdb19e77bef7 100644 --- a/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl +++ b/indra/newview/app_settings/shaders/class2/deferred/softenLightMSF.glsl @@ -255,7 +255,7 @@ void main() vec2 tc = vary_fragcoord.xy; ivec2 itc = ivec2(tc); - vec3 fcol = vec3(0,0,0); + vec4 fcol = vec4(0,0,0,0); vec2 scol_ambocc = texture2DRect(lightMap, tc).rg; float ambocc = scol_ambocc.g; @@ -270,38 +270,50 @@ void main() float da = max(dot(norm.xyz, vary_light.xyz), 0.0); vec4 diffuse = texelFetch(diffuseRect, itc, i); - vec4 spec = texelFetch(specularRect, itc, i); + vec3 col; + float bloom = 0.0; + if (diffuse.a < 0.9) + { + vec4 spec = texelFetch(specularRect, itc, i); - float amb = 0; + float amb = 0; - float scol = max(scol_ambocc.r, diffuse.a); - amb += ambocc; + float scol = max(scol_ambocc.r, diffuse.a); + amb += ambocc; - calcAtmospherics(pos.xyz, ambocc); + calcAtmospherics(pos.xyz, ambocc); + + col = atmosAmbient(vec3(0)); + col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); - vec3 col = atmosAmbient(vec3(0)); - col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); + col *= diffuse.rgb; - col *= diffuse.rgb; + if (spec.a > 0.0) // specular reflection + { + // the old infinite-sky shiny reflection + // + vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); + float sa = dot(refnormpersp, vary_light.xyz); + vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a; + + // add the two types of shiny together + vec3 spec_contrib = dumbshiny * spec.rgb; + bloom = dot(spec_contrib, spec_contrib); + col += spec_contrib; + } - if (spec.a > 0.0) // specular reflection + col = atmosLighting(col); + col = scaleSoftClip(col); + + col = mix(col, diffuse.rgb, diffuse.a); + } + else { - // the old infinite-sky shiny reflection - // - vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); - float sa = dot(refnormpersp, vary_light.xyz); - vec3 dumbshiny = vary_SunlitColor*scol_ambocc.r*texture2D(lightFunc, vec2(sa, spec.a)).a; - - // add the two types of shiny together - col += dumbshiny * spec.rgb; + col = diffuse.rgb; } - - col = atmosLighting(col); - col = scaleSoftClip(col); - fcol += col; + fcol += vec4(col, bloom); } - gl_FragColor.rgb = fcol/samples; - gl_FragColor.a = 0.0; + gl_FragColor = fcol/samples; } diff --git a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl index d38d33cc2193cd64280e863bdd958d8beb595954..1ae10a5faaea8f78a964e073161ead5dd9a28e27 100644 --- a/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl +++ b/indra/newview/app_settings/shaders/class3/deferred/softenLightF.glsl @@ -268,91 +268,50 @@ void main() float da = max(dot(norm.xyz, vary_light.xyz), 0.0); vec4 diffuse = texture2DRect(diffuseRect, tc); - vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); + vec3 col; + float bloom = 0.0; + + if (diffuse.a < 0.9) + { + vec4 spec = texture2DRect(specularRect, vary_fragcoord.xy); - da = texture2D(lightFunc, vec2(da, 0.0)).a; + da = texture2D(lightFunc, vec2(da, 0.0)).a; - vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; - float scol = max(scol_ambocc.r, diffuse.a); - float ambocc = scol_ambocc.g; + vec2 scol_ambocc = texture2DRect(lightMap, vary_fragcoord.xy).rg; + float scol = max(scol_ambocc.r, diffuse.a); + float ambocc = scol_ambocc.g; - calcAtmospherics(pos.xyz, ambocc); + calcAtmospherics(pos.xyz, ambocc); - vec3 col = atmosAmbient(vec3(0)); - col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); + col = atmosAmbient(vec3(0)); + col += atmosAffectDirectionalLight(max(min(da, scol), diffuse.a)); - col *= diffuse.rgb; + col *= diffuse.rgb; - if (spec.a > 0.0) // specular reflection + if (spec.a > 0.0) // specular reflection + { + // the old infinite-sky shiny reflection + // + vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); + float sa = dot(refnormpersp, vary_light.xyz); + vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a; + + // add the two types of shiny together + vec3 spec_contrib = dumbshiny * spec.rgb; + bloom = dot(spec_contrib, spec_contrib); + col += spec_contrib; + } + + col = atmosLighting(col); + col = scaleSoftClip(col); + + col = mix(col, diffuse.rgb, diffuse.a); + } + else { - // the old infinite-sky shiny reflection - // - vec3 refnormpersp = normalize(reflect(pos.xyz, norm.xyz)); - float sa = dot(refnormpersp, vary_light.xyz); - vec3 dumbshiny = vary_SunlitColor*scol*texture2D(lightFunc, vec2(sa, spec.a)).a; - - /* - // screen-space cheap fakey reflection map - // - vec3 refnorm = normalize(reflect(vec3(0,0,-1), norm.xyz)); - depth -= 0.5; // unbias depth - // first figure out where we'll make our 2D guess from - vec2 ref2d = (0.25 * screen_res.y) * (refnorm.xy) * abs(refnorm.z) / depth; - // Offset the guess source a little according to a trivial - // checkerboard dither function and spec.a. - // This is meant to be similar to sampling a blurred version - // of the diffuse map. LOD would be better in that regard. - // The goal of the blur is to soften reflections in surfaces - // with low shinyness, and also to disguise our lameness. - float checkerboard = floor(mod(tc.x+tc.y, 2.0)); // 0.0, 1.0 - float checkoffset = (3.0 + (7.0*(1.0-spec.a)))*(checkerboard-0.5); - - ref2d += vec2(checkoffset, checkoffset); - ref2d += tc.xy; // use as offset from destination - // Get attributes from the 2D guess point. - // We average two samples of diffuse (not of anything else) per - // pixel to try to reduce aliasing some more. - vec3 refcol = 0.5 * (texture2DRect(diffuseRect, ref2d + vec2(0.0, -checkoffset)).rgb + - texture2DRect(diffuseRect, ref2d + vec2(-checkoffset, 0.0)).rgb); - float refdepth = texture2DRect(depthMap, ref2d).a; - vec3 refpos = getPosition_d(ref2d, refdepth).xyz; - float refshad = texture2DRect(lightMap, ref2d).r; - vec3 refn = texture2DRect(normalMap, ref2d).rgb; - refn = vec3((refn.xy-0.5)*2.0,refn.z); // unpack norm - refn = normalize(refn); - // figure out how appropriate our guess actually was - float refapprop = max(0.0, dot(-refnorm, normalize(pos - refpos))); - // darken reflections from points which face away from the reflected ray - our guess was a back-face - //refapprop *= step(dot(refnorm, refn), 0.0); - refapprop = min(refapprop, max(0.0, -dot(refnorm, refn))); // more conservative variant - // get appropriate light strength for guess-point. - // reflect light direction to increase the illusion that - // these are reflections. - vec3 reflight = reflect(lightnorm.xyz, norm.xyz); - float reflit = min(max(dot(refn, reflight.xyz), 0.0), refshad); - // apply sun color to guess-point, dampen according to inappropriateness of guess - float refmod = min(refapprop, reflit); - vec3 refprod = vary_SunlitColor * refcol.rgb * refmod; - vec3 ssshiny = (refprod * spec.a); - ssshiny *= 0.3; // dampen it even more - */ - vec3 ssshiny = vec3(0,0,0); - - // add the two types of shiny together - col += (ssshiny + dumbshiny) * spec.rgb; + col = diffuse.rgb; } - - col = atmosLighting(col); - col = scaleSoftClip(col); gl_FragColor.rgb = col; - - //gl_FragColor.rgb = gi_col.rgb; - gl_FragColor.a = 0.0; - - //gl_FragColor.rg = scol_ambocc.rg; - //gl_FragColor.rgb = texture2DRect(lightMap, vary_fragcoord.xy).rgb; - //gl_FragColor.rgb = norm.rgb*0.5+0.5; - //gl_FragColor.rgb = vec3(ambocc); - //gl_FragColor.rgb = vec3(scol); + gl_FragColor.a = bloom; } diff --git a/indra/newview/featuretable.txt b/indra/newview/featuretable.txt index 22c79a4cbd2c18ed3b74842c5539f91a9a27ac7a..1f9dc6e4e5113bb0bd57a0fd1364c707bfc3d382 100644 --- a/indra/newview/featuretable.txt +++ b/indra/newview/featuretable.txt @@ -1,6 +1,6 @@ -version 30 +version 32 -// NOTE: This is mostly identical to featuretable_mac.txt with a few differences +// NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table // @@ -244,10 +244,10 @@ RenderDeferredSSAO 0 0 RenderShadowDetail 0 0 // -// No GL_ARB_map_buffer_range +// GL_ARB_map_buffer_range exists // -list NoMapBufferRange -RenderVBOMappingDisable 1 0 +list MapBufferRange +RenderVBOMappingDisable 1 1 // diff --git a/indra/newview/featuretable_linux.txt b/indra/newview/featuretable_linux.txt index 649f5ebd186838cdf8c1d43a4c2b45e123a5a2ca..6e962f3c567e2063b1dc4e4710d27dd2a0edcae9 100644 --- a/indra/newview/featuretable_linux.txt +++ b/indra/newview/featuretable_linux.txt @@ -1,4 +1,4 @@ -version 25 +version 27 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -242,10 +242,10 @@ RenderDeferredSSAO 0 0 RenderShadowDetail 0 0 // -// No GL_ARB_map_buffer_range +// GL_ARB_map_buffer_range exists // -list NoMapBufferRange -RenderVBOMappingDisable 1 0 +list MapBufferRange +RenderVBOMappingDisable 1 1 diff --git a/indra/newview/featuretable_xp.txt b/indra/newview/featuretable_xp.txt index ba74f9a6c24b9ec6f5b72faf254f64137557906b..a0245f5369070dd5ed6fee3f49f594584a6065b6 100644 --- a/indra/newview/featuretable_xp.txt +++ b/indra/newview/featuretable_xp.txt @@ -1,4 +1,4 @@ -version 30 +version 31 // NOTE: This is mostly identical to featuretable_mac.txt with a few differences // Should be combined into one table @@ -244,10 +244,10 @@ RenderDeferredSSAO 0 0 RenderShadowDetail 0 0 // -// No GL_ARB_map_buffer_range +// GL_ARB_map_buffer_range exists // -list NoMapBufferRange -RenderVBOMappingDisable 1 0 +list MapBufferRange +RenderVBOMappingDisable 1 1 // diff --git a/indra/newview/llagent.cpp b/indra/newview/llagent.cpp index 492cfe7c1ba8cde93ca0be2c85d29a8a76030e4b..642a1907f0078f10a7ae7f3eb317a90e1b792150 100755 --- a/indra/newview/llagent.cpp +++ b/indra/newview/llagent.cpp @@ -3356,8 +3356,8 @@ bool LLAgent::teleportCore(bool is_local) // hide the Region/Estate floater LLFloaterReg::hideInstance("region_info"); - // hide the search floater (EXT-8276) - LLFloaterReg::hideInstance("search"); + // minimize the Search floater (STORM-1474) + LLFloaterReg::getInstance("search")->setMinimized(TRUE); LLViewerParcelMgr::getInstance()->deselectLand(); LLViewerMediaFocus::getInstance()->clearFocus(); diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 862fc49c0e6c2f78df34ab69b285f2da6b0ee297..b65933f8a1d1866c3f953bf038031453df713d45 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -4003,6 +4003,8 @@ class LLFrameStatsTimer : public LLFrameTimer static LLFastTimer::DeclareTimer FTM_AUDIO_UPDATE("Update Audio"); static LLFastTimer::DeclareTimer FTM_CLEANUP("Cleanup"); +static LLFastTimer::DeclareTimer FTM_CLEANUP_DRAWABLES("Drawables"); +static LLFastTimer::DeclareTimer FTM_CLEANUP_OBJECTS("Objects"); static LLFastTimer::DeclareTimer FTM_IDLE_CB("Idle Callbacks"); static LLFastTimer::DeclareTimer FTM_LOD_UPDATE("Update LOD"); static LLFastTimer::DeclareTimer FTM_OBJECTLIST_UPDATE("Update Objectlist"); @@ -4279,8 +4281,14 @@ void LLAppViewer::idle() { LLFastTimer t(FTM_CLEANUP); - gObjectList.cleanDeadObjects(); - LLDrawable::cleanupDeadDrawables(); + { + LLFastTimer t(FTM_CLEANUP_OBJECTS); + gObjectList.cleanDeadObjects(); + } + { + LLFastTimer t(FTM_CLEANUP_DRAWABLES); + LLDrawable::cleanupDeadDrawables(); + } } // diff --git a/indra/newview/lldateutil.cpp b/indra/newview/lldateutil.cpp index 18ae6107e7d74e8aa1d6106c03291499b9e122e4..c7fc45f61ee68347beffcb6cf3397d73ec3d419f 100644 --- a/indra/newview/lldateutil.cpp +++ b/indra/newview/lldateutil.cpp @@ -27,10 +27,16 @@ #include "lldateutil.h" +#include <boost/date_time/gregorian/gregorian.hpp> +#include <boost/date_time/posix_time/ptime.hpp> + // Linden libraries #include "lltrans.h" #include "llui.h" +using namespace boost::gregorian; +using namespace boost::posix_time; + static S32 DAYS_PER_MONTH_NOLEAP[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; static S32 DAYS_PER_MONTH_LEAP[] = @@ -186,3 +192,24 @@ std::string LLDateUtil::ageFromDate(const std::string& date_string) //{ // return ageFromDateISO(date_string, LLDate::now()); //} + +S32 LLDateUtil::secondsSinceEpochFromString(const std::string& format, const std::string& str) +{ + date_input_facet *facet = new date_input_facet(format); + + std::stringstream ss; + ss << str; + ss.imbue(std::locale(ss.getloc(), facet)); + + date d; + ss >> d; + + ptime time_t_date(d); + ptime time_t_epoch(date(1970,1,1)); + + // We assume that the date defined by str is in UTC, so the difference + // is calculated with no time zone corrections. + time_duration diff = time_t_date - time_t_epoch; + + return diff.total_seconds(); +} diff --git a/indra/newview/lldateutil.h b/indra/newview/lldateutil.h index 2843a357c9a245efabc786c4003caedc6e344da0..f027d360f7aadd1cc149f095e4d196f9d453679e 100644 --- a/indra/newview/lldateutil.h +++ b/indra/newview/lldateutil.h @@ -69,6 +69,20 @@ namespace LLDateUtil //std::string ageFromDateISO(const std::string& date_string); //std::string ageFromDate(S32 born_year, S32 born_month, S32 born_day, const LLDate& now); + + /** + * Convert a string of a specified date format into seconds since the Epoch. + * + * Many of the format flags are those used by strftime(...), but not all. + * For the full list of supported time format specifiers + * see http://www.boost.org/doc/libs/1_47_0/doc/html/date_time/date_time_io.html#date_time.format_flags + * + * @param format Format characters string. Example: "%A %b %d, %Y" + * @param str Date string containing the time in specified format. + * + * @return Number of seconds since 01/01/1970 UTC. + */ + S32 secondsSinceEpochFromString(const std::string& format, const std::string& str); } #endif diff --git a/indra/newview/lldrawpool.cpp b/indra/newview/lldrawpool.cpp index fa7d6e2a40fd237ab548af78265f8f61b80027ff..286284f828e13af883bce36d6ce5dba52da5fd27 100644 --- a/indra/newview/lldrawpool.cpp +++ b/indra/newview/lldrawpool.cpp @@ -190,15 +190,16 @@ void LLDrawPool::renderPostDeferred(S32 pass) //virtual void LLDrawPool::endRenderPass( S32 pass ) { - for (U32 i = 0; i < gGLManager.mNumTextureImageUnits; i++) + /*for (U32 i = 0; i < gGLManager.mNumTextureImageUnits; i++) { //dummy cleanup of any currently bound textures if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) { gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType()); gGL.getTexUnit(i)->disable(); } - } + }*/ + //make sure channel 0 is active channel gGL.getTexUnit(0)->activate(); } diff --git a/indra/newview/lldrawpoolalpha.cpp b/indra/newview/lldrawpoolalpha.cpp index ad7e3ad59352c33b4cb4db805e24ddad83aca306..ddcf42e5233e19e9e4ae872e36d6dfa12dd1350d 100644 --- a/indra/newview/lldrawpoolalpha.cpp +++ b/indra/newview/lldrawpoolalpha.cpp @@ -138,6 +138,7 @@ void LLDrawPoolAlpha::beginPostDeferredPass(S32 pass) gPipeline.mDeferredDepth.bindTarget(); simple_shader = NULL; fullbright_shader = NULL; + gObjectFullbrightProgram.bind(); } deferred_render = TRUE; @@ -156,6 +157,7 @@ void LLDrawPoolAlpha::endPostDeferredPass(S32 pass) { gPipeline.mDeferredDepth.flush(); gPipeline.mScreen.bindTarget(); + gObjectFullbrightProgram.unbind(); } deferred_render = FALSE; @@ -238,7 +240,7 @@ void LLDrawPoolAlpha::render(S32 pass) fullbright_shader->bind(); } pushBatches(LLRenderPass::PASS_FULLBRIGHT_ALPHA_MASK, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); - LLGLSLShader::bindNoShader(); + //LLGLSLShader::bindNoShader(); } else { diff --git a/indra/newview/lldrawpoolbump.cpp b/indra/newview/lldrawpoolbump.cpp index 813b3820ee8948c05e566754853c8531af581281..d801f6df18a6518b1beac2f4cf6e1f20e8c50f36 100644 --- a/indra/newview/lldrawpoolbump.cpp +++ b/indra/newview/lldrawpoolbump.cpp @@ -464,11 +464,15 @@ void LLDrawPoolBump::unbindCubeMap(LLGLSLShader* shader, S32 shader_level, S32& } } } - gGL.getTexUnit(diffuse_channel)->disable(); - gGL.getTexUnit(cube_channel)->disable(); - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + if (!LLGLSLShader::sNoFixedFunction) + { + gGL.getTexUnit(diffuse_channel)->disable(); + gGL.getTexUnit(cube_channel)->disable(); + + gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + } } void LLDrawPoolBump::endShiny(bool invisible) @@ -583,19 +587,19 @@ void LLDrawPoolBump::endFullbrightShiny() cube_map->disable(); cube_map->restoreMatrix(); - if (diffuse_channel != 0) + /*if (diffuse_channel != 0) { shader->disableTexture(LLViewerShaderMgr::DIFFUSE_MAP); } gGL.getTexUnit(0)->activate(); - gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE); + gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE);*/ shader->unbind(); - gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + //gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); } - gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); - gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + //gGL.getTexUnit(0)->unbind(LLTexUnit::TT_TEXTURE); + //gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); diffuse_channel = -1; cube_channel = 0; @@ -706,36 +710,44 @@ void LLDrawPoolBump::beginBump(U32 pass) // Optional second pass: emboss bump map stop_glerror(); - // TEXTURE UNIT 0 - // Output.rgb = texture at texture coord 0 - gGL.getTexUnit(0)->activate(); + if (LLGLSLShader::sNoFixedFunction) + { + gObjectBumpProgram.bind(); + } + else + { + // TEXTURE UNIT 0 + // Output.rgb = texture at texture coord 0 + gGL.getTexUnit(0)->activate(); - gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA); - gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA); + gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA); + gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA); - // TEXTURE UNIT 1 - gGL.getTexUnit(1)->activate(); + // TEXTURE UNIT 1 + gGL.getTexUnit(1)->activate(); - gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE); + gGL.getTexUnit(1)->enable(LLTexUnit::TT_TEXTURE); + + gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD_SIGNED, LLTexUnit::TBS_PREV_COLOR, LLTexUnit::TBS_ONE_MINUS_TEX_ALPHA); + gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA); - gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD_SIGNED, LLTexUnit::TBS_PREV_COLOR, LLTexUnit::TBS_ONE_MINUS_TEX_ALPHA); - gGL.getTexUnit(1)->setTextureAlphaBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_ALPHA); + // src = tex0 + (1 - tex1) - 0.5 + // = (bump0/2 + 0.5) + (1 - (bump1/2 + 0.5)) - 0.5 + // = (1 + bump0 - bump1) / 2 - // src = tex0 + (1 - tex1) - 0.5 - // = (bump0/2 + 0.5) + (1 - (bump1/2 + 0.5)) - 0.5 - // = (1 + bump0 - bump1) / 2 + // Blend: src * dst + dst * src + // = 2 * src * dst + // = 2 * ((1 + bump0 - bump1) / 2) * dst [0 - 2 * dst] + // = (1 + bump0 - bump1) * dst.rgb + // = dst.rgb + dst.rgb * (bump0 - bump1) + + gGL.getTexUnit(0)->activate(); + gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE); + } - // Blend: src * dst + dst * src - // = 2 * src * dst - // = 2 * ((1 + bump0 - bump1) / 2) * dst [0 - 2 * dst] - // = (1 + bump0 - bump1) * dst.rgb - // = dst.rgb + dst.rgb * (bump0 - bump1) gGL.setSceneBlendType(LLRender::BT_MULT_X2); - gGL.getTexUnit(0)->activate(); stop_glerror(); - - gGL.getTexUnit(1)->unbind(LLTexUnit::TT_TEXTURE); } //static @@ -765,14 +777,21 @@ void LLDrawPoolBump::endBump(U32 pass) return; } - // Disable texture unit 1 - gGL.getTexUnit(1)->activate(); - gGL.getTexUnit(1)->disable(); - gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT); + if (LLGLSLShader::sNoFixedFunction) + { + gObjectBumpProgram.unbind(); + } + else + { + // Disable texture blending on unit 1 + gGL.getTexUnit(1)->activate(); + //gGL.getTexUnit(1)->disable(); + gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT); - // Disable texture unit 0 - gGL.getTexUnit(0)->activate(); - gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + // Disable texture blending on unit 0 + gGL.getTexUnit(0)->activate(); + gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + } gGL.setSceneBlendType(LLRender::BT_ALPHA); } @@ -1407,6 +1426,11 @@ void LLDrawPoolInvisible::render(S32 pass) { //render invisiprims LLFastTimer t(FTM_RENDER_INVISIBLE); + if (gPipeline.canUseVertexShaders()) + { + gOcclusionProgram.bind(); + } + U32 invisi_mask = LLVertexBuffer::MAP_VERTEX; glStencilMask(0); gGL.setColorMask(false, false); @@ -1414,6 +1438,11 @@ void LLDrawPoolInvisible::render(S32 pass) gGL.setColorMask(true, false); glStencilMask(0xFFFFFFFF); + if (gPipeline.canUseVertexShaders()) + { + gOcclusionProgram.unbind(); + } + if (gPipeline.hasRenderBatches(LLRenderPass::PASS_INVISI_SHINY)) { beginShiny(true); diff --git a/indra/newview/lldrawpoolsimple.cpp b/indra/newview/lldrawpoolsimple.cpp index 5dbb27cabb84e174b0dcb0b9a7f4c82daa266ec6..224f149c6bdf8d51b5903104006f664174fc7cad 100644 --- a/indra/newview/lldrawpoolsimple.cpp +++ b/indra/newview/lldrawpoolsimple.cpp @@ -49,6 +49,8 @@ void LLDrawPoolGlow::beginPostDeferredPass(S32 pass) gDeferredFullbrightProgram.bind(); } +static LLFastTimer::DeclareTimer FTM_RENDER_GLOW_PUSH("Glow Push"); + void LLDrawPoolGlow::renderPostDeferred(S32 pass) { LLFastTimer t(FTM_RENDER_GLOW); @@ -62,7 +64,11 @@ void LLDrawPoolGlow::renderPostDeferred(S32 pass) LLGLDepthTest depth(GL_TRUE, GL_FALSE); gGL.setColorMask(false, true); - pushBatches(LLRenderPass::PASS_GLOW, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); + + { + LLFastTimer t(FTM_RENDER_GLOW_PUSH); + pushBatches(LLRenderPass::PASS_GLOW, getVertexDataMask() | LLVertexBuffer::MAP_TEXTURE_INDEX, TRUE, TRUE); + } gGL.setColorMask(true, false); gGL.setSceneBlendType(LLRender::BT_ALPHA); @@ -374,10 +380,14 @@ void LLDrawPoolFullbright::endRenderPass(S32 pass) LLFastTimer t(FTM_RENDER_FULLBRIGHT); LLRenderPass::endRenderPass(pass); + stop_glerror(); + if (mVertexShaderLevel > 0) { fullbright_shader->unbind(); } + + stop_glerror(); } void LLDrawPoolFullbright::render(S32 pass) @@ -385,6 +395,8 @@ void LLDrawPoolFullbright::render(S32 pass) LLFastTimer t(FTM_RENDER_FULLBRIGHT); gGL.setSceneBlendType(LLRender::BT_ALPHA); + stop_glerror(); + if (mVertexShaderLevel > 0) { fullbright_shader->bind(); @@ -398,6 +410,8 @@ void LLDrawPoolFullbright::render(S32 pass) U32 fullbright_mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_TEXCOORD0 | LLVertexBuffer::MAP_COLOR; renderTexture(LLRenderPass::PASS_FULLBRIGHT, fullbright_mask); } + + stop_glerror(); } S32 LLDrawPoolFullbright::getNumPasses() diff --git a/indra/newview/lldrawpoolsky.cpp b/indra/newview/lldrawpoolsky.cpp index 030d6e11107369865b0699351e70bbf4d530c512..efffb2df9e705ab96682a8c6c7c8ea3f8abe4288 100644 --- a/indra/newview/lldrawpoolsky.cpp +++ b/indra/newview/lldrawpoolsky.cpp @@ -82,6 +82,10 @@ void LLDrawPoolSky::render(S32 pass) mShader = &gObjectFullbrightWaterProgram; mShader->bind(); } + else if (LLGLSLShader::sNoFixedFunction) + { //just use the UI shader (generic single texture no lighting) + gUIProgram.bind(); + } else { // don't use shaders! @@ -139,6 +143,7 @@ void LLDrawPoolSky::renderSkyCubeFace(U8 side) if (LLSkyTex::doInterpolate()) { + LLGLEnable blend(GL_BLEND); mSkyTex[side].bindTexture(FALSE); glColor4f(1, 1, 1, LLSkyTex::getInterpVal()); // lighting is disabled diff --git a/indra/newview/lldrawpooltree.cpp b/indra/newview/lldrawpooltree.cpp index 81c796b14630f19aea34b1fcdaac174baf95688b..429e06b22786d9933c9f09e1e3143d3f3830aace 100644 --- a/indra/newview/lldrawpooltree.cpp +++ b/indra/newview/lldrawpooltree.cpp @@ -73,7 +73,7 @@ void LLDrawPoolTree::beginRenderPass(S32 pass) shader = &gObjectSimpleNonIndexedProgram; } - if (gPipeline.canUseWindLightShadersOnObjects()) + if (gPipeline.canUseVertexShaders()) { shader->bind(); } diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp index bf79c2100c40e125ff64f2ad01cbba509b9fd053..a219386b530c02fc109fd4169949f1060a3fc0a9 100644 --- a/indra/newview/lldrawpoolwlsky.cpp +++ b/indra/newview/lldrawpoolwlsky.cpp @@ -62,13 +62,24 @@ LLDrawPoolWLSky::LLDrawPoolWLSky(void) : llerrs << "Error: Failed to load cloud noise image " << cloudNoiseFilename << llendl; } - cloudNoiseFile->load(cloudNoiseFilename); - - sCloudNoiseRawImage = new LLImageRaw(); + if(cloudNoiseFile->load(cloudNoiseFilename)) + { + sCloudNoiseRawImage = new LLImageRaw(); - cloudNoiseFile->decode(sCloudNoiseRawImage, 0.0f); + if(cloudNoiseFile->decode(sCloudNoiseRawImage, 0.0f)) + { + //debug use + lldebugs << "cloud noise raw image width: " << sCloudNoiseRawImage->getWidth() << " : height: " << sCloudNoiseRawImage->getHeight() << " : components: " << + (S32)sCloudNoiseRawImage->getComponents() << " : data size: " << sCloudNoiseRawImage->getDataSize() << llendl ; + llassert_always(sCloudNoiseRawImage->getData()) ; - sCloudNoiseTexture = LLViewerTextureManager::getLocalTexture(sCloudNoiseRawImage.get(), TRUE); + sCloudNoiseTexture = LLViewerTextureManager::getLocalTexture(sCloudNoiseRawImage.get(), TRUE); + } + else + { + sCloudNoiseRawImage = NULL ; + } + } LLWLParamManager::getInstance()->propagateParameters(); } @@ -189,21 +200,36 @@ void LLDrawPoolWLSky::renderStars(void) const glRotatef(gFrameTimeSeconds*0.01f, 0.f, 0.f, 1.f); // gl_FragColor.rgb = gl_Color.rgb; // gl_FragColor.a = gl_Color.a * star_alpha.a; - gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR); - gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT_X2, LLTexUnit::TBS_CONST_ALPHA, LLTexUnit::TBS_TEX_ALPHA); - glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, star_alpha.mV); + if (LLGLSLShader::sNoFixedFunction) + { + gCustomAlphaProgram.bind(); + gCustomAlphaProgram.uniform1f("custom_alpha", star_alpha.mV[3]); + } + else + { + gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_MULT, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_VERT_COLOR); + gGL.getTexUnit(0)->setTextureAlphaBlend(LLTexUnit::TBO_MULT_X2, LLTexUnit::TBS_CONST_ALPHA, LLTexUnit::TBS_TEX_ALPHA); + glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, star_alpha.mV); + } gSky.mVOWLSkyp->drawStars(); gGL.popMatrix(); - - // and disable the combiner states - gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + + if (LLGLSLShader::sNoFixedFunction) + { + gCustomAlphaProgram.unbind(); + } + else + { + // and disable the combiner states + gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + } } void LLDrawPoolWLSky::renderSkyClouds(F32 camHeightLocal) const { - if (gPipeline.canUseWindLightShaders() && gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS)) + if (gPipeline.canUseWindLightShaders() && gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_CLOUDS) && sCloudNoiseTexture.notNull()) { LLGLEnable blend(GL_BLEND); gGL.setSceneBlendType(LLRender::BT_ALPHA); @@ -242,6 +268,10 @@ void LLDrawPoolWLSky::renderHeavenlyBodies() if (gSky.mVOSkyp->getMoon().getDraw() && face->getGeomCount()) { + if (gPipeline.canUseVertexShaders()) + { + gUIProgram.bind(); + } // *NOTE: even though we already bound this texture above for the // stars register combiners, we bind again here for defensive reasons, // since LLImageGL::bind detects that it's a noop, and optimizes it out. @@ -257,6 +287,11 @@ void LLDrawPoolWLSky::renderHeavenlyBodies() LLFacePool::LLOverrideFaceColor color_override(this, color); face->renderIndexed(); + + if (gPipeline.canUseVertexShaders()) + { + gUIProgram.unbind(); + } } } @@ -375,5 +410,8 @@ void LLDrawPoolWLSky::cleanupGL() //static void LLDrawPoolWLSky::restoreGL() { - sCloudNoiseTexture = LLViewerTextureManager::getLocalTexture(sCloudNoiseRawImage.get(), TRUE); + if(sCloudNoiseRawImage.notNull()) + { + sCloudNoiseTexture = LLViewerTextureManager::getLocalTexture(sCloudNoiseRawImage.get(), TRUE); + } } diff --git a/indra/newview/llexpandabletextbox.cpp b/indra/newview/llexpandabletextbox.cpp index 5501b8c2ac24639da7e1b1a55fe84b992e9e57f8..2abfbf37ca9c3e347cfdd792b52902ac33d6c403 100644 --- a/indra/newview/llexpandabletextbox.cpp +++ b/indra/newview/llexpandabletextbox.cpp @@ -415,6 +415,15 @@ void LLExpandableTextBox::onTopLost() LLUICtrl::onTopLost(); } +void LLExpandableTextBox::updateTextShape() +{ + // I guess this should be done on every reshape(), + // but adding this code to reshape() currently triggers bug VWR-26455, + // which makes the text virtually unreadable. + llassert(!mExpanded); + updateTextBoxRect(); +} + void LLExpandableTextBox::setValue(const LLSD& value) { collapseTextBox(); diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h index f75ef954ffa6210f9f1cf6bcb8c679dd17f64e76..399e48bea2b0ac2119cc9cd4722371bec233d588 100644 --- a/indra/newview/llexpandabletextbox.h +++ b/indra/newview/llexpandabletextbox.h @@ -143,6 +143,10 @@ class LLExpandableTextBox : public LLUICtrl */ /*virtual*/ void onTopLost(); + /** + * *HACK: Update the inner textbox shape. + */ + void updateTextShape(); /** * Draws text box, collapses text box if its expanded and its parent's position changed diff --git a/indra/newview/llface.cpp b/indra/newview/llface.cpp index b6566fcbd094da1b4c887f89ac667fafd942b1ba..432e61f6d8479c593e6b3025529d155a56308a84 100644 --- a/indra/newview/llface.cpp +++ b/indra/newview/llface.cpp @@ -1051,6 +1051,13 @@ bool LLFace::canRenderAsMask() static LLFastTimer::DeclareTimer FTM_FACE_GET_GEOM("Face Geom"); +static LLFastTimer::DeclareTimer FTM_FACE_GEOM_POSITION("Position"); +static LLFastTimer::DeclareTimer FTM_FACE_GEOM_NORMAL("Normal"); +static LLFastTimer::DeclareTimer FTM_FACE_GEOM_TEXTURE("Texture"); +static LLFastTimer::DeclareTimer FTM_FACE_GEOM_COLOR("Color"); +static LLFastTimer::DeclareTimer FTM_FACE_GEOM_WEIGHTS("Weights"); +static LLFastTimer::DeclareTimer FTM_FACE_GEOM_BINORMAL("Binormal"); +static LLFastTimer::DeclareTimer FTM_FACE_GEOM_INDEX("Index"); BOOL LLFace::getGeometryVolume(const LLVolume& volume, const S32 &f, @@ -1064,6 +1071,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, S32 num_vertices = (S32)vf.mNumVertices; S32 num_indices = (S32) vf.mNumIndices; + bool map_range = gGLManager.mHasMapBufferRange || gGLManager.mHasFlushBufferRange; + if (mVertexBuffer.notNull()) { if (num_indices + (S32) mIndicesIndex > mVertexBuffer->getNumIndices()) @@ -1182,7 +1191,8 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, // INDICES if (full_rebuild) { - mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex, mIndicesCount, true); + LLFastTimer t(FTM_FACE_GEOM_INDEX); + mVertexBuffer->getIndexStrider(indicesp, mIndicesIndex, mIndicesCount, map_range); __m128i* dst = (__m128i*) indicesp.get(); __m128i* src = (__m128i*) vf.mIndices; @@ -1201,7 +1211,10 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, indicesp[i] = vf.mIndices[i]+index_offset; } - mVertexBuffer->setBuffer(0); + if (map_range) + { + mVertexBuffer->setBuffer(0); + } } LLMatrix4a mat_normal; @@ -1215,6 +1228,7 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, if (rebuild_tcoord) { + LLFastTimer t(FTM_FACE_GEOM_TEXTURE); bool do_xform; if (tep) @@ -1422,11 +1436,14 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, } } - mVertexBuffer->setBuffer(0); + if (map_range) + { + mVertexBuffer->setBuffer(0); + } } else { //either bump mapped or in atlas, just do the whole expensive loop - mVertexBuffer->getTexCoord0Strider(tex_coords, mGeomIndex, mGeomCount, true); + mVertexBuffer->getTexCoord0Strider(tex_coords, mGeomIndex, mGeomCount, map_range); std::vector<LLVector2> bump_tc; @@ -1566,12 +1583,14 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, } } - mVertexBuffer->setBuffer(0); - + if (map_range) + { + mVertexBuffer->setBuffer(0); + } if (do_bump) { - mVertexBuffer->getTexCoord1Strider(tex_coords2, mGeomIndex, mGeomCount, true); + mVertexBuffer->getTexCoord1Strider(tex_coords2, mGeomIndex, mGeomCount, map_range); for (S32 i = 0; i < num_vertices; i++) { @@ -1601,14 +1620,20 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, *tex_coords2++ = tc; } - mVertexBuffer->setBuffer(0); + if (map_range) + { + mVertexBuffer->setBuffer(0); + } } } } if (rebuild_pos) { - mVertexBuffer->getVertexStrider(vert, mGeomIndex, mGeomCount, true); + LLFastTimer t(FTM_FACE_GEOM_POSITION); + llassert(num_vertices > 0); + + mVertexBuffer->getVertexStrider(vert, mGeomIndex, mGeomCount, map_range); vertices = (LLVector4a*) vert.get(); LLMatrix4a mat_vert; @@ -1636,13 +1661,25 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, index_dst += 4; } while (index_dst < index_end); - - mVertexBuffer->setBuffer(0); + + S32 aligned_pad_vertices = mGeomCount - num_vertices; + LLVector4a* last_vec = end - 1; + while (aligned_pad_vertices > 0) + { + --aligned_pad_vertices; + *dst++ = *last_vec; + } + + if (map_range) + { + mVertexBuffer->setBuffer(0); + } } if (rebuild_normal) { - mVertexBuffer->getNormalStrider(norm, mGeomIndex, mGeomCount, true); + LLFastTimer t(FTM_FACE_GEOM_NORMAL); + mVertexBuffer->getNormalStrider(norm, mGeomIndex, mGeomCount, map_range); normals = (LLVector4a*) norm.get(); for (S32 i = 0; i < num_vertices; i++) @@ -1653,12 +1690,16 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, normals[i] = normal; } - mVertexBuffer->setBuffer(0); + if (map_range) + { + mVertexBuffer->setBuffer(0); + } } if (rebuild_binormal) { - mVertexBuffer->getBinormalStrider(binorm, mGeomIndex, mGeomCount, true); + LLFastTimer t(FTM_FACE_GEOM_BINORMAL); + mVertexBuffer->getBinormalStrider(binorm, mGeomIndex, mGeomCount, map_range); binormals = (LLVector4a*) binorm.get(); for (S32 i = 0; i < num_vertices; i++) @@ -1669,20 +1710,28 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, binormals[i] = binormal; } - mVertexBuffer->setBuffer(0); + if (map_range) + { + mVertexBuffer->setBuffer(0); + } } if (rebuild_weights && vf.mWeights) { - mVertexBuffer->getWeight4Strider(wght, mGeomIndex, mGeomCount, true); + LLFastTimer t(FTM_FACE_GEOM_WEIGHTS); + mVertexBuffer->getWeight4Strider(wght, mGeomIndex, mGeomCount, map_range); weights = (LLVector4a*) wght.get(); LLVector4a::memcpyNonAliased16((F32*) weights, (F32*) vf.mWeights, num_vertices*4*sizeof(F32)); - mVertexBuffer->setBuffer(0); + if (map_range) + { + mVertexBuffer->setBuffer(0); + } } if (rebuild_color) { - mVertexBuffer->getColorStrider(colors, mGeomIndex, mGeomCount, true); + LLFastTimer t(FTM_FACE_GEOM_COLOR); + mVertexBuffer->getColorStrider(colors, mGeomIndex, mGeomCount, map_range); LLVector4a src; @@ -1703,7 +1752,10 @@ BOOL LLFace::getGeometryVolume(const LLVolume& volume, dst[i] = src; } - mVertexBuffer->setBuffer(0); + if (map_range) + { + mVertexBuffer->setBuffer(0); + } } if (rebuild_tcoord) diff --git a/indra/newview/llfeaturemanager.cpp b/indra/newview/llfeaturemanager.cpp index 83844048d1d2c14f3877b4131a6354bcc6ddc4ab..0ea0e41dfae9fbff54752eb5ee30f9802fec1f67 100644 --- a/indra/newview/llfeaturemanager.cpp +++ b/indra/newview/llfeaturemanager.cpp @@ -769,6 +769,10 @@ void LLFeatureManager::applyBaseMasks() { maskFeatures("TexUnit8orLess"); } + if (gGLManager.mHasMapBufferRange) + { + maskFeatures("MapBufferRange"); + } // now mask by gpu string // Replaces ' ' with '_' in mGPUString to deal with inability for parser to handle spaces diff --git a/indra/newview/llfloaterbuyland.cpp b/indra/newview/llfloaterbuyland.cpp index 610142b5a9c63bc51825c8f5cff04c3f09e73be7..5cfdd69f7b6cde8e84d1252c44c961d95fad48c5 100644 --- a/indra/newview/llfloaterbuyland.cpp +++ b/indra/newview/llfloaterbuyland.cpp @@ -529,7 +529,7 @@ void LLFloaterBuyLandUI::updateCovenantInfo() LLTextBox* region_type = getChild<LLTextBox>("region_type_text"); if (region_type) { - region_type->setText(region->getSimProductName()); + region_type->setText(region->getLocalizedSimProductName()); } LLTextBox* resellable_clause = getChild<LLTextBox>("resellable_clause"); diff --git a/indra/newview/llfloaterland.cpp b/indra/newview/llfloaterland.cpp index 9b7593ce615bba15ada99a43c20efc5bcd78a9c0..4746f93009295e937f69219028357237e2ae928b 100644 --- a/indra/newview/llfloaterland.cpp +++ b/indra/newview/llfloaterland.cpp @@ -566,10 +566,7 @@ void LLPanelLandGeneral::refresh() if (regionp) { insert_maturity_into_textbox(mContentRating, gFloaterView->getParentFloater(this), MATURITY); - - std::string land_type; - bool is_land_type_localized = LLTrans::findString(land_type, regionp->getSimProductName()); - mLandType->setText(is_land_type_localized ? land_type : regionp->getSimProductName()); + mLandType->setText(regionp->getLocalizedSimProductName()); } // estate owner/manager cannot edit other parts of the parcel @@ -2883,13 +2880,7 @@ void LLPanelLandCovenant::refresh() } LLTextBox* region_landtype = getChild<LLTextBox>("region_landtype_text"); - if (region_landtype) - { - std::string land_type; - bool is_land_type_localized = LLTrans::findString(land_type, region->getSimProductName()); - - region_landtype->setText(is_land_type_localized ? land_type : region->getSimProductName()); - } + region_landtype->setText(region->getLocalizedSimProductName()); LLTextBox* region_maturity = getChild<LLTextBox>("region_maturity_text"); if (region_maturity) diff --git a/indra/newview/llfloaterregioninfo.cpp b/indra/newview/llfloaterregioninfo.cpp index 538c5e3b884de7997f791585408699921773bcc4..9a99417e9389cd23809f31abed4e745c8dd267f7 100644 --- a/indra/newview/llfloaterregioninfo.cpp +++ b/indra/newview/llfloaterregioninfo.cpp @@ -336,7 +336,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg) LLViewerRegion* region = gAgent.getRegion(); BOOL allow_modify = gAgent.isGodlike() || (region && region->canManageEstate()); - // *TODO: Replace parcing msg with accessing the region info model. + // *TODO: Replace parsing msg with accessing the region info model. LLRegionInfoModel& region_info = LLRegionInfoModel::instance(); // extract message @@ -368,6 +368,7 @@ void LLFloaterRegionInfo::processRegionInfo(LLMessageSystem* msg) msg->getSize("RegionInfo2", "ProductName") > 0) { msg->getString("RegionInfo2", "ProductName", sim_type); + LLTrans::findString(sim_type, sim_type); // try localizing sim product name } // GENERAL PANEL @@ -2409,11 +2410,7 @@ bool LLPanelEstateCovenant::refreshFromRegion(LLViewerRegion* region) } LLTextBox* region_landtype = getChild<LLTextBox>("region_landtype_text"); - if (region_landtype) - { - region_landtype->setText(region->getSimProductName()); - } - + region_landtype->setText(region->getLocalizedSimProductName()); // let the parent class handle the general data collection. bool rv = LLPanelRegionInfo::refreshFromRegion(region); diff --git a/indra/newview/llfloaterworldmap.cpp b/indra/newview/llfloaterworldmap.cpp index eb3c7ee46991a81d8f3643f5d369bf2a4708dd11..d5f0648f3b98edb453e42600c1fa960eb161a3ba 100755 --- a/indra/newview/llfloaterworldmap.cpp +++ b/indra/newview/llfloaterworldmap.cpp @@ -70,7 +70,7 @@ #include "llappviewer.h" #include "llmapimagetype.h" #include "llweb.h" -#include "llslider.h" +#include "llsliderctrl.h" #include "message.h" #include "llwindow.h" // copyTextToClipboard() #include <algorithm> @@ -1029,7 +1029,7 @@ void LLFloaterWorldMap::adjustZoomSliderBounds() F32 min_power = log(pixels_per_region/256.f)/log(2.f); - getChild<LLSlider>("zoom slider")->setMinValue(min_power); + getChild<LLSliderCtrl>("zoom slider")->setMinValue(min_power); } diff --git a/indra/newview/llhudnametag.cpp b/indra/newview/llhudnametag.cpp index 82e1f2dfb5ed2ae947e830ef714171ce498686df..482294c8a614bf2aec9ba73251aefadd607cc684 100644 --- a/indra/newview/llhudnametag.cpp +++ b/indra/newview/llhudnametag.cpp @@ -477,7 +477,7 @@ void LLHUDNameTag::renderText(BOOL for_select) // Render label { - gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + //gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); for(std::vector<LLHUDTextSegment>::iterator segment_iter = mLabelSegments.begin(); segment_iter != mLabelSegments.end(); ++segment_iter ) diff --git a/indra/newview/llinventorybridge.cpp b/indra/newview/llinventorybridge.cpp index 75d4c4e80d4b6da20f7c62c6bfb381df38ce3c06..9f093b8a34497f0f6fac08b36cc9cd704b1e54b0 100644 --- a/indra/newview/llinventorybridge.cpp +++ b/indra/newview/llinventorybridge.cpp @@ -2514,6 +2514,11 @@ void LLFolderBridge::folderOptionsMenu() } } + if (!isItemRemovable()) + { + disabled_items.push_back(std::string("Delete")); + } + #ifndef LL_RELEASE_FOR_DOWNLOAD if (LLFolderType::lookupIsProtectedType(type)) { diff --git a/indra/newview/llpanelgrouplandmoney.cpp b/indra/newview/llpanelgrouplandmoney.cpp index 8d8d9bc1c4452247dec00b9e3dcae314beff3a7a..eddd6e554dd0fe04fd230ea7fb415f8970427af0 100644 --- a/indra/newview/llpanelgrouplandmoney.cpp +++ b/indra/newview/llpanelgrouplandmoney.cpp @@ -35,6 +35,7 @@ #include "llqueryflags.h" #include "llagent.h" +#include "lldateutil.h" #include "lliconctrl.h" #include "llfloaterreg.h" #include "lllineeditor.h" @@ -1056,6 +1057,14 @@ void LLGroupMoneyDetailsTabEventHandler::processReply(LLMessageSystem* msg, msg->getS32Fast(_PREHASH_MoneyData, _PREHASH_CurrentInterval, current_interval ); msg->getStringFast(_PREHASH_MoneyData, _PREHASH_StartDate, start_date); + std::string time_str = LLTrans::getString("GroupMoneyDate"); + LLSD substitution; + + // We don't do time zone corrections of the calculated number of seconds + // because we don't have a full time stamp, only a date. + substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%A %b %d, %Y", start_date); + LLStringUtil::format (time_str, substitution); + if ( interval_days != mImplementationp->mIntervalLength || current_interval != mImplementationp->mCurrentInterval ) { @@ -1064,7 +1073,7 @@ void LLGroupMoneyDetailsTabEventHandler::processReply(LLMessageSystem* msg, return; } - std::string text = start_date; + std::string text = time_str; text.append("\n\n"); S32 total_amount = 0; @@ -1203,7 +1212,15 @@ void LLGroupMoneySalesTabEventHandler::processReply(LLMessageSystem* msg, // Start with the date. if (text == mImplementationp->mLoadingText) { - text = start_date + "\n\n"; + std::string time_str = LLTrans::getString("GroupMoneyDate"); + LLSD substitution; + + // We don't do time zone corrections of the calculated number of seconds + // because we don't have a full time stamp, only a date. + substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%A %b %d, %Y", start_date); + LLStringUtil::format (time_str, substitution); + + text = time_str + "\n\n"; } S32 transactions = msg->getNumberOfBlocksFast(_PREHASH_HistoryData); @@ -1408,12 +1425,26 @@ void LLGroupMoneyPlanningTabEventHandler::processReply(LLMessageSystem* msg, } text.append(LLTrans::getString("SummaryForTheWeek")); - text.append(start_date); + + std::string date_format_str = LLTrans::getString("GroupPlanningDate"); + std::string time_str = date_format_str; + LLSD substitution; + // We don't do time zone corrections of the calculated number of seconds + // because we don't have a full time stamp, only a date. + substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", start_date); + LLStringUtil::format (time_str, substitution); + + text.append(time_str); if (current_interval == 0) { text.append(LLTrans::getString("NextStipendDay")); - text.append(next_stipend_date); + + time_str = date_format_str; + substitution["datetime"] = LLDateUtil::secondsSinceEpochFromString("%m/%d/%Y", next_stipend_date); + LLStringUtil::format (time_str, substitution); + + text.append(time_str); text.append("\n\n"); text.append(llformat("%-24sL$%6d\n", LLTrans::getString("GroupMoneyBalance").c_str(), balance )); text.append(1, '\n'); diff --git a/indra/newview/llpanelplaceprofile.cpp b/indra/newview/llpanelplaceprofile.cpp index 1e9ce582373d692c5f5dbe986b327c9a6f7ff611..ce8057eeaddd74746192e9c2130466569081b133 100644 --- a/indra/newview/llpanelplaceprofile.cpp +++ b/indra/newview/llpanelplaceprofile.cpp @@ -32,6 +32,7 @@ #include "llparcel.h" #include "message.h" +#include "llexpandabletextbox.h" #include "lliconctrl.h" #include "lllineeditor.h" #include "lltextbox.h" @@ -227,6 +228,34 @@ void LLPanelPlaceProfile::setInfoType(EInfoType type) getChild<LLAccordionCtrl>("advanced_info_accordion")->setVisible(is_info_type_agent); + // If we came from search we want larger description area, approx. 10 lines (see STORM-1311). + // Don't use the maximum available space because that leads to nasty artifacts + // in text editor and expandable text box. + { + const S32 SEARCH_DESC_HEIGHT = 150; + + // Remember original geometry (once). + static const S32 sOrigDescVPad = getChildView("parcel_title")->getRect().mBottom - mDescEditor->getRect().mTop; + static const S32 sOrigDescHeight = mDescEditor->getRect().getHeight(); + static const S32 sOrigMRIconVPad = mDescEditor->getRect().mBottom - mMaturityRatingIcon->getRect().mTop; + static const S32 sOrigMRTextVPad = mDescEditor->getRect().mBottom - mMaturityRatingText->getRect().mTop; + + // Resize the description. + const S32 desc_height = is_info_type_agent ? sOrigDescHeight : SEARCH_DESC_HEIGHT; + const S32 desc_top = getChildView("parcel_title")->getRect().mBottom - sOrigDescVPad; + LLRect desc_rect = mDescEditor->getRect(); + desc_rect.setOriginAndSize(desc_rect.mLeft, desc_top - desc_height, desc_rect.getWidth(), desc_height); + mDescEditor->reshape(desc_rect.getWidth(), desc_rect.getHeight()); + mDescEditor->setRect(desc_rect); + mDescEditor->updateTextShape(); + + // Move the maturity rating icon/text accordingly. + const S32 mr_icon_bottom = mDescEditor->getRect().mBottom - sOrigMRIconVPad - mMaturityRatingIcon->getRect().getHeight(); + const S32 mr_text_bottom = mDescEditor->getRect().mBottom - sOrigMRTextVPad - mMaturityRatingText->getRect().getHeight(); + mMaturityRatingIcon->setOrigin(mMaturityRatingIcon->getRect().mLeft, mr_icon_bottom); + mMaturityRatingText->setOrigin(mMaturityRatingText->getRect().mLeft, mr_text_bottom); + } + switch(type) { case AGENT: @@ -434,7 +463,7 @@ void LLPanelPlaceProfile::displaySelectedParcelInfo(LLParcel* parcel, } mRegionNameText->setText(region->getName()); - mRegionTypeText->setText(region->getSimProductName()); + mRegionTypeText->setText(region->getLocalizedSimProductName()); // Determine parcel owner if (parcel->isPublic()) diff --git a/indra/newview/llpanelvoicedevicesettings.cpp b/indra/newview/llpanelvoicedevicesettings.cpp index 4a80bbbe5ef7d175193adcaf381eab8b78596ef8..6be2ea6481cc0fa5e8563173fe23c6307c214f79 100644 --- a/indra/newview/llpanelvoicedevicesettings.cpp +++ b/indra/newview/llpanelvoicedevicesettings.cpp @@ -41,6 +41,7 @@ static LLRegisterPanelClassWrapper<LLPanelVoiceDeviceSettings> t_panel_group_general("panel_voice_device_settings"); +static const std::string DEFAULT_DEVICE("Default"); LLPanelVoiceDeviceSettings::LLPanelVoiceDeviceSettings() @@ -68,10 +69,17 @@ BOOL LLPanelVoiceDeviceSettings::postBuild() // set mic volume tuning slider based on last mic volume setting volume_slider->setValue(mMicVolume); - getChild<LLComboBox>("voice_input_device")->setCommitCallback( + mCtrlInputDevices = getChild<LLComboBox>("voice_input_device"); + mCtrlOutputDevices = getChild<LLComboBox>("voice_output_device"); + + mCtrlInputDevices->setCommitCallback( boost::bind(&LLPanelVoiceDeviceSettings::onCommitInputDevice, this)); - getChild<LLComboBox>("voice_output_device")->setCommitCallback( + mCtrlOutputDevices->setCommitCallback( boost::bind(&LLPanelVoiceDeviceSettings::onCommitOutputDevice, this)); + + mLocalizedDeviceNames[DEFAULT_DEVICE] = getString("default_text"); + mLocalizedDeviceNames["No Device"] = getString("name_no_device"); + mLocalizedDeviceNames["Default System Device"] = getString("name_default_system_device"); return TRUE; } @@ -138,14 +146,14 @@ void LLPanelVoiceDeviceSettings::apply() std::string s; if(mCtrlInputDevices) { - s = mCtrlInputDevices->getSimple(); + s = mCtrlInputDevices->getValue().asString(); gSavedSettings.setString("VoiceInputAudioDevice", s); mInputDevice = s; } if(mCtrlOutputDevices) { - s = mCtrlOutputDevices->getSimple(); + s = mCtrlOutputDevices->getValue().asString(); gSavedSettings.setString("VoiceOutputAudioDevice", s); mOutputDevice = s; } @@ -166,10 +174,10 @@ void LLPanelVoiceDeviceSettings::cancel() gSavedSettings.setString("VoiceOutputAudioDevice", mOutputDevice); if(mCtrlInputDevices) - mCtrlInputDevices->setSimple(mInputDevice); + mCtrlInputDevices->setValue(mInputDevice); if(mCtrlOutputDevices) - mCtrlOutputDevices->setSimple(mOutputDevice); + mCtrlOutputDevices->setValue(mOutputDevice); gSavedSettings.setF32("AudioLevelMic", mMicVolume); LLSlider* volume_slider = getChild<LLSlider>("mic_volume_slider"); @@ -188,9 +196,6 @@ void LLPanelVoiceDeviceSettings::refresh() LLVoiceClient::getInstance()->tuningSetMicVolume(current_volume); // Fill in popup menus - mCtrlInputDevices = getChild<LLComboBox>("voice_input_device"); - mCtrlOutputDevices = getChild<LLComboBox>("voice_output_device"); - bool device_settings_available = LLVoiceClient::getInstance()->deviceSettingsAvailable(); if (mCtrlInputDevices) @@ -212,14 +217,14 @@ void LLPanelVoiceDeviceSettings::refresh() if(mCtrlInputDevices) { mCtrlInputDevices->removeall(); - mCtrlInputDevices->add( mInputDevice, ADD_BOTTOM ); - mCtrlInputDevices->setSimple(mInputDevice); + mCtrlInputDevices->add(getLocalizedDeviceName(mInputDevice), mInputDevice, ADD_BOTTOM); + mCtrlInputDevices->setValue(mInputDevice); } if(mCtrlOutputDevices) { mCtrlOutputDevices->removeall(); - mCtrlOutputDevices->add( mOutputDevice, ADD_BOTTOM ); - mCtrlOutputDevices->setSimple(mOutputDevice); + mCtrlOutputDevices->add(getLocalizedDeviceName(mOutputDevice), mOutputDevice, ADD_BOTTOM); + mCtrlOutputDevices->setValue(mOutputDevice); } mDevicesUpdated = FALSE; } @@ -230,35 +235,41 @@ void LLPanelVoiceDeviceSettings::refresh() if(mCtrlInputDevices) { mCtrlInputDevices->removeall(); - mCtrlInputDevices->add( getString("default_text"), ADD_BOTTOM ); + mCtrlInputDevices->add(getLocalizedDeviceName(DEFAULT_DEVICE), DEFAULT_DEVICE, ADD_BOTTOM); for(iter=LLVoiceClient::getInstance()->getCaptureDevices().begin(); iter != LLVoiceClient::getInstance()->getCaptureDevices().end(); iter++) { - mCtrlInputDevices->add( *iter, ADD_BOTTOM ); + mCtrlInputDevices->add(getLocalizedDeviceName(*iter), *iter, ADD_BOTTOM); } - if(!mCtrlInputDevices->setSimple(mInputDevice)) + // Fix invalid input audio device preference. + if (!mCtrlInputDevices->setSelectedByValue(mInputDevice, TRUE)) { - mCtrlInputDevices->setSimple(getString("default_text")); + mCtrlInputDevices->setValue(DEFAULT_DEVICE); + gSavedSettings.setString("VoiceInputAudioDevice", DEFAULT_DEVICE); + mInputDevice = DEFAULT_DEVICE; } } if(mCtrlOutputDevices) { mCtrlOutputDevices->removeall(); - mCtrlOutputDevices->add( getString("default_text"), ADD_BOTTOM ); + mCtrlOutputDevices->add(getLocalizedDeviceName(DEFAULT_DEVICE), DEFAULT_DEVICE, ADD_BOTTOM); for(iter= LLVoiceClient::getInstance()->getRenderDevices().begin(); iter != LLVoiceClient::getInstance()->getRenderDevices().end(); iter++) { - mCtrlOutputDevices->add( *iter, ADD_BOTTOM ); + mCtrlOutputDevices->add(getLocalizedDeviceName(*iter), *iter, ADD_BOTTOM); } - if(!mCtrlOutputDevices->setSimple(mOutputDevice)) + // Fix invalid output audio device preference. + if (!mCtrlOutputDevices->setSelectedByValue(mOutputDevice, TRUE)) { - mCtrlOutputDevices->setSimple(getString("default_text")); + mCtrlOutputDevices->setValue(DEFAULT_DEVICE); + gSavedSettings.setString("VoiceOutputAudioDevice", DEFAULT_DEVICE); + mOutputDevice = DEFAULT_DEVICE; } } mDevicesUpdated = TRUE; @@ -292,12 +303,19 @@ void LLPanelVoiceDeviceSettings::cleanup() } } +// returns English name if no translation found +std::string LLPanelVoiceDeviceSettings::getLocalizedDeviceName(const std::string& en_dev_name) +{ + std::map<std::string, std::string>::const_iterator it = mLocalizedDeviceNames.find(en_dev_name); + return it != mLocalizedDeviceNames.end() ? it->second : en_dev_name; +} + void LLPanelVoiceDeviceSettings::onCommitInputDevice() { if(LLVoiceClient::getInstance()) { LLVoiceClient::getInstance()->setCaptureDevice( - getChild<LLComboBox>("voice_input_device")->getValue().asString()); + mCtrlInputDevices->getValue().asString()); } } @@ -306,6 +324,6 @@ void LLPanelVoiceDeviceSettings::onCommitOutputDevice() if(LLVoiceClient::getInstance()) { LLVoiceClient::getInstance()->setRenderDevice( - getChild<LLComboBox>("voice_output_device")->getValue().asString()); + mCtrlInputDevices->getValue().asString()); } } diff --git a/indra/newview/llpanelvoicedevicesettings.h b/indra/newview/llpanelvoicedevicesettings.h index d09476d469742d94ae3d6c69ccb9b9c17b58269a..ba3bcad0dc2c486af8fbc83840df51b23bd23a8c 100644 --- a/indra/newview/llpanelvoicedevicesettings.h +++ b/indra/newview/llpanelvoicedevicesettings.h @@ -49,6 +49,8 @@ class LLPanelVoiceDeviceSettings : public LLPanel void setUseTuningMode(bool use) { mUseTuningMode = use; }; protected: + std::string getLocalizedDeviceName(const std::string& en_dev_name); + void onCommitInputDevice(); void onCommitOutputDevice(); @@ -59,6 +61,7 @@ class LLPanelVoiceDeviceSettings : public LLPanel class LLComboBox *mCtrlOutputDevices; BOOL mDevicesUpdated; bool mUseTuningMode; + std::map<std::string, std::string> mLocalizedDeviceNames; }; #endif // LL_LLPANELVOICEDEVICESETTINGS_H diff --git a/indra/newview/llspatialpartition.cpp b/indra/newview/llspatialpartition.cpp index f99afa923b9a4275f02eb9651b84fb1e3f4a6a58..e23b431457470e1a3ef5fc699a8019b1486a9b55 100644 --- a/indra/newview/llspatialpartition.cpp +++ b/indra/newview/llspatialpartition.cpp @@ -47,6 +47,7 @@ #include "llvoavatar.h" #include "llvolumemgr.h" #include "lltextureatlas.h" +#include "llglslshader.h" static LLFastTimer::DeclareTimer FTM_FRUSTUM_CULL("Frustum Culling"); static LLFastTimer::DeclareTimer FTM_CULL_REBOUND("Cull Rebound"); @@ -3176,6 +3177,8 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume) glColor4fv(line_color.mV); LLVertexBuffer::unbind(); + llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShader != 0); + glVertexPointer(3, GL_FLOAT, 16, phys_volume->mHullPoints); glDrawElements(GL_TRIANGLES, phys_volume->mNumHullIndices, GL_UNSIGNED_SHORT, phys_volume->mHullIndices); @@ -3257,7 +3260,7 @@ void renderPhysicsShape(LLDrawable* drawable, LLVOVolume* volume) if (phys_volume->mHullPoints && phys_volume->mHullIndices) { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); - + llassert(!LLGLSLShader::sNoFixedFunction || LLGLSLShader::sCurBoundShader != 0); LLVertexBuffer::unbind(); glVertexPointer(3, GL_FLOAT, 16, phys_volume->mHullPoints); glColor4fv(line_color.mV); diff --git a/indra/newview/lltexlayer.cpp b/indra/newview/lltexlayer.cpp index bd41aa64f0a6df82afab3b367e54d6218a2b7398..e8abee2fb76c07d55ef61f92ca5642f3792d6010 100644 --- a/indra/newview/lltexlayer.cpp +++ b/indra/newview/lltexlayer.cpp @@ -45,6 +45,7 @@ #include "llagentwearables.h" #include "llwearable.h" #include "llviewercontrol.h" +#include "llviewershadermgr.h" #include "llviewervisualparam.h" //#include "../tools/imdebug/imdebug.h" @@ -294,11 +295,17 @@ BOOL LLTexLayerSetBuffer::render() BOOL success = TRUE; + //hack to use fixed function when updating tex layer sets + bool no_ff = LLGLSLShader::sNoFixedFunction; + LLGLSLShader::sNoFixedFunction = false; + // Composite the color data LLGLSUIDefault gls_ui; success &= mTexLayerSet->render( mOrigin.mX, mOrigin.mY, mFullWidth, mFullHeight ); gGL.flush(); + LLGLSLShader::sNoFixedFunction = no_ff; + if(upload_now) { if (!success) diff --git a/indra/newview/llviewerdisplay.cpp b/indra/newview/llviewerdisplay.cpp index 911fc8e1ed56ebcd5d660b054db753ed92c498ca..39053fe9e4b2889545f93311b363666c6add65b2 100644 --- a/indra/newview/llviewerdisplay.cpp +++ b/indra/newview/llviewerdisplay.cpp @@ -616,6 +616,7 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) && LLFeatureManager::getInstance()->isFeatureAvailable("UseOcclusion") && gSavedSettings.getBOOL("UseOcclusion") && gGLManager.mHasOcclusionQuery) ? 2 : 0; + LLTexUnit::sWhiteTexture = LLViewerFetchedTexture::sWhiteImagep->getTexName(); /*if (LLPipeline::sUseOcclusion && LLPipeline::sRenderDeferred) { //force occlusion on for all render types if doing deferred render (tighter shadow frustum) @@ -709,6 +710,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) glClear(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); } + LLGLState::checkStates(); + LLGLState::checkClientArrays(); + //if (!for_snapshot) { LLMemType mt_gw(LLMemType::MTYPE_DISPLAY_GEN_REFLECTION); @@ -717,6 +721,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) gPipeline.generateHighlight(*LLViewerCamera::getInstance()); } + LLGLState::checkStates(); + LLGLState::checkClientArrays(); + ////////////////////////////////////// // // Update images, using the image stats generated during object update/culling @@ -743,6 +750,10 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) LLImageGL::deleteDeadTextures(); stop_glerror(); } + + LLGLState::checkStates(); + LLGLState::checkClientArrays(); + /////////////////////////////////// // // StateSort @@ -770,6 +781,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) } } + LLGLState::checkStates(); + LLGLState::checkClientArrays(); + LLPipeline::sUseOcclusion = occlusion; { @@ -828,6 +842,9 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) LLPipeline::sUnderWaterRender = LLViewerCamera::getInstance()->cameraUnderWater() ? TRUE : FALSE; LLPipeline::refreshRenderDeferred(); + LLGLState::checkStates(); + LLGLState::checkClientArrays(); + stop_glerror(); if (to_texture) @@ -878,6 +895,14 @@ void display(BOOL rebuild, F32 zoom_factor, int subfield, BOOL for_snapshot) stop_glerror(); } + for (U32 i = 0; i < gGLManager.mNumTextureImageUnits; i++) + { //dummy cleanup of any currently bound textures + if (gGL.getTexUnit(i)->getCurrType() != LLTexUnit::TT_NONE) + { + gGL.getTexUnit(i)->unbind(gGL.getTexUnit(i)->getCurrType()); + gGL.getTexUnit(i)->disable(); + } + } LLAppViewer::instance()->pingMainloopTimeout("Display:RenderFlush"); if (to_texture) @@ -1339,7 +1364,7 @@ void render_ui_2d() } stop_glerror(); - gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + //gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); // render outline for HUD if (isAgentAvatarValid() && gAgentCamera.mHUDCurZoom < 0.98f) diff --git a/indra/newview/llviewerinventory.cpp b/indra/newview/llviewerinventory.cpp index 22666cec0d59b9893a13ff46aa06a05eb815e189..c532346e6b1f74f51f84d1740e2e5580d0e6e91e 100644 --- a/indra/newview/llviewerinventory.cpp +++ b/indra/newview/llviewerinventory.cpp @@ -418,6 +418,9 @@ void LLViewerInventoryItem::fetchFromServer(void) const BOOL LLViewerInventoryItem::unpackMessage(LLSD item) { BOOL rv = LLInventoryItem::fromLLSD(item); + + LLLocalizedInventoryItemsDictionary::getInstance()->localizeInventoryObjectName(mName); + mIsComplete = TRUE; return rv; } diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp index a37f8ad0d8c017e5be2482e0b57d2df8cb2c4aa1..f74bcafc5c530c9353c02f0b4b9e0a21c45cd7d0 100644 --- a/indra/newview/llviewermenu.cpp +++ b/indra/newview/llviewermenu.cpp @@ -44,6 +44,7 @@ #include "llbottomtray.h" #include "llcompilequeue.h" #include "llconsole.h" +#include "lldaycyclemanager.h" #include "lldebugview.h" #include "llenvmanager.h" #include "llfilepicker.h" @@ -100,6 +101,7 @@ #include "llworldmap.h" #include "pipeline.h" #include "llviewerjoystick.h" +#include "llwaterparammanager.h" #include "llwlanimator.h" #include "llwlparammanager.h" #include "llfloatercamera.h" @@ -7667,6 +7669,40 @@ class LLWorldEnvPreset : public view_listener_t } }; +class LLWorldEnableEnvPreset : public view_listener_t +{ + bool handleEvent(const LLSD& userdata) + { + std::string item = userdata.asString(); + + if (item == "delete_water") + { + LLWaterParamManager::preset_name_list_t user_waters; + LLWaterParamManager::instance().getUserPresetNames(user_waters); + return !user_waters.empty(); + } + else if (item == "delete_sky") + { + LLWLParamManager::preset_name_list_t user_skies; + LLWLParamManager::instance().getUserPresetNames(user_skies); + return !user_skies.empty(); + } + else if (item == "delete_day_cycle") + { + LLDayCycleManager::preset_name_list_t user_days; + LLDayCycleManager::instance().getUserPresetNames(user_days); + return !user_days.empty(); + } + else + { + llwarns << "Unknown item" << llendl; + } + + return false; + } +}; + + /// Post-Process callbacks class LLWorldPostProcess : public view_listener_t { @@ -7906,6 +7942,7 @@ void initialize_menus() view_listener_t::addMenu(new LLWorldEnvSettings(), "World.EnvSettings"); view_listener_t::addMenu(new LLWorldEnvPreset(), "World.EnvPreset"); + view_listener_t::addMenu(new LLWorldEnableEnvPreset(), "World.EnableEnvPreset"); view_listener_t::addMenu(new LLWorldPostProcess(), "World.PostProcess"); view_listener_t::addMenu(new LLWorldToggleMovementControls(), "World.Toggle.MovementControls"); diff --git a/indra/newview/llviewerobjectlist.cpp b/indra/newview/llviewerobjectlist.cpp index 9f882ee73276baadc9bba275194bb7089b5409cc..48ccc7d0354d078f902ddfcdd05f7be19f3fd230 100644 --- a/indra/newview/llviewerobjectlist.cpp +++ b/indra/newview/llviewerobjectlist.cpp @@ -1339,18 +1339,29 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer) S32 num_removed = 0; LLViewerObject *objectp; - for (vobj_list_t::iterator iter = mObjects.begin(); iter != mObjects.end(); ) + + vobj_list_t::reverse_iterator target = mObjects.rbegin(); + + vobj_list_t::iterator iter = mObjects.begin(); + for ( ; iter != mObjects.end(); ) { - // Scan for all of the dead objects and remove any "global" references to them. + // Scan for all of the dead objects and put them all on the end of the list with no ref count ops objectp = *iter; + if (objectp == NULL) + { //we caught up to the dead tail + break; + } + if (objectp->isDead()) { - iter = mObjects.erase(iter); + LLPointer<LLViewerObject>::swap(*iter, *target); + *target = NULL; + ++target; num_removed++; - if (num_removed == mNumDeadObjects) + if (num_removed == mNumDeadObjects || iter->isNull()) { - // We've cleaned up all of the dead objects. + // We've cleaned up all of the dead objects or caught up to the dead tail break; } } @@ -1360,6 +1371,11 @@ void LLViewerObjectList::cleanDeadObjects(BOOL use_timer) } } + llassert(num_removed == mNumDeadObjects); + + //erase as a block + mObjects.erase(mObjects.begin()+(mObjects.size()-mNumDeadObjects), mObjects.end()); + // We've cleaned the global object list, now let's do some paranoia testing on objects // before blowing away the dead list. mDeadObjects.clear(); diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp index bb7170e0f73959a5c2271c6ddb522b2cb09429a1..d4e0831c333c2dc0692b7eb0e4736383e63ad7f7 100644 --- a/indra/newview/llviewerregion.cpp +++ b/indra/newview/llviewerregion.cpp @@ -558,6 +558,11 @@ const std::string LLViewerRegion::getSimAccessString() const return accessToString(mSimAccess); } +std::string LLViewerRegion::getLocalizedSimProductName() const +{ + std::string localized_spn; + return LLTrans::findString(localized_spn, mProductName) ? localized_spn : mProductName; +} // static std::string LLViewerRegion::regionFlagsToString(U32 flags) diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h index f68b51ea658d436eecb9bfb4a9def61cc7c53360..a105ff625d0c0cde9d0518aabdf060df3e3a2408 100644 --- a/indra/newview/llviewerregion.h +++ b/indra/newview/llviewerregion.h @@ -192,7 +192,7 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface S32 getSimCPURatio() const { return mCPURatio; } const std::string& getSimColoName() const { return mColoName; } const std::string& getSimProductSKU() const { return mProductSKU; } - const std::string& getSimProductName() const { return mProductName; } + std::string getLocalizedSimProductName() const; // Returns "Sandbox", "Expensive", etc. static std::string regionFlagsToString(U32 flags); diff --git a/indra/newview/llviewershadermgr.cpp b/indra/newview/llviewershadermgr.cpp index e473901609c0b1d9fc70e78cc89949a33bf82d58..62d83b516fb820be71eb7e275b0423aff5631a4a 100644 --- a/indra/newview/llviewershadermgr.cpp +++ b/indra/newview/llviewershadermgr.cpp @@ -61,6 +61,12 @@ BOOL LLViewerShaderMgr::sInitialized = FALSE; LLVector4 gShinyOrigin; +//utility shaders +LLGLSLShader gOcclusionProgram; +LLGLSLShader gCustomAlphaProgram; +LLGLSLShader gGlowCombineProgram; +LLGLSLShader gTwoTextureAddProgram; + //object shaders LLGLSLShader gObjectSimpleProgram; LLGLSLShader gObjectSimpleWaterProgram; @@ -70,6 +76,7 @@ LLGLSLShader gObjectFullbrightShinyProgram; LLGLSLShader gObjectFullbrightShinyWaterProgram; LLGLSLShader gObjectShinyProgram; LLGLSLShader gObjectShinyWaterProgram; +LLGLSLShader gObjectBumpProgram; LLGLSLShader gObjectSimpleNonIndexedProgram; LLGLSLShader gObjectSimpleNonIndexedWaterProgram; @@ -166,14 +173,24 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gWLCloudProgram); mShaderList.push_back(&gAvatarProgram); mShaderList.push_back(&gObjectShinyProgram); + mShaderList.push_back(&gObjectShinyNonIndexedProgram); mShaderList.push_back(&gWaterProgram); mShaderList.push_back(&gAvatarEyeballProgram); mShaderList.push_back(&gObjectSimpleProgram); + mShaderList.push_back(&gObjectBumpProgram); + mShaderList.push_back(&gUIProgram); + mShaderList.push_back(&gCustomAlphaProgram); + mShaderList.push_back(&gGlowCombineProgram); + mShaderList.push_back(&gTwoTextureAddProgram); + mShaderList.push_back(&gSolidColorProgram); + mShaderList.push_back(&gOcclusionProgram); mShaderList.push_back(&gObjectFullbrightProgram); mShaderList.push_back(&gObjectFullbrightShinyProgram); mShaderList.push_back(&gObjectFullbrightShinyWaterProgram); mShaderList.push_back(&gObjectSimpleNonIndexedProgram); + mShaderList.push_back(&gObjectSimpleNonIndexedWaterProgram); mShaderList.push_back(&gObjectFullbrightNonIndexedProgram); + mShaderList.push_back(&gObjectFullbrightNonIndexedWaterProgram); mShaderList.push_back(&gObjectFullbrightShinyNonIndexedProgram); mShaderList.push_back(&gObjectFullbrightShinyNonIndexedWaterProgram); mShaderList.push_back(&gSkinnedObjectSimpleProgram); @@ -190,6 +207,7 @@ LLViewerShaderMgr::LLViewerShaderMgr() : mShaderList.push_back(&gObjectFullbrightWaterProgram); mShaderList.push_back(&gAvatarWaterProgram); mShaderList.push_back(&gObjectShinyWaterProgram); + mShaderList.push_back(&gObjectShinyNonIndexedWaterProgram); mShaderList.push_back(&gUnderWaterProgram); mShaderList.push_back(&gDeferredSunProgram); mShaderList.push_back(&gDeferredBlurLightProgram); @@ -410,9 +428,13 @@ void LLViewerShaderMgr::setShaders() } mMaxAvatarShaderLevel = 0; + LLGLSLShader::sNoFixedFunction = false; if (LLFeatureManager::getInstance()->isFeatureAvailable("VertexShaderEnable") && gSavedSettings.getBOOL("VertexShaderEnable")) { + //using shaders, disable fixed function + LLGLSLShader::sNoFixedFunction = true; + S32 light_class = 2; S32 env_class = 2; S32 obj_class = 2; @@ -554,6 +576,7 @@ void LLViewerShaderMgr::setShaders() } else { + LLGLSLShader::sNoFixedFunction = false; gPipeline.mVertexShadersEnabled = FALSE; gPipeline.mVertexShadersLoaded = 0; mVertexShaderLevel[SHADER_LIGHTING] = 0; @@ -568,6 +591,7 @@ void LLViewerShaderMgr::setShaders() } else { + LLGLSLShader::sNoFixedFunction = false; gPipeline.mVertexShadersEnabled = FALSE; gPipeline.mVertexShadersLoaded = 0; mVertexShaderLevel[SHADER_LIGHTING] = 0; @@ -591,7 +615,15 @@ void LLViewerShaderMgr::setShaders() void LLViewerShaderMgr::unloadShaders() { + gOcclusionProgram.unload(); + gUIProgram.unload(); + gCustomAlphaProgram.unload(); + gGlowCombineProgram.unload(); + gTwoTextureAddProgram.unload(); + gSolidColorProgram.unload(); + gObjectSimpleProgram.unload(); + gObjectBumpProgram.unload(); gObjectSimpleWaterProgram.unload(); gObjectFullbrightProgram.unload(); gObjectFullbrightWaterProgram.unload(); @@ -1581,6 +1613,7 @@ BOOL LLViewerShaderMgr::loadShadersObject() gObjectFullbrightShinyWaterProgram.unload(); gObjectShinyWaterProgram.unload(); gObjectSimpleProgram.unload(); + gObjectBumpProgram.unload(); gObjectSimpleWaterProgram.unload(); gObjectFullbrightProgram.unload(); gObjectFullbrightWaterProgram.unload(); @@ -1751,6 +1784,22 @@ BOOL LLViewerShaderMgr::loadShadersObject() success = gObjectSimpleProgram.createShader(NULL, NULL); } + if (success) + { + gObjectBumpProgram.mName = "Bump Shader"; + /*gObjectBumpProgram.mFeatures.calculatesLighting = true; + gObjectBumpProgram.mFeatures.calculatesAtmospherics = true; + gObjectBumpProgram.mFeatures.hasGamma = true; + gObjectBumpProgram.mFeatures.hasAtmospherics = true; + gObjectBumpProgram.mFeatures.hasLighting = true; + gObjectBumpProgram.mFeatures.mIndexedTextureChannels = 0;*/ + gObjectBumpProgram.mShaderFiles.clear(); + gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpV.glsl", GL_VERTEX_SHADER_ARB)); + gObjectBumpProgram.mShaderFiles.push_back(make_pair("objects/bumpF.glsl", GL_FRAGMENT_SHADER_ARB)); + gObjectBumpProgram.mShaderLevel = mVertexShaderLevel[SHADER_OBJECT]; + success = gObjectBumpProgram.createShader(NULL, NULL); + } + if (success) { gObjectSimpleWaterProgram.mName = "Simple Water Shader"; @@ -2135,6 +2184,85 @@ BOOL LLViewerShaderMgr::loadShadersInterface() success = gHighlightProgram.createShader(NULL, NULL); } + if (success) + { + gUIProgram.mName = "UI Shader"; + gUIProgram.mShaderFiles.clear(); + gUIProgram.mShaderFiles.push_back(make_pair("interface/uiV.glsl", GL_VERTEX_SHADER_ARB)); + gUIProgram.mShaderFiles.push_back(make_pair("interface/uiF.glsl", GL_FRAGMENT_SHADER_ARB)); + gUIProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE]; + success = gUIProgram.createShader(NULL, NULL); + } + + if (success) + { + gCustomAlphaProgram.mName = "Custom Alpha Shader"; + gCustomAlphaProgram.mShaderFiles.clear(); + gCustomAlphaProgram.mShaderFiles.push_back(make_pair("interface/customalphaV.glsl", GL_VERTEX_SHADER_ARB)); + gCustomAlphaProgram.mShaderFiles.push_back(make_pair("interface/customalphaF.glsl", GL_FRAGMENT_SHADER_ARB)); + gCustomAlphaProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE]; + success = gCustomAlphaProgram.createShader(NULL, NULL); + } + + if (success) + { + gGlowCombineProgram.mName = "Glow Combine Shader"; + gGlowCombineProgram.mShaderFiles.clear(); + gGlowCombineProgram.mShaderFiles.push_back(make_pair("interface/glowcombineV.glsl", GL_VERTEX_SHADER_ARB)); + gGlowCombineProgram.mShaderFiles.push_back(make_pair("interface/glowcombineF.glsl", GL_FRAGMENT_SHADER_ARB)); + gGlowCombineProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE]; + success = gGlowCombineProgram.createShader(NULL, NULL); + if (success) + { + gGlowCombineProgram.bind(); + gGlowCombineProgram.uniform1i("glowMap", 0); + gGlowCombineProgram.uniform1i("screenMap", 1); + gGlowCombineProgram.unbind(); + } + } + + if (success) + { + gTwoTextureAddProgram.mName = "Two Texture Add Shader"; + gTwoTextureAddProgram.mShaderFiles.clear(); + gTwoTextureAddProgram.mShaderFiles.push_back(make_pair("interface/twotextureaddV.glsl", GL_VERTEX_SHADER_ARB)); + gTwoTextureAddProgram.mShaderFiles.push_back(make_pair("interface/twotextureaddF.glsl", GL_FRAGMENT_SHADER_ARB)); + gTwoTextureAddProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE]; + success = gTwoTextureAddProgram.createShader(NULL, NULL); + if (success) + { + gTwoTextureAddProgram.bind(); + gTwoTextureAddProgram.uniform1i("tex0", 0); + gTwoTextureAddProgram.uniform1i("tex1", 1); + } + } + + if (success) + { + gSolidColorProgram.mName = "Solid Color Shader"; + gSolidColorProgram.mShaderFiles.clear(); + gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorV.glsl", GL_VERTEX_SHADER_ARB)); + gSolidColorProgram.mShaderFiles.push_back(make_pair("interface/solidcolorF.glsl", GL_FRAGMENT_SHADER_ARB)); + gSolidColorProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE]; + success = gSolidColorProgram.createShader(NULL, NULL); + if (success) + { + gSolidColorProgram.bind(); + gSolidColorProgram.uniform1i("tex0", 0); + gSolidColorProgram.unbind(); + } + } + + if (success) + { + gOcclusionProgram.mName = "Occlusion Shader"; + gOcclusionProgram.mShaderFiles.clear(); + gOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionV.glsl", GL_VERTEX_SHADER_ARB)); + gOcclusionProgram.mShaderFiles.push_back(make_pair("interface/occlusionF.glsl", GL_FRAGMENT_SHADER_ARB)); + gOcclusionProgram.mShaderLevel = mVertexShaderLevel[SHADER_INTERFACE]; + success = gOcclusionProgram.createShader(NULL, NULL); + } + if( !success ) { mVertexShaderLevel[SHADER_INTERFACE] = 0; diff --git a/indra/newview/llviewershadermgr.h b/indra/newview/llviewershadermgr.h index efef9ec5b272a20ac52f374742e11e7d6c3b2293..93a0ecc4f04307cc4aad5fc5d0f197692142e3b1 100644 --- a/indra/newview/llviewershadermgr.h +++ b/indra/newview/llviewershadermgr.h @@ -287,6 +287,14 @@ inline bool operator != (LLViewerShaderMgr::shader_iter const & a, LLViewerShade extern LLVector4 gShinyOrigin; +//utility shaders +extern LLGLSLShader gOcclusionProgram; +extern LLGLSLShader gCustomAlphaProgram; +extern LLGLSLShader gGlowCombineProgram; + +//output tex0[tc0] + tex1[tc1] +extern LLGLSLShader gTwoTextureAddProgram; + //object shaders extern LLGLSLShader gObjectSimpleProgram; extern LLGLSLShader gObjectSimpleWaterProgram; @@ -296,6 +304,7 @@ extern LLGLSLShader gObjectFullbrightProgram; extern LLGLSLShader gObjectFullbrightWaterProgram; extern LLGLSLShader gObjectFullbrightNonIndexedProgram; extern LLGLSLShader gObjectFullbrightNonIndexedWaterProgram; +extern LLGLSLShader gObjectBumpProgram; extern LLGLSLShader gObjectSimpleLODProgram; extern LLGLSLShader gObjectFullbrightLODProgram; diff --git a/indra/newview/llviewertexture.cpp b/indra/newview/llviewertexture.cpp index 4da0f80a00281beff887a3fd191d8ebf6cb14942..5fcc57bc91dc82841a5710e390a8516e64f57fd9 100644 --- a/indra/newview/llviewertexture.cpp +++ b/indra/newview/llviewertexture.cpp @@ -599,7 +599,7 @@ bool LLViewerTexture::bindDefaultImage(S32 stage) } if (!res && LLViewerTexture::sNullImagep.notNull() && (this != LLViewerTexture::sNullImagep)) { - res = gGL.getTexUnit(stage)->bind(LLViewerTexture::sNullImagep) ; + res = gGL.getTexUnit(stage)->bind(LLViewerTexture::sNullImagep); } if (!res) { diff --git a/indra/newview/llviewertexturelist.cpp b/indra/newview/llviewertexturelist.cpp index d24174adeae4552368b4c70da3c55d687fb02234..30ef8b8a292b23b3a89022e68b425e93e8847d24 100644 --- a/indra/newview/llviewertexturelist.cpp +++ b/indra/newview/llviewertexturelist.cpp @@ -115,7 +115,7 @@ void LLViewerTextureList::doPreloadImages() // Set the "white" image LLViewerFetchedTexture::sWhiteImagep = LLViewerTextureManager::getFetchedTextureFromFile("white.tga", MIPMAP_NO, LLViewerFetchedTexture::BOOST_UI); - + LLTexUnit::sWhiteTexture = LLViewerFetchedTexture::sWhiteImagep->getTexName(); LLUIImageList* image_list = LLUIImageList::getInstance(); image_list->initFromFile(); diff --git a/indra/newview/llviewerwindow.cpp b/indra/newview/llviewerwindow.cpp index c31e1c3ba9a64e340aa753d851adcf5fe4833118..988c4ed1a234f4600152a45d5f8d3572cd3900e7 100644 --- a/indra/newview/llviewerwindow.cpp +++ b/indra/newview/llviewerwindow.cpp @@ -2302,6 +2302,11 @@ void LLViewerWindow::draw() // Draw all nested UI views. // No translation needed, this view is glued to 0,0 + if (LLGLSLShader::sNoFixedFunction) + { + gUIProgram.bind(); + } + gGL.pushMatrix(); LLUI::pushMatrix(); { @@ -2376,6 +2381,11 @@ void LLViewerWindow::draw() LLUI::popMatrix(); gGL.popMatrix(); + if (LLGLSLShader::sNoFixedFunction) + { + gUIProgram.unbind(); + } + //#if LL_DEBUG LLView::sIsDrawing = FALSE; //#endif diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index cd2bbad620951b4d2ec0121b958e0a3b40755562..0db0010688369ee1f21417d407b42888b99148c1 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -7049,6 +7049,8 @@ LLVivoxProtocolParser::~LLVivoxProtocolParser() XML_ParserFree(parser); } +static LLFastTimer::DeclareTimer FTM_VIVOX_PROCESS("Vivox Process"); + // virtual LLIOPipe::EStatus LLVivoxProtocolParser::process_impl( const LLChannelDescriptors& channels, @@ -7057,6 +7059,7 @@ LLIOPipe::EStatus LLVivoxProtocolParser::process_impl( LLSD& context, LLPumpIO* pump) { + LLFastTimer t(FTM_VIVOX_PROCESS); LLBufferStream istr(channels, buffer.get()); std::ostringstream ostr; while (istr.good()) diff --git a/indra/newview/llvosky.cpp b/indra/newview/llvosky.cpp index 66ba6249d3a135fb2d2b279b01a0cc54e4b3da32..ef21e7373e48a0e51890ef919a12d9a56183182a 100644 --- a/indra/newview/llvosky.cpp +++ b/indra/newview/llvosky.cpp @@ -755,6 +755,11 @@ void LLVOSky::calcSkyColorWLVert(LLVector3 & Pn, LLColor3 & vary_HazeColor, LLCo // project the direction ray onto the sky dome. F32 phi = acos(Pn[1]); F32 sinA = sin(F_PI - phi); + if (fabsf(sinA) < 0.01f) + { //avoid division by zero + sinA = 0.01f; + } + F32 Plen = dome_radius * sin(F_PI + phi + asin(dome_offset_ratio * sinA)) / sinA; Pn *= Plen; diff --git a/indra/newview/llvotree.cpp b/indra/newview/llvotree.cpp index 3c7fe708e61e5537d342c72f269567777e426914..890861df71fa2bfe79afc48848dc47bf7ea0d822 100644 --- a/indra/newview/llvotree.cpp +++ b/indra/newview/llvotree.cpp @@ -51,6 +51,7 @@ #include "llspatialpartition.h" #include "llnotificationsutil.h" #include "raytrace.h" +#include "llglslshader.h" extern LLPipeline gPipeline; diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index e6da8eb89d8ec90617d1f70d354adff65008b19e..4c137d339479ef2906916846f5e699777d9d50c9 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -3743,6 +3743,11 @@ bool can_batch_texture(LLFace* facep) return false; } + if (facep->getTexture() && facep->getTexture()->getPrimaryFormat() == GL_ALPHA) + { //can't batch invisiprims + return false; + } + if (facep->isState(LLFace::TEXTURE_ANIM) && facep->getVirtualSize() > MIN_TEX_ANIM_SIZE) { //texture animation breaks batches return false; @@ -4361,6 +4366,8 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) group->mBuilt = 1.f; + std::set<LLVertexBuffer*> mapped_buffers; + for (LLSpatialGroup::element_iter drawable_iter = group->getData().begin(); drawable_iter != group->getData().end(); ++drawable_iter) { LLFastTimer t(FTM_VOLUME_GEOM_PARTIAL); @@ -4375,35 +4382,31 @@ void LLVolumeGeometryManager::rebuildMesh(LLSpatialGroup* group) for (S32 i = 0; i < drawablep->getNumFaces(); ++i) { LLFace* face = drawablep->getFace(i); - if (face && face->getVertexBuffer()) + if (face) { - face->getGeometryVolume(*volume, face->getTEOffset(), - vobj->getRelativeXform(), vobj->getRelativeXformInvTrans(), face->getGeomIndex()); + LLVertexBuffer* buff = face->getVertexBuffer(); + if (buff) + { + face->getGeometryVolume(*volume, face->getTEOffset(), + vobj->getRelativeXform(), vobj->getRelativeXformInvTrans(), face->getGeomIndex()); + + if (buff->isLocked()) + { + mapped_buffers.insert(buff); + } + } } } - + drawablep->clearState(LLDrawable::REBUILD_ALL); } } - //unmap all the buffers - for (LLSpatialGroup::buffer_map_t::iterator i = group->mBufferMap.begin(); i != group->mBufferMap.end(); ++i) + for (std::set<LLVertexBuffer*>::iterator iter = mapped_buffers.begin(); iter != mapped_buffers.end(); ++iter) { - LLSpatialGroup::buffer_texture_map_t& map = i->second; - for (LLSpatialGroup::buffer_texture_map_t::iterator j = map.begin(); j != map.end(); ++j) - { - LLSpatialGroup::buffer_list_t& list = j->second; - for (LLSpatialGroup::buffer_list_t::iterator k = list.begin(); k != list.end(); ++k) - { - LLVertexBuffer* buffer = *k; - if (buffer->isLocked()) - { - buffer->setBuffer(0); - } - } - } + (*iter)->setBuffer(0); } - + // don't forget alpha if(group != NULL && !group->mVertexBuffer.isNull() && @@ -4713,6 +4716,7 @@ void LLVolumeGeometryManager::genDrawInfo(LLSpatialGroup* group, U32 mask, std:: } const LLTextureEntry* te = facep->getTextureEntry(); + tex = facep->getTexture(); BOOL is_alpha = (facep->getPoolType() == LLDrawPool::POOL_ALPHA) ? TRUE : FALSE; diff --git a/indra/newview/llvowater.cpp b/indra/newview/llvowater.cpp index 69ebad61ac49cb1fd7d8a85b04e953efb7fbac39..e70ac0a2e747600e753a26b59617e02cd6b0886a 100644 --- a/indra/newview/llvowater.cpp +++ b/indra/newview/llvowater.cpp @@ -282,6 +282,11 @@ void LLVOWater::updateSpatialExtents(LLVector4a &newMin, LLVector4a& newMax) U32 LLVOWater::getPartitionType() const { + if (mIsEdgePatch) + { + return LLViewerRegion::PARTITION_VOIDWATER; + } + return LLViewerRegion::PARTITION_WATER; } @@ -300,6 +305,7 @@ LLWaterPartition::LLWaterPartition() LLVoidWaterPartition::LLVoidWaterPartition() { + mOcclusionEnabled = FALSE; mDrawableType = LLPipeline::RENDER_TYPE_VOIDWATER; mPartitionType = LLViewerRegion::PARTITION_VOIDWATER; } diff --git a/indra/newview/llxmlrpctransaction.cpp b/indra/newview/llxmlrpctransaction.cpp index 257884d921ba1f887e45a4034c9eb1fa08429524..bd1d2ed7a7b7e325eb625a50048afcefc6239eee 100644 --- a/indra/newview/llxmlrpctransaction.cpp +++ b/indra/newview/llxmlrpctransaction.cpp @@ -394,16 +394,18 @@ bool LLXMLRPCTransaction::Impl::process() } } - const F32 MAX_PROCESSING_TIME = 0.05f; - LLTimer timer; + //const F32 MAX_PROCESSING_TIME = 0.05f; + //LLTimer timer; - while (mCurlRequest->perform() > 0) + mCurlRequest->perform(); + + /*while (mCurlRequest->perform() > 0) { if (timer.getElapsedTimeF32() >= MAX_PROCESSING_TIME) { return false; } - } + }*/ while(1) { diff --git a/indra/newview/pipeline.cpp b/indra/newview/pipeline.cpp index e74bf2a6203d46a7ab7470744806d761902e2d47..0abeed988c4c9d0a1aaf902f4f778fc2adf0073f 100644 --- a/indra/newview/pipeline.cpp +++ b/indra/newview/pipeline.cpp @@ -336,10 +336,10 @@ static const U32 gl_cube_face[] = void validate_framebuffer_object(); -void addDeferredAttachments(LLRenderTarget& target) +bool addDeferredAttachments(LLRenderTarget& target) { - target.addColorAttachment(GL_RGBA); //specular - target.addColorAttachment(GL_RGBA); //normal+z + return target.addColorAttachment(GL_RGBA) && //specular + target.addColorAttachment(GL_RGBA); //normal+z } LLPipeline::LLPipeline() : @@ -586,18 +586,61 @@ void LLPipeline::allocatePhysicsBuffer() void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) { - // remember these dimensions - mScreenWidth = resX; - mScreenHeight = resY; - - //cap samples at 4 for render targets to avoid out of memory errors U32 samples = gGLManager.getNumFBOFSAASamples(gSavedSettings.getU32("RenderFSAASamples")); if (gGLManager.mIsATI) - { //disable multisampling of render targets where ATI is involved + { //ATI doesn't like the way we use multisample texture samples = 0; } + //try to allocate screen buffers at requested resolution and samples + // - on failure, shrink number of samples and try again + // - if not multisampled, shrink resolution and try again (favor X resolution over Y) + // Make sure to call "releaseScreenBuffers" after each failure to cleanup the partially loaded state + + if (!allocateScreenBuffer(resX, resY, samples)) + { + releaseScreenBuffers(); + //reduce number of samples + while (samples > 0) + { + samples /= 2; + if (allocateScreenBuffer(resX, resY, samples)) + { //success + return; + } + releaseScreenBuffers(); + } + + //reduce resolution + while (resY > 0 && resX > 0) + { + resY /= 2; + if (allocateScreenBuffer(resX, resY, samples)) + { + return; + } + releaseScreenBuffers(); + + resX /= 2; + if (allocateScreenBuffer(resX, resY, samples)) + { + return; + } + releaseScreenBuffers(); + } + + llwarns << "Unable to allocate screen buffer at any resolution!" << llendl; + } +} + + +bool LLPipeline::allocateScreenBuffer(U32 resX, U32 resY, U32 samples) +{ + // remember these dimensions + mScreenWidth = resX; + mScreenHeight = resY; + U32 res_mod = gSavedSettings.getU32("RenderResolutionDivisor"); if (res_mod > 1 && res_mod < resX && res_mod < resY) @@ -608,7 +651,10 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) if (gSavedSettings.getBOOL("RenderUIBuffer")) { - mUIScreen.allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); + if (!mUIScreen.allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) + { + return false; + } } if (LLPipeline::sRenderDeferred) @@ -618,22 +664,22 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) bool gi = LLViewerShaderMgr::instance()->getVertexShaderLevel(LLViewerShaderMgr::SHADER_DEFERRED); //allocate deferred rendering color buffers - mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples); - mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples); - addDeferredAttachments(mDeferredScreen); + if (!mDeferredScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false; + if (!mDeferredDepth.allocate(resX, resY, 0, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false; + if (!addDeferredAttachments(mDeferredScreen)) return false; - mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples); + if (!mScreen.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE, samples)) return false; #if LL_DARWIN // As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO - mEdgeMap.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); + if (!mEdgeMap.allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false; #else - mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); + if (!mEdgeMap.allocate(resX, resY, GL_ALPHA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false; #endif if (shadow_detail > 0 || ssao) { //only need mDeferredLight[0] for shadows OR ssao - mDeferredLight[0].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE); + if (!mDeferredLight[0].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false; } else { @@ -642,7 +688,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) if (ssao) { //only need mDeferredLight[1] for ssao - mDeferredLight[1].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false); + if (!mDeferredLight[1].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false)) return false; } else { @@ -651,14 +697,14 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) if (gi) { //only need mDeferredLight[2] and mGIMapPost for gi - mDeferredLight[2].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false); + if (!mDeferredLight[2].allocate(resX, resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE, false)) return false; for (U32 i = 0; i < 2; i++) { #if LL_DARWIN // As of OS X 10.6.7, Apple doesn't support multiple color formats in a single FBO - mGIMapPost[i].allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE); + if (!mGIMapPost[i].allocate(resX,resY, GL_RGBA, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false; #else - mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE); + if (!mGIMapPost[i].allocate(resX,resY, GL_RGB, FALSE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false; #endif } } @@ -685,7 +731,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) { //allocate 4 sun shadow maps for (U32 i = 0; i < 4; i++) { - mShadow[i].allocate(U32(resX*scale),U32(resY*scale), shadow_fmt, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE); + if (!mShadow[i].allocate(U32(resX*scale),U32(resY*scale), shadow_fmt, TRUE, FALSE, LLTexUnit::TT_RECT_TEXTURE)) return false; } } else @@ -703,7 +749,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) { //allocate two spot shadow maps for (U32 i = 4; i < 6; i++) { - mShadow[i].allocate(width, height, shadow_fmt, TRUE, FALSE); + if (!mShadow[i].allocate(width, height, shadow_fmt, TRUE, FALSE)) return false; } } else @@ -716,7 +762,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) width = nhpo2(resX)/2; height = nhpo2(resY)/2; - mLuminanceMap.allocate(width,height, GL_RGBA, FALSE, FALSE); + if (!mLuminanceMap.allocate(width,height, GL_RGBA, FALSE, FALSE)) return false; } else { @@ -738,7 +784,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) mEdgeMap.release(); mLuminanceMap.release(); - mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE); + if (!mScreen.allocate(resX, resY, GL_RGBA, TRUE, TRUE, LLTexUnit::TT_RECT_TEXTURE, FALSE)) return false; } if (LLPipeline::sRenderDeferred) @@ -750,6 +796,7 @@ void LLPipeline::allocateScreenBuffer(U32 resX, U32 resY) stop_glerror(); + return true; } //static @@ -800,9 +847,23 @@ void LLPipeline::releaseGLBuffers() mWaterRef.release(); mWaterDis.release(); + + for (U32 i = 0; i < 3; i++) + { + mGlow[i].release(); + } + + releaseScreenBuffers(); + + gBumpImageList.destroyGL(); + LLVOAvatar::resetImpostors(); +} + +void LLPipeline::releaseScreenBuffers() +{ + mUIScreen.release(); mScreen.release(); mPhysicsDisplay.release(); - mUIScreen.release(); mDeferredScreen.release(); mDeferredDepth.release(); for (U32 i = 0; i < 3; i++) @@ -821,16 +882,9 @@ void LLPipeline::releaseGLBuffers() { mShadow[i].release(); } - - for (U32 i = 0; i < 3; i++) - { - mGlow[i].release(); - } - - gBumpImageList.destroyGL(); - LLVOAvatar::resetImpostors(); } + void LLPipeline::createGLBuffers() { LLMemType mt_cb(LLMemType::MTYPE_PIPELINE_CREATE_BUFFERS); @@ -1983,6 +2037,14 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl LLGLDepthTest depth(GL_TRUE, GL_FALSE); + bool bound_shader = false; + if (gPipeline.canUseVertexShaders() && LLGLSLShader::sCurBoundShader == 0) + { //if no shader is currently bound, use the occlusion shader instead of fixed function if we can + // (shadow render uses a special shader that clamps to clip planes) + bound_shader = true; + gOcclusionProgram.bind(); + } + for (LLWorld::region_list_t::const_iterator iter = LLWorld::getInstance()->getRegionList().begin(); iter != LLWorld::getInstance()->getRegionList().end(); ++iter) { @@ -2010,6 +2072,11 @@ void LLPipeline::updateCull(LLCamera& camera, LLCullResult& result, S32 water_cl } } + if (bound_shader) + { + gOcclusionProgram.unbind(); + } + camera.disableUserClipPlane(); if (hasRenderType(LLPipeline::RENDER_TYPE_SKY) && @@ -2133,7 +2200,21 @@ void LLPipeline::doOcclusion(LLCamera& camera) LLGLDepthTest depth(GL_TRUE, GL_FALSE); LLGLDisable cull(GL_CULL_FACE); + + bool bind_shader = LLGLSLShader::sNoFixedFunction && LLGLSLShader::sCurBoundShader == 0; + if (bind_shader) + { + if (LLPipeline::sShadowRender) + { + gDeferredShadowProgram.bind(); + } + else + { + gOcclusionProgram.bind(); + } + } + for (LLCullResult::sg_list_t::iterator iter = sCull->beginOcclusionGroups(); iter != sCull->endOcclusionGroups(); ++iter) { LLSpatialGroup* group = *iter; @@ -2141,6 +2222,18 @@ void LLPipeline::doOcclusion(LLCamera& camera) group->clearOcclusionState(LLSpatialGroup::ACTIVE_OCCLUSION); } + if (bind_shader) + { + if (LLPipeline::sShadowRender) + { + gDeferredShadowProgram.unbind(); + } + else + { + gOcclusionProgram.unbind(); + } + } + gGL.setColorMask(true, false); } } @@ -3249,6 +3342,11 @@ void render_hud_elements() gGL.color4f(1,1,1,1); if (!LLPipeline::sReflectionRender && gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) { + if (LLGLSLShader::sNoFixedFunction) + { + gUIProgram.bind(); + } + LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0); gViewerWindow->renderSelections(FALSE, FALSE, FALSE); // For HUD version in render_ui_3d() @@ -3262,6 +3360,10 @@ void render_hud_elements() // Render name tags. LLHUDObject::renderAll(); + if (LLGLSLShader::sNoFixedFunction) + { + gUIProgram.unbind(); + } } else if (gForceRenderLandFence) { @@ -3599,8 +3701,8 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) check_stack_depth(stack_depth); std::string msg = llformat("pass %d", i); LLGLState::checkStates(msg); - LLGLState::checkTextureChannels(msg); - LLGLState::checkClientArrays(msg); + //LLGLState::checkTextureChannels(msg); + //LLGLState::checkClientArrays(msg); } } } @@ -3638,71 +3740,64 @@ void LLPipeline::renderGeom(LLCamera& camera, BOOL forceVBOUpdate) LLVertexBuffer::unbind(); LLGLState::checkStates(); - LLGLState::checkTextureChannels(); - LLGLState::checkClientArrays(); - - - - stop_glerror(); - - LLGLState::checkStates(); - LLGLState::checkTextureChannels(); - LLGLState::checkClientArrays(); - - LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderHighlights"); - if (!sReflectionRender) + if (!LLPipeline::sImpostorRender) { - renderHighlights(); - } + LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderHighlights"); - // Contains a list of the faces of objects that are physical or - // have touch-handlers. - mHighlightFaces.clear(); + if (!sReflectionRender) + { + renderHighlights(); + } - LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderDebug"); + // Contains a list of the faces of objects that are physical or + // have touch-handlers. + mHighlightFaces.clear(); + + LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderDebug"); - renderDebug(); + renderDebug(); - LLVertexBuffer::unbind(); + LLVertexBuffer::unbind(); - if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred) - { - if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) + if (!LLPipeline::sReflectionRender && !LLPipeline::sRenderDeferred) { - // Render debugging beacons. - gObjectList.renderObjectBeacons(); - gObjectList.resetObjectBeacons(); + if (gPipeline.hasRenderDebugFeatureMask(LLPipeline::RENDER_DEBUG_FEATURE_UI)) + { + // Render debugging beacons. + gObjectList.renderObjectBeacons(); + gObjectList.resetObjectBeacons(); + } + else + { + // Make sure particle effects disappear + LLHUDObject::renderAllForTimer(); + } } else { // Make sure particle effects disappear LLHUDObject::renderAllForTimer(); } - } - else - { - // Make sure particle effects disappear - LLHUDObject::renderAllForTimer(); - } - LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd"); + LLAppViewer::instance()->pingMainloopTimeout("Pipeline:RenderGeomEnd"); - //HACK: preserve/restore matrices around HUD render - if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD)) - { - for (U32 i = 0; i < 16; i++) + //HACK: preserve/restore matrices around HUD render + if (gPipeline.hasRenderType(LLPipeline::RENDER_TYPE_HUD)) { - gGLModelView[i] = saved_modelview[i]; - gGLProjection[i] = saved_projection[i]; + for (U32 i = 0; i < 16; i++) + { + gGLModelView[i] = saved_modelview[i]; + gGLProjection[i] = saved_projection[i]; + } } } LLVertexBuffer::unbind(); LLGLState::checkStates(); - LLGLState::checkTextureChannels(); - LLGLState::checkClientArrays(); +// LLGLState::checkTextureChannels(); +// LLGLState::checkClientArrays(); } void LLPipeline::renderGeomDeferred(LLCamera& camera) @@ -3785,8 +3880,6 @@ void LLPipeline::renderGeomDeferred(LLCamera& camera) llerrs << "GL matrix stack corrupted!" << llendl; } LLGLState::checkStates(); - LLGLState::checkTextureChannels(); - LLGLState::checkClientArrays(); } } } @@ -3879,8 +3972,6 @@ void LLPipeline::renderGeomPostDeferred(LLCamera& camera) llerrs << "GL matrix stack corrupted!" << llendl; } LLGLState::checkStates(); - LLGLState::checkTextureChannels(); - LLGLState::checkClientArrays(); } } } @@ -3955,8 +4046,6 @@ void LLPipeline::renderGeomShadow(LLCamera& camera) LLVertexBuffer::unbind(); LLGLState::checkStates(); - LLGLState::checkTextureChannels(); - LLGLState::checkClientArrays(); } } else @@ -6449,30 +6538,39 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) LLGLDisable blend(GL_BLEND); - //tex unit 0 - gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_COLOR); - - gGL.getTexUnit(0)->bind(&mGlow[1]); - gGL.getTexUnit(1)->activate(); - gGL.getTexUnit(1)->enable(LLTexUnit::TT_RECT_TEXTURE); - - - //tex unit 1 - gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR); + if (LLGLSLShader::sNoFixedFunction) + { + gGlowCombineProgram.bind(); + } + else + { + //tex unit 0 + gGL.getTexUnit(0)->setTextureColorBlend(LLTexUnit::TBO_REPLACE, LLTexUnit::TBS_TEX_COLOR); + //tex unit 1 + gGL.getTexUnit(1)->setTextureColorBlend(LLTexUnit::TBO_ADD, LLTexUnit::TBS_TEX_COLOR, LLTexUnit::TBS_PREV_COLOR); + } + gGL.getTexUnit(0)->bind(&mGlow[1]); gGL.getTexUnit(1)->bind(&mScreen); - gGL.getTexUnit(1)->activate(); LLGLEnable multisample(gSavedSettings.getU32("RenderFSAASamples") > 0 ? GL_MULTISAMPLE_ARB : 0); buff->setBuffer(mask); buff->drawArrays(LLRender::TRIANGLE_STRIP, 0, 3); - gGL.getTexUnit(1)->disable(); - gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT); + if (LLGLSLShader::sNoFixedFunction) + { + gGlowCombineProgram.unbind(); + } + else + { + gGL.getTexUnit(1)->disable(); + gGL.getTexUnit(1)->setTextureBlendType(LLTexUnit::TB_MULT); - gGL.getTexUnit(0)->activate(); - gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + gGL.getTexUnit(0)->activate(); + gGL.getTexUnit(0)->setTextureBlendType(LLTexUnit::TB_MULT); + } + } if (LLRenderTarget::sUseFBO) @@ -6485,6 +6583,11 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) if (hasRenderDebugMask(LLPipeline::RENDER_DEBUG_PHYSICS_SHAPES)) { + if (LLGLSLShader::sNoFixedFunction) + { + gUIProgram.bind(); + } + gGL.setColorMask(true, false); LLVector2 tc1(0,0); @@ -6508,6 +6611,12 @@ void LLPipeline::renderBloom(BOOL for_snapshot, F32 zoom_factor, int subfield) gGL.end(); gGL.flush(); + + if (LLGLSLShader::sNoFixedFunction) + { + gUIProgram.unbind(); + } + } glMatrixMode(GL_PROJECTION); @@ -7923,7 +8032,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) static LLCullResult ref_result; - if (LLDrawPoolWater::sNeedsDistortionUpdate) + if (LLDrawPoolWater::sNeedsReflectionUpdate) { //initial sky pass (no user clip plane) { //mask out everything but the sky @@ -8063,8 +8172,6 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in) LLViewerCamera::getInstance()->setUserClipPlane(npnorm); LLGLState::checkStates(); - LLGLState::checkTextureChannels(); - LLGLState::checkClientArrays(); if (!skip_avatar_update) { @@ -8197,6 +8304,10 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera LLVertexBuffer::unbind(); { + if (!use_shader) + { //occlusion program is general purpose depth-only no-textures + gOcclusionProgram.bind(); + } LLFastTimer ftm(FTM_SHADOW_SIMPLE); LLGLDisable test(GL_ALPHA_TEST); gGL.getTexUnit(0)->disable(); @@ -8205,6 +8316,10 @@ void LLPipeline::renderShadow(glh::matrix4f& view, glh::matrix4f& proj, LLCamera renderObjects(types[i], LLVertexBuffer::MAP_VERTEX, FALSE); } gGL.getTexUnit(0)->enable(LLTexUnit::TT_TEXTURE); + if (!use_shader) + { + gOcclusionProgram.unbind(); + } } if (use_shader) diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h index e9da25e544b93e9d686e5c90300be610b6021a83..28e6526acd960dc761e6cc3644798f736e6945d0 100644 --- a/indra/newview/pipeline.h +++ b/indra/newview/pipeline.h @@ -113,9 +113,11 @@ class LLPipeline void resetVertexBuffers(); void resizeScreenTexture(); void releaseGLBuffers(); + void releaseScreenBuffers(); void createGLBuffers(); void allocateScreenBuffer(U32 resX, U32 resY); + bool allocateScreenBuffer(U32 resX, U32 resY, U32 samples); void allocatePhysicsBuffer(); void resetVertexBuffers(LLDrawable* drawable); diff --git a/indra/newview/skins/default/xui/da/notifications.xml b/indra/newview/skins/default/xui/da/notifications.xml index 4c0fbd280b394d26eb33bb1695ca6853d5c6e27b..c3999501eb8852e41d6a9264000b97f6aa3fea2c 100644 --- a/indra/newview/skins/default/xui/da/notifications.xml +++ b/indra/newview/skins/default/xui/da/notifications.xml @@ -454,6 +454,7 @@ Købsprisen for dette land er ikke refunderet til ejeren. Hvis en dedikeret parv Dediker disse [AREA] m² land til gruppen '[GROUP_NAME]'? </notification> <notification name="ErrorMessage"> + [ERROR_MESSAGE] <usetemplate name="okbutton" yestext="OK"/> </notification> <notification name="AvatarMovedDesired"> diff --git a/indra/newview/skins/default/xui/da/panel_places.xml b/indra/newview/skins/default/xui/da/panel_places.xml index fe8ca69f344d2f384c2691f3f01a2592448de23f..c555f2fb0943d9d93593694bc552f8bf12962cb9 100644 --- a/indra/newview/skins/default/xui/da/panel_places.xml +++ b/indra/newview/skins/default/xui/da/panel_places.xml @@ -24,7 +24,7 @@ <menu_button label="â–¼" name="overflow_btn" tool_tip="Vis flere valg"/> </layout_panel> </layout_stack> - <layout_stack name="bottom_bar_ls3"> + <layout_stack name="bottom_bar_profile_ls"> <layout_panel name="profile_btn_lp"> <button label="Profil" name="profile_btn" tool_tip="Vis profil for sted"/> </layout_panel> 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 f0fa4386d2770ea370cb64c17cd4372ceeeb001b..c65dc5f41d6ad981c9c1bb8709d5345ac284682c 100644 --- a/indra/newview/skins/default/xui/de/floater_about_land.xml +++ b/indra/newview/skins/default/xui/de/floater_about_land.xml @@ -133,12 +133,12 @@ 0 </text> <button label="Land kaufen" label_selected="Land kaufen..." name="Buy Land..."/> + <button label="Linden-Verkauf" label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/> <button label="Skriptinfo" name="Scripts..."/> <button label="Für Gruppe kaufen" label_selected="Für Gruppe kaufen..." name="Buy For Group..."/> <button label="Pass kaufen" label_selected="Pass kaufen..." name="Buy Pass..." tool_tip="Ein Pass gibt Ihnen zeitbegrenzten Zugang zu diesem Land."/> <button label="Land aufgeben" label_selected="Land aufgeben..." name="Abandon Land..."/> <button label="Land in Besitz nehmen" label_selected="Land in Besitz nehmen..." name="Reclaim Land..."/> - <button label="Linden-Verkauf" label_selected="Linden-Verkauf..." name="Linden Sale..." tool_tip="Land muss Eigentum und auf Inhalt gesetzt sein und nicht zur Auktion stehen."/> </panel> <panel label="VERTRAG" name="land_covenant_panel"> <panel.string name="can_resell"> @@ -309,6 +309,9 @@ Nur große Parzellen können in der Suche aufgeführt werden. <panel.string name="push_restrict_region_text"> Kein Stoßen (regional) </panel.string> + <panel.string name="see_avs_text"> + Auf dieser Parzelle Einwohner sehen und mit ihnen chatten + </panel.string> <text name="allow_label"> Anderen Einwohnern gestatten: </text> @@ -371,6 +374,10 @@ Nur große Parzellen können in der Suche aufgeführt werden. Foto: </text> <texture_picker label="" name="snapshot_ctrl" tool_tip="Klicken Sie hier, um ein Bild auszuwählen"/> + <text name="allow_label5"> + Einwohnern auf anderen Parzellen Folgendes gestatten: + </text> + <check_box label="Avatare sehen" name="SeeAvatarsCheck" tool_tip="Gestattet sowohl Einwohnern auf anderen Parzellen, Einwohner auf dieser Parzelle zu sehen und mit ihnen zu chatten, als auch Ihnen, diese Einwohner auf anderen Parzellen zu sehen und mit ihnen zu chatten."/> <text name="landing_point"> Landepunkt: [LANDING] </text> @@ -427,6 +434,11 @@ Nur große Parzellen können in der Suche aufgeführt werden. Sound: </text> <check_box label="Gesten- und Objektgeräusche auf diese Parzelle beschränken" name="check sound local"/> + <text name="Avatar Sounds:"> + Avatarsounds: + </text> + <check_box label="Jeder" name="all av sound check"/> + <check_box label="Gruppe" name="group av sound check"/> <text name="Voice settings:"> Voice: </text> diff --git a/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..c92471652330929ff6acb91d3902352d40bb1496 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_delete_env_preset.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<floater name="Delete Env Preset" title="UMGEB.VOREINST. LÖSCHEN"> + <string name="title_water"> + Wasser-Voreinstellung löschen + </string> + <string name="title_sky"> + Hilmmel-Voreinstellung löschen + </string> + <string name="title_day_cycle"> + Tageszyklus löschen + </string> + <string name="label_water"> + Voreinstellung: + </string> + <string name="label_sky"> + Voreinstellung: + </string> + <string name="label_day_cycle"> + Tageszyklus: + </string> + <string name="msg_confirm_deletion"> + Möchten Sie die ausgewählte Voreinstellung wirklich löschen? + </string> + <string name="msg_sky_is_referenced"> + Eine Voreinstellung, auf die sich ein Tageszyklus bezieht, kann nicht gelöscht werden. + </string> + <string name="combo_label"> + -Voreinstellung auswählen- + </string> + <text name="label"> + Voreinstellung: + </text> + <button label="Löschen" name="delete"/> + <button label="Abbrechen" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml new file mode 100644 index 0000000000000000000000000000000000000000..8b29428c24106c1da6e13f8d3a23aeb8810754d7 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_edit_day_cycle.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Day cycle" title="Tageszyklus bearbeiten"> + <string name="title_new"> + Neuen Tageszyklus erstellen + </string> + <string name="title_edit"> + Tageszyklus bearbeiten + </string> + <string name="hint_new"> + Geben Sie einen Namen für den Tageszyklus ein, passen Sie die Steuerungen an, um den Tageszyklus zu erstellen, und klicken Sie auf „Speichern“. + </string> + <string name="hint_edit"> + Um den Tageszyklus zu bearbeiten, passen Sie die Steuerungen unten an und klicken Sie auf „Speichern“. + </string> + <string name="combo_label"> + -Voreinstellung auswählen- + </string> + <text name="label"> + Name der Voreinstellung: + </text> + <text name="note"> + Hinweis: Wenn Sie den Namen Ihrer Voreinstellung ändern, entsteht eine neue Voreinstellung; die vorhandene Voreinstellung wird nicht geändert. + </text> + <text name="hint_item1"> + - Klicken Sie auf eine Registerkarte, um die Himmeleinstellungen und die Uhrzeit zu bearbeiten. + </text> + <text name="hint_item2"> + - Klicken und ziehen Sie die Registerkarten, um die Ãœbergangszeiten einzustellen. + </text> + <text name="hint_item3"> + - Anhand des Scrubbers können Sie eine Vorschau Ihres Tageszyklus anzeigen. + </text> + <panel name="day_cycle_slider_panel"> + <multi_slider initial_value="0" name="WLTimeSlider"/> + <multi_slider initial_value="0" name="WLDayCycleKeys"/> + <button label="Schlüssel hinzufügen" label_selected="Schlüssel hinzufügen" name="WLAddKey"/> + <button label="Schlüssel löschen" label_selected="Schlüssel löschen" name="WLDeleteKey"/> + <text name="WL12am"> + 0:00 + </text> + <text name="WL3am"> + 3:00 + </text> + <text name="WL6am"> + 6:00 + </text> + <text name="WL9amHash"> + 9:00 + </text> + <text name="WL12pmHash"> + 12:00 + </text> + <text name="WL3pm"> + 15:00 + </text> + <text name="WL6pm"> + 18:00 + </text> + <text name="WL9pm"> + 21:00 + </text> + <text name="WL12am2"> + 0:00 + </text> + <text name="WL12amHash"> + | + </text> + <text name="WL3amHash"> + I + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL9amHash2"> + I + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL3pmHash"> + I + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL9pmHash"> + I + </text> + <text name="WL12amHash2"> + | + </text> + </panel> + <text name="WLCurKeyPresetText"> + Himmeleinstellung: + </text> + <combo_box label="Voreinstellung" name="WLSkyPresets"/> + <text name="WLCurKeyTimeText"> + Uhrzeit: + </text> + <time name="time" value="6:00"/> + <check_box label="Zu meinem neuen Tageszyklus machen" name="make_default_cb"/> + <button label="Speichern" name="save"/> + <button label="Abbrechen" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..ea4c5f7ebc2c1d5ba061dde7e68d84cf14c4c9e9 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_edit_sky_preset.xml @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Sky Preset" title="Himmel-Voreinstellung bearbeiten"> + <string name="title_new"> + Neue Himmel-Voreinstellung erstellen + </string> + <string name="title_edit"> + Himmel-Voreinstellung bearbeiten + </string> + <string name="hint_new"> + Geben Sie einen Namen für die Voreinstellung ein, passen Sie die Steuerungen an, um die Voreinstellung zu erstellen, und klicken Sie dann auf „Speichern“. + </string> + <string name="hint_edit"> + Um Ihre Himmel-Voreinstellung zu bearbeiten, passen Sie die Steuerungen an und klicken Sie auf „Speichern“. + </string> + <string name="combo_label"> + -Voreinstellung auswählen- + </string> + <text name="hint"> + Um Ihre Voreinstellung zu bearbeiten, passen Sie die Steuerungen an und klicken Sie auf „Speichern“. + </text> + <text name="label"> + Name der Voreinstellung: + </text> + <text name="note"> + Hinweis: Wenn Sie den Namen Ihrer Voreinstellung ändern, entsteht eine neue Voreinstellung; die vorhandene Voreinstellung wird nicht geändert. + </text> + <tab_container name="WindLight Tabs"> + <panel label="ATMOSPHÄRE" name="Atmosphere"> + <text name="BHText"> + Blauer Horizont + </text> + <text name="BDensText"> + Horizonttrübung + </text> + <text name="BDensText2"> + Farbintensität + </text> + <text name="HDText"> + Trübungsintensität + </text> + <text name="DensMultText"> + Dichtemultiplikator + </text> + <text name="WLDistanceMultText"> + Entfernungsmultiplikator + </text> + <text name="MaxAltText"> + Max. Höhe + </text> + </panel> + <panel label="BELEUCHTUNG" name="Lighting"> + <text name="SLCText"> + Sonne/Mond-Farbe + </text> + <text name="WLAmbientText"> + Umgebung + </text> + <text name="SunGlowText"> + Sonnenleuchtkraft + </text> + <slider label="Fokus" name="WLGlowB"/> + <slider label="Größe" name="WLGlowR"/> + <text name="WLStarText"> + Sternenleuchtkraft + </text> + <text name="SceneGammaText"> + Gamma in Szene + </text> + <text name="TODText"> + Sonne/Mond-Stand + </text> + <multi_slider initial_value="0" name="WLSunPos"/> + <text name="WL12amHash"> + | + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL12amHash2"> + | + </text> + <text name="WL12am"> + 0:00 + </text> + <text name="WL6am"> + 3:00 + </text> + <text name="WL12pmHash"> + 12:00 + </text> + <text name="WL6pm"> + 18:00 + </text> + <text name="WL12am2"> + 0:00 + </text> + <time name="WLDayTime" value="6:00"/> + <text name="WLEastAngleText"> + Ostausrichtung + </text> + </panel> + <panel label="WOLKEN" name="Clouds"> + <text name="WLCloudColorText"> + Wolkenfarbe + </text> + <text name="WLCloudColorText2"> + Wolken-XY/Dichte + </text> + <slider label="X" name="WLCloudX"/> + <slider label="Y" name="WLCloudY"/> + <slider label="D" name="WLCloudDensity"/> + <text name="WLCloudCoverageText"> + Wolkendichte + </text> + <text name="WLCloudScaleText"> + Wolkenskalierung + </text> + <text name="WLCloudDetailText"> + Wolkendetails (XY/Dichte) + </text> + <slider label="X" name="WLCloudDetailX"/> + <slider label="Y" name="WLCloudDetailY"/> + <slider label="D" name="WLCloudDetailDensity"/> + <text name="WLCloudScrollXText"> + Wolkenbewegung X + </text> + <check_box label="Sperren" name="WLCloudLockX"/> + <text name="WLCloudScrollYText"> + Wolkenbewegung Y + </text> + <check_box label="Sperren" name="WLCloudLockY"/> + </panel> + </tab_container> + <check_box label="Diese Voreinstellung zu meiner neuen Himmeleinstellung machen" name="make_default_cb"/> + <button label="Speichern" name="save"/> + <button label="Abbrechen" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b9d5e7d7789d0f4cdd024e83be0ce6b9e004fef --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_edit_water_preset.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Water Preset" title="Wasser-Voreinstellung bearbeiten"> + <string name="title_new"> + Neue Wasser-Voreinstellung erstellen + </string> + <string name="title_edit"> + Wasser-Voreinstellung bearbeiten + </string> + <string name="hint_new"> + Geben Sie einen Namen für die Voreinstellung ein, passen Sie die Steuerungen an, um die Voreinstellung zu erstellen, und klicken Sie dann auf „Speichern“. + </string> + <string name="hint_edit"> + Um Ihre Wasser-Voreinstellung zu bearbeiten, passen Sie die Steuerungen an und klicken Sie auf „Speichern“. + </string> + <string name="combo_label"> + -Voreinstellung auswählen- + </string> + <text name="hint"> + Um Ihre Voreinstellung zu bearbeiten, passen Sie die Steuerungen an und klicken Sie auf „Speichern“. + </text> + <text name="label"> + Name der Voreinstellung: + </text> + <text name="note"> + Hinweis: Wenn Sie den Namen Ihrer Voreinstellung ändern, entsteht eine neue Voreinstellung; die vorhandene Voreinstellung wird nicht geändert. + </text> + <panel name="panel_water_preset"> + <text name="water_color_label"> + Trübungsfarbe + </text> + <text name="water_fog_density_label"> + Exponent für Trübungsdichte + </text> + <text name="underwater_fog_modifier_label"> + Modifikator für Wassertrübung + </text> + <text name="BHText"> + Richtung für große Wellen + </text> + <slider label="X" name="WaterWave1DirX"/> + <slider label="Y" name="WaterWave1DirY"/> + <text name="BDensText"> + Reflexionswellengröße + </text> + <text name="HDText"> + Fresnel-Skalierung + </text> + <text name="FresnelOffsetText"> + Fresnel-Versatz + </text> + <text name="BHText2"> + Richtung für kleine Wellen + </text> + <slider label="X" name="WaterWave2DirX"/> + <slider label="Y" name="WaterWave2DirY"/> + <text name="DensMultText"> + Brechungsstärke oben + </text> + <text name="WaterScaleBelowText"> + Brechungsstärke unten + </text> + <text name="MaxAltText"> + Mischungsmultiplikator + </text> + <text name="BHText3"> + Normal-Map + </text> + </panel> + <check_box label="Diese Voreinstellung zu meiner neuen Wassereinstellung machen" name="make_default_cb"/> + <button label="Speichern" name="save"/> + <button label="Abbrechen" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_environment_settings.xml b/indra/newview/skins/default/xui/de/floater_environment_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..946416980a001969d1eb4fba53048fe26ecd06e9 --- /dev/null +++ b/indra/newview/skins/default/xui/de/floater_environment_settings.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Environment Editor Floater" title="UMGEBUNGSEINSTELLUNGEN"> + <text name="note"> + Anhand der Optionen unten können Sie die Umgebungseinstellungen für Ihren Viewer anpassen. + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Regionseinstellungen verwenden" name="use_region_settings"/> + <radio_item label="Meine Umgebung anpassen" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="note"> + Hinweis: Ihre benutzerdefinierten Einstellungen sind für andere Benutzer nicht sichtbar. + </text> + <text name="water_settings_title"> + Wassereinstellung + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="-Voreinstellung auswählen-" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + Himmel / Tageszyklus + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="Fester Himmel" name="my_sky_settings"/> + <radio_item label="Tageszyklus" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="-Voreinstellung auswählen-" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="-Voreinstellung auswählen-" name="item0"/> + </combo_box> + </panel> + <button label="OK" name="ok_btn"/> + <button label="Abbrechen" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/de/floater_model_preview.xml b/indra/newview/skins/default/xui/de/floater_model_preview.xml index 83c51132ee2128b18d318bbe05fc60a136fda9af..24e2788e0baa220a80946f8ea96f1ed50e3ec796 100644 --- a/indra/newview/skins/default/xui/de/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/de/floater_model_preview.xml @@ -3,6 +3,9 @@ <string name="status_idle"> Inaktiv </string> + <string name="status_parse_error"> + DAE-Parsing-Fehler. Details siehe Protokoll. + </string> <string name="status_reading_file"> Laden... </string> @@ -12,6 +15,9 @@ <string name="status_vertex_number_overflow"> Fehler: Anzahl von Vertices überschreitet 65534. Operation abgebrochen. </string> + <string name="bad_element"> + Fehler: ungültiges Element. + </string> <string name="high"> Hoch </string> diff --git a/indra/newview/skins/default/xui/de/floater_model_wizard.xml b/indra/newview/skins/default/xui/de/floater_model_wizard.xml index 2c7b45906e9353732a930334c7f01091e5752c03..618b60e0ec8aa3aa15d0ebeef6b42b265d8a8145 100644 --- a/indra/newview/skins/default/xui/de/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/de/floater_model_wizard.xml @@ -193,6 +193,9 @@ <string name="status_idle"> Inaktiv </string> + <string name="status_parse_error"> + DAE-Parsing-Fehler. Details siehe Protokoll. + </string> <string name="status_reading_file"> Laden... </string> @@ -202,6 +205,9 @@ <string name="status_vertex_number_overflow"> Fehler: Anzahl von Vertices überschreitet 65534. Operation abgebrochen. </string> + <string name="bad_element"> + Fehler: ungültiges Element. + </string> <string name="high"> Hoch </string> diff --git a/indra/newview/skins/default/xui/de/floater_tools.xml b/indra/newview/skins/default/xui/de/floater_tools.xml index 338b6093436983cc6816fdadb64d18ecc4af2aa4..00f983b77c357af0ac15f0f545750b17b9d710ee 100644 --- a/indra/newview/skins/default/xui/de/floater_tools.xml +++ b/indra/newview/skins/default/xui/de/floater_tools.xml @@ -66,7 +66,7 @@ <check_box label="Verknüpfte Teile bearbeiten" name="checkbox edit linked parts"/> <button label="Link" name="link_btn" width="30"/> <button label="Verknüpfung auflösen" name="unlink_btn" width="126"/> - <text name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt" left_pad="0"> + <text left_pad="0" name="RenderingCost" tool_tip="Zeigt die errechneten Wiedergabekosten für dieses Objekt"> þ: [COUNT] </text> <check_box label="" name="checkbox uniform"/> @@ -408,7 +408,7 @@ </combo_box> <spinner label="Schwerkraft" name="Physics Gravity"/> <spinner label="Reibung" name="Physics Friction"/> - <spinner label="Dichte" name="Physics Density"/> + <spinner label="Dichte in 100 kg/m^3" name="Physics Density"/> <spinner label="Restitution" name="Physics Restitution"/> </panel> <panel label="Textur" name="Texture"> diff --git a/indra/newview/skins/default/xui/de/menu_login.xml b/indra/newview/skins/default/xui/de/menu_login.xml index a373e15338cfbf48542d28af416d46d167ffc902..d932234cd1b03a7529cb9709f38ce76410f4882b 100644 --- a/indra/newview/skins/default/xui/de/menu_login.xml +++ b/indra/newview/skins/default/xui/de/menu_login.xml @@ -18,7 +18,7 @@ <menu_item_call label="Servicebedingungen anzeigen" name="TOS"/> <menu_item_call label="Wichtige Meldung anzeigen" name="Critical"/> <menu_item_call label="Test Medienbrowser" name="Web Browser Test"/> - <menu_item_call label="Test Webinhalt-Floater" name="Web Content Floater Test"/> + <menu_item_call label="Web Content Floater Debug Test" name="Web Content Floater Debug Test"/> <menu_item_check label="Grid-Auswahl anzeigen" name="Show Grid Picker"/> <menu_item_call label="Benachrichtigungs-Konsole anzeigen" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml index 0f252ab46d977ce46c7796b7e48b4dd47c97c9cd..a001544f3eded006859967d499fe962e19c7542f 100644 --- a/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/de/menu_people_nearby_view_sort.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="menu_group_plus"> +<toggleable_menu name="menu_group_plus"> <menu_item_check label="Nach letzten Sprechern sortieren" name="sort_by_recent_speakers"/> <menu_item_check label="Nach Name sortieren" name="sort_name"/> <menu_item_check label="Nach Entfernung sortieren" name="sort_distance"/> <menu_item_check label="Symbole für Personen anzeigen" name="view_icons"/> + <menu_item_check label="Karte anzeigen" name="view_map"/> <menu_item_call label="Ignorierte Einwohner & Objekte anzeigen" name="show_blocked_list"/> -</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 05f9f94c8af7f57667340b53ed0a9a3d892b122f..de4c269be68d510851bd5601e819f145994ba61c 100644 --- a/indra/newview/skins/default/xui/de/menu_viewer.xml +++ b/indra/newview/skins/default/xui/de/menu_viewer.xml @@ -31,6 +31,7 @@ <menu_item_call label="Meine Gruppen" name="My Groups"/> <menu_item_check label="Chat in der Nähe" name="Nearby Chat"/> <menu_item_call label="Leute in der Nähe" name="Active Speakers"/> + <menu_item_check label="Stimme in der Nähe" name="Nearby Voice"/> </menu> <menu label="Welt" name="World"> <menu_item_check label="Minikarte" name="Mini-Map"/> @@ -63,8 +64,24 @@ <menu_item_call label="Mittag" name="Noon"/> <menu_item_call label="Sonnenuntergang" name="Sunset"/> <menu_item_call label="Mitternacht" name="Midnight"/> - <menu_item_call label="Grundbesitzzeit" name="Revert to Region Default"/> - <menu_item_call label="Umwelt-Editor" name="Environment Editor"/> + </menu> + <menu label="Umgebungs-Editor" name="Enviroment Editor"> + <menu_item_call label="Umgebungseinstellungen..." name="Enviroment Settings"/> + <menu label="Wasser-Voreinstellungen" name="Water Presets"> + <menu_item_call label="Neue Voreinstellung..." name="new_water_preset"/> + <menu_item_call label="Voreinstellung bearbeiten..." name="edit_water_preset"/> + <menu_item_call label="Voreinstellung löschen..." name="delete_water_preset"/> + </menu> + <menu label="Himmel-Voreinstellungen" name="Sky Presets"> + <menu_item_call label="Neue Voreinstellung..." name="new_sky_preset"/> + <menu_item_call label="Voreinstellung bearbeiten..." name="edit_sky_preset"/> + <menu_item_call label="Voreinstellung löschen..." name="delete_sky_preset"/> + </menu> + <menu label="Tag-Voreinstellungen" name="Day Presets"> + <menu_item_call label="Neue Voreinstellung..." name="new_day_preset"/> + <menu_item_call label="Voreinstellung bearbeiten..." name="edit_day_preset"/> + <menu_item_call label="Voreinstellung löschen..." name="delete_day_preset"/> + </menu> </menu> </menu> <menu label="Bauen" name="BuildTools"> diff --git a/indra/newview/skins/default/xui/de/menu_wearing_gear.xml b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml index 80d4ff4d9fa0ff1a33604ccb928f53afb5ed8701..dacf898b6a4231578cdade8cd38a556c931f97c0 100644 --- a/indra/newview/skins/default/xui/de/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/de/menu_wearing_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Gear Wearing"> +<toggleable_menu name="Gear Wearing"> <menu_item_call label="Outfit bearbeiten" name="edit"/> <menu_item_call label="Ausziehen" name="takeoff"/> -</menu> + <menu_item_call label="Outfitliste in Zwischenablage kopieren" name="copy"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/de/notifications.xml b/indra/newview/skins/default/xui/de/notifications.xml index 75f26c6990a246dc364cf850b81076ee9a5f3009..05e47cd31a3c96002d7ed7d58be56b3bd293c37b 100644 --- a/indra/newview/skins/default/xui/de/notifications.xml +++ b/indra/newview/skins/default/xui/de/notifications.xml @@ -1565,6 +1565,11 @@ Versuchen Sie es später erneut. <button name="Cancel" text="Abbrechen"/> </form> </notification> + <notification name="TooManyTeleportOffers"> + Sie haben versucht, [OFFERS] Teleport-Angebote zu machen, +womit Sie die Höchstgrenze von [LIMIT] überschreiten. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OfferTeleportFromGod"> Einwohner zu Ihrem Standort einladen? <form name="form"> @@ -1986,6 +1991,10 @@ Möchten Sie den Bechäftigt-Modus verlassen, bevor Sie diese Transaktion abschl Sind Sie sicher, dass Sie Ihren Reise-, Internet- und Suchverlauf löschen möchten? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> </notification> + <notification name="ConfirmClearCache"> + Möchten Sie Ihren Viewer-Cache wirklich leeren? + <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="OK"/> + </notification> <notification name="ConfirmClearCookies"> Sind Sie sicher, dass Sie Ihre Cookies löschen möchten? <usetemplate name="okcancelbuttons" notext="Abbrechen" yestext="Ja"/> @@ -2011,48 +2020,30 @@ Von einer Webseite zu diesem Formular linken, um anderen leichten Zugang zu dies Die gespeicherte Voreinstellung überschreiben? <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> </notification> - <notification name="WLDeletePresetAlert"> - [SKY] löschen? - <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> - </notification> <notification name="WLNoEditDefault"> Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden. </notification> <notification name="WLMissingSky"> Diese Tageszyklusdatei verweist auf eine fehlende Himmel-Datei: [SKY]. </notification> - <notification name="PPSaveEffectAlert"> - Post-Processing-Effekt bereits vorhanden. Möchten Sie ihn überschreiben? - <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> - </notification> - <notification name="NewSkyPreset"> - Wählen Sie einen Namen für den neuen Himmel. - <form name="form"> - <input name="message"> - Neue Voreinstellung - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Abbrechen"/> - </form> + <notification name="WLRegionApplyFail"> + Die Einstellungen konnten nicht auf die Region angewendet werden. Verlassen Sie die Region und kehren Sie zurück, um das Problem zu beheben. Angegebener Grund: [FAIL_REASON] </notification> - <notification name="ExistsSkyPresetAlert"> - Voreinstellung bereits vorhanden! + <notification name="EnvCannotDeleteLastDayCycleKey"> + Der letzte Schlüssel in diesem Tageszyklus kann nicht gelöscht werden, da ein Tageszyklus nicht leer sein kann. Statt den letzten verbleibenden Schlüssel zu löschen, versuchen Sie stattdessen, ihn zu modifizieren und dann einen neuen zu erstellen. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="NewWaterPreset"> - Wählen Sie einen Namen für die neue Wasservoreinstellung. - <form name="form"> - <input name="message"> - Neue Voreinstellung - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Abbrechen"/> - </form> + <notification name="DayCycleTooManyKeyframes"> + Sie können diesem Tageszyklus keine Keyframes mehr hinzufügen. Die Höchstzahl an Keyframes für Tageszyklen mit Umfang [SCOPE] beträgt [MAX]. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="ExistsWaterPresetAlert"> - Voreinstellung bereits vorhanden! + <notification name="EnvUpdateRate"> + Sie können die Umgebungseinstellungen der Region nur alle [WAIT] Sekunden aktualisieren. Warten Sie mindestens so lange und versuchen Sie es dann erneut. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="WaterNoEditDefault"> - Standardvoreinstellungen können nicht bearbeitet oder gelöscht werden. + <notification name="PPSaveEffectAlert"> + Post-Processing-Effekt bereits vorhanden. Möchten Sie ihn überschreiben? + <usetemplate name="okcancelbuttons" notext="Nein" yestext="Ja"/> </notification> <notification name="ChatterBoxSessionStartError"> Neue Chat-Sitzung mit [RECIPIENT] konnte nicht gestartet werden. @@ -2343,6 +2334,9 @@ Fliegen ist hier nicht möglich. <notification name="NoBuild"> In diesem Bereich ist das Bauen deaktiviert. Sie können keine Objekte bauen oder rezzen. </notification> + <notification name="SeeAvatars"> + Diese Parzelle verbirgt Avatare und Text-Chat vor einer anderen Parzelle. Sie können Einwohner außerhalb dieser Parzelle weder sehen noch von ihnen gesehen werden. Regulärer Text-Chat auf Kanal 0 ist ebenfalls blockiert. + </notification> <notification name="ScriptsStopped"> Ein Administrator hat die Skriptausführung in dieser Region vorübergehend deaktiviert. </notification> @@ -2771,7 +2765,9 @@ 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="MeshUploadError"> - [LABEL] konnte nicht hochgeladen werden: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + [LABEL] konnte nicht hochgeladen werden: [MESSAGE] [IDENTIFIER] + +Details finden Sie in der Protokolldatei. </notification> <notification name="ShareItemsConfirmation"> Möchten Sie wirklich die folgenden Objekte: diff --git a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml index 632f414747c9570165c465cfdc95c4c59800c7fb..1af0492aa165beedee93b9d37903d6251e66fdd7 100644 --- a/indra/newview/skins/default/xui/de/panel_outfit_edit.xml +++ b/indra/newview/skins/default/xui/de/panel_outfit_edit.xml @@ -46,8 +46,8 @@ </panel> <panel name="save_revert_button_bar"> <layout_stack name="button_bar_ls"> - <layout_panel name="save_btn_lp"> - <button label="Speichern" name="save_btn"/> + <layout_panel name="save_btn_lp" width="61"> + <button label="Speichern" name="save_btn" width="60" /> </layout_panel> <layout_panel name="revert_btn_lp"> <button label="Änderungen rückgängig machen" name="revert_btn" tool_tip="Zur zuletzt gespeicherten Version zurückkehren"/> diff --git a/indra/newview/skins/default/xui/de/panel_outfits_list.xml b/indra/newview/skins/default/xui/de/panel_outfits_list.xml index 65a38ea34245c8f0e8cee63fd726181eeccef9e7..ea3a938be99fe0a192827d2d787ff45f8125a711 100644 --- a/indra/newview/skins/default/xui/de/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/de/panel_outfits_list.xml @@ -1,7 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Outfits"> + <accordion name="outfits_accordion"> + <no_matched_tabs_text name="no_matched_outfits_msg" value="Sie haben nicht das Richtige gefunden? Versuchen Sie es mit der [secondlife:///app/search/all/[SEARCH_TERM] Suche]."/> + <no_visible_tabs_text name="no_outfits_msg" value="Sie haben noch keine Outfits. Versuchen Sie es mit der [secondlife:///app/search/all/ ] Suche]."/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> + <menu_button name="options_gear_btn" tool_tip="Zusätzliche Optionen anzeigen"/> <button name="trash_btn" tool_tip="Ausgewähltes Outfit löschen"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_people.xml b/indra/newview/skins/default/xui/de/panel_people.xml index 63a832a16555790e12363d895d317b51ce965282..4e76147746ca34a78eedc5ea33e116f6b3b4dea7 100644 --- a/indra/newview/skins/default/xui/de/panel_people.xml +++ b/indra/newview/skins/default/xui/de/panel_people.xml @@ -67,13 +67,13 @@ Sie suchen nach Leuten? Verwenden Sie die [secondlife:///app/worldmap Karte]. <button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/> </layout_panel> <layout_panel name="im_btn_lp"> - <button label="IM" name="im_btn" tool_tip="Instant Messenger öffnen"/> + <button label="IM" name="im_btn" tool_tip="IM-Sitzung öffnen"/> </layout_panel> <layout_panel name="call_btn_lp"> <button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/> </layout_panel> <layout_panel name="share_btn_lp"> - <button label="Teilen" name="share_btn" tool_tip="Inventarobjekt teilen"/> + <button label="Freigeben" name="share_btn" tool_tip="Inventarobjekt freigeben"/> </layout_panel> <layout_panel name="teleport_btn_lp"> <button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/> diff --git a/indra/newview/skins/default/xui/de/panel_place_profile.xml b/indra/newview/skins/default/xui/de/panel_place_profile.xml index 555fa56d577e81b38b56c1dc1ea6642afb9169c2..4077fdab360ee1e605c94f8238fa935ca2b84610 100644 --- a/indra/newview/skins/default/xui/de/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/de/panel_place_profile.xml @@ -68,6 +68,8 @@ <text name="scripts_value" value="Ein"/> <text name="damage_label" value="Schaden:"/> <text name="damage_value" value="Aus"/> + <text name="see_avatars_label" value="Avatare sehen:"/> + <text name="see_avatars_value" value="Aus"/> <button label="Ãœber Land" name="about_land_btn"/> </panel> </accordion_tab> diff --git a/indra/newview/skins/default/xui/de/panel_places.xml b/indra/newview/skins/default/xui/de/panel_places.xml index 36c77d4fe1023747b71a4136b805927e48709187..602ffff94d42763e29ba2decd58b9f0071685fe9 100644 --- a/indra/newview/skins/default/xui/de/panel_places.xml +++ b/indra/newview/skins/default/xui/de/panel_places.xml @@ -24,7 +24,7 @@ <menu_button label="â–¼" name="overflow_btn" tool_tip="Zusätzliche Optionen anzeigen"/> </layout_panel> </layout_stack> - <layout_stack name="bottom_bar_ls3"> + <layout_stack name="bottom_bar_profile_ls"> <layout_panel name="profile_btn_lp"> <button label="Profil" name="profile_btn" tool_tip="Ortsprofil anzeigen"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml index 0a596f2b2536b22b4abc47c109f9d31c3a2572b0..8a5c175f2fcdd38b8b1c88803d8862545e27cff7 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_advanced.xml @@ -3,6 +3,19 @@ <panel.string name="aspect_ratio_text"> [NUM]:[DEN] </panel.string> + <text name="Cache:"> + Cache: + </text> + <spinner label="Cache-Größe (64 – 9.984 MB)" name="cachesizespinner"/> + <text name="text_box5"> + MB + </text> + <button label="Cache leeren" label_selected="Cache leeren" name="clear_cache"/> + <text name="Cache location"> + Cache-Ordner: + </text> + <button label="Durchsuchen" label_selected="Durchsuchen" name="set_cache"/> + <button label="Vorgabestandort" label_selected="Vorgabestandort" name="default_cache_location"/> <text name="UI Size:"> UI-Größe: </text> diff --git a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml index c118e4e4dd21a51f7935749b3931b0acfe91cb50..1e6a03c99f3b5456a14ac750b6104a3bae6f3053 100644 --- a/indra/newview/skins/default/xui/de/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/de/panel_preferences_sound.xml @@ -19,6 +19,7 @@ <check_box label="Aktiviert" name="enable_voice_check"/> <check_box label="Automatische Wiedergabe zulassen" name="media_auto_play_btn" tool_tip="Hier aktivieren, um Medien automatisch wiederzugeben." value="true"/> <check_box label="Medien, die an andere Avatare angehängt sind, wiedergeben." name="media_show_on_others_btn" tool_tip="Diese Option deaktivieren, um Medien für andere Avataren, die sich in der Nähe befinden, auszublenden." value="true"/> + <check_box label="Sounds von Gesten abspielen" name="gesture_audio_play_btn" tool_tip="Markieren, um Sounds von Gesten zu hören" value="true"/> <text name="voice_chat_settings"> Voice-Chat-Einstellungen </text> @@ -35,28 +36,5 @@ <button label="Taste festlegen" name="set_voice_hotkey_button"/> <button name="set_voice_middlemouse_button" tool_tip="Auf mittlere Maustaste zurücksetzen"/> <button label="Eingabe-/Ausgabegeräte" name="device_settings_btn"/> - <panel label="Geräte-Einstellungen" name="device_settings_panel"> - <panel.string name="default_text"> - Standard - </panel.string> - <panel.string name="default system device"> - Standardgerät - </panel.string> - <panel.string name="no device"> - Kein Gerät - </panel.string> - <text name="Input"> - Eingabe - </text> - <text name="My volume label"> - Meine Lautstärke: - </text> - <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Ändern Sie die Lautstärke mit dem Regler"/> - <text name="wait_text"> - Bitte warten - </text> - <text name="Output"> - Ausgabe - </text> - </panel> + <panel label="Geräte-Einstellungen" name="device_settings_panel"/> </panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_environment.xml b/indra/newview/skins/default/xui/de/panel_region_environment.xml new file mode 100644 index 0000000000000000000000000000000000000000..daadd30f62fb1e7519a3c996d8fe69e586101c83 --- /dev/null +++ b/indra/newview/skins/default/xui/de/panel_region_environment.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Umgebung" name="panel_env_info"> + <text name="water_settings_title"> + Wählen Sie die Wasser- und Himmel-/Tageszykluseinstellungen aus, die alle Besucher Ihrer Region sehen sollen. Mehr Infos + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Second Life-Standard verwenden" name="use_sl_default_settings"/> + <radio_item label="Folgende Einstellungen verwenden" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="water_settings_title"> + Wassereinstellung + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="-Voreinstellung auswählen-" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + Himmel / Tageszyklus + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="Fester Himmel" name="my_sky_settings"/> + <radio_item label="Tageszyklus" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="-Voreinstellung auswählen-" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="-Voreinstellung auswählen-" name="item0"/> + </combo_box> + </panel> + <button label="Anwenden" name="apply_btn"/> + <button label="Abbrechen" name="cancel_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/de/panel_region_terrain.xml b/indra/newview/skins/default/xui/de/panel_region_terrain.xml index 01721791a705236f0fb064d2183dfed7f76684c5..7801be30e482860200f5b456a2bdedd9cb85e2f0 100644 --- a/indra/newview/skins/default/xui/de/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/de/panel_region_terrain.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Terrain" name="Terrain"> <text name="region_text_lbl"> Region: @@ -6,25 +6,55 @@ <text name="region_text"> unbekannt </text> - <spinner label="Wasserhöhe" name="water_height_spin" /> - <button label="?" name="water_height_help" /> - <spinner label="Obere Terraingrenze" name="terrain_raise_spin" /> - <button label="?" name="terrain_raise_help" /> - <spinner label="Untere Terraingrenze" name="terrain_lower_spin" /> - <button label="?" name="terrain_lower_help" /> - <check_box label="Grundbesitzsonne verwenden" name="use_estate_sun_check" /> - <button label="?" name="use_estate_sun_help" /> - <check_box label="Sonne fest" name="fixed_sun_check" /> - <button label="?" name="fixed_sun_help" /> - <slider label="Phase" name="sun_hour_slider" /> - <button label="Ãœbernehmen" name="apply_btn" /> - <button label="RAW-Terrain herunterladen..." name="download_raw_btn" - tool_tip="Nur für Grundbesitzeigentümer verfügbar, nicht für Verwalter" /> - <button label="?" name="download_raw_help" /> - <button label="RAW-Terrain hochladen..." name="upload_raw_btn" - tool_tip="Nur für Grundbesitzeigentümer verfügbar, nicht für Verwalter" /> - <button label="?" name="upload_raw_help" /> - <button label="Terrain formen" name="bake_terrain_btn" - tool_tip="Das aktuelle Terrain zum Mittelpunkt für die oberen/unteren Terraingrenzen machen" /> - <button label="?" name="bake_terrain_help" /> + <spinner label="Wasserhöhe" name="water_height_spin"/> + <spinner label="Obere Terraingrenze" name="terrain_raise_spin"/> + <spinner label="Untere Terraingrenze" name="terrain_lower_spin"/> + <text name="detail_texture_text"> + Terraintexturen (erfordert 24-Bit-.tga-Dateien mit einer Größe von 512x512) + </text> + <text name="height_text_lbl"> + 1 (niedrig) + </text> + <text name="height_text_lbl2"> + 2 + </text> + <text name="height_text_lbl3"> + 3 + </text> + <text name="height_text_lbl4"> + 4 (Hoch) + </text> + <text name="height_text_lbl5"> + Texturhöhenbereich + </text> + <text name="height_text_lbl10"> + Diese Werte geben den Mischungsgrad für die obigen Texturen an. + </text> + <text name="height_text_lbl11"> + In Metern gemessen. Der Wert „Niedrig“ ist die maximale Höhe von Textur 1, der Wert „Hoch“ die Mindesthöhe von Textur 4. + </text> + <text name="height_text_lbl6"> + Nordwest + </text> + <text name="height_text_lbl7"> + Nordost + </text> + <spinner label="Niedrig" name="height_start_spin_1"/> + <spinner label="Niedrig" name="height_start_spin_3"/> + <spinner label="Hoch" name="height_range_spin_1"/> + <spinner label="Hoch" name="height_range_spin_3"/> + <text name="height_text_lbl8"> + Südwest + </text> + <text name="height_text_lbl9"> + Südost + </text> + <spinner label="Niedrig" name="height_start_spin_0"/> + <spinner label="Niedrig" name="height_start_spin_2"/> + <spinner label="Hoch" name="height_range_spin_0"/> + <spinner label="Hoch" name="height_range_spin_2"/> + <button label="RAW-Terrain herunterladen..." name="download_raw_btn" tool_tip="Nur für Grundbesitzeigentümer verfügbar, nicht für Verwalter"/> + <button label="RAW-Terrain hochladen..." name="upload_raw_btn" tool_tip="Nur für Grundbesitzeigentümer verfügbar, nicht für Verwalter"/> + <button label="Terrain formen" name="bake_terrain_btn" tool_tip="Das aktuelle Terrain zum Mittelpunkt für die oberen/unteren Terraingrenzen machen"/> + <button label="Ãœbernehmen" name="apply_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml index d817d1df90c423b0ebb4aeb0cdac5055a3b21bea..3dd1bfb357f4a545891d5168a248d7cf804d3dca 100644 --- a/indra/newview/skins/default/xui/de/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/de/sidepanel_inventory.xml @@ -1,6 +1,38 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Sonstiges" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> + <layout_stack name="inventory_layout_stack"> + <layout_panel name="inbox_layout_panel"> + <panel label="" name="marketplace_inbox"> + <string name="InboxLabelWithArg"> + Erhaltene Objekte ([NUM]) + </string> + <string name="InboxLabelNoArg"> + Erhaltene Objekte + </string> + <button label="Erhaltene Objekte" name="inbox_btn"/> + <text name="inbox_fresh_new_count"> + [NUM] neu + </text> + <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <text name="inbox_inventory_placeholder"> + Einkäufe auf dem Marktplatz werden hierher geliefert. + </text> + </panel> + </panel> + </layout_panel> + <layout_panel name="outbox_layout_panel"> + <panel label="" name="marketplace_outbox"> + <button label="Händler-Outbox" name="outbox_btn"/> + <button label="" name="outbox_sync_btn" tool_tip="Zu meiner Marktplatz-Storefront verschieben"/> + <panel tool_tip="Drag and drop items here to prepare them for sale on your storefront"> + <text name="outbox_inventory_placeholder"> + Richtigen Sie ein Händlerkonto ein, um diese Funktion zu verwenden. + </text> + </panel> + </panel> + </layout_panel> + </layout_stack> <panel name="button_panel"> <layout_stack name="button_panel_ls"> <layout_panel name="info_btn_lp"> diff --git a/indra/newview/skins/default/xui/de/strings.xml b/indra/newview/skins/default/xui/de/strings.xml index ed382674661f9cc2fd411a2ea05f75193c93f8c8..e1c9ad0e5cbbcf803c82ffe30dd5e48a7f58e405 100644 --- a/indra/newview/skins/default/xui/de/strings.xml +++ b/indra/newview/skins/default/xui/de/strings.xml @@ -1192,6 +1192,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="InventoryNoTexture"> Sie haben keine Kopie dieser Textur in Ihrem Inventar. </string> + <string name="InventoryInboxNoItems"> + Objekte, die auf dem Marktplatz gekauft wurden, werden hierher geliefert. + </string> + <string name="InventoryOutboxNoItems"> + Objekte hierher ziehen, um Sie in Ihrer Marktplatz-Storefront zum Verkauf anzubieten. + </string> <string name="no_transfer" value=" (kein Transferieren)"/> <string name="no_modify" value=" (kein Bearbeiten)"/> <string name="no_copy" value=" (kein Kopieren)"/> @@ -1322,6 +1328,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="InvFolder All"> Alle </string> + <string name="no_attachments"> + Keine Anhänge getragen + </string> <string name="Buy"> Kaufen </string> @@ -1657,6 +1666,9 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="IMTeen"> Teen </string> + <string name="Anyone"> + jeder + </string> <string name="RegionInfoError"> Fehler </string> @@ -1879,6 +1891,12 @@ Warten Sie kurz und versuchen Sie dann noch einmal, sich anzumelden. <string name="Public"> Öffentlich </string> + <string name="LocalSettings"> + Lokale Einstellungen + </string> + <string name="RegionSettings"> + Regionseinstellungen + </string> <string name="ClassifiedClicksTxt"> Klicks: [TELEPORT] teleportieren, [MAP] Karte, [PROFILE] Profil </string> @@ -3724,6 +3742,9 @@ Falls diese Meldung weiterhin angezeigt wird, wenden Sie sich bitte an [SUPPORT_ <string name="LocationCtrlGeneralIconTooltip"> Generelle Region </string> + <string name="LocationCtrlSeeAVsTooltip"> + Avatare sichtbar; Chat außerhalb dieser Parzelle gestattet + </string> <string name="UpdaterWindowTitle"> [APP_NAME] Aktualisierung </string> diff --git a/indra/newview/skins/default/xui/en/floater_search.xml b/indra/newview/skins/default/xui/en/floater_search.xml index 8770ede7e9f920348ed84c0d0536357d0ecf8ff5..c7b26c59c7f619750660b5cc66ce2ec8d2c05c26 100644 --- a/indra/newview/skins/default/xui/en/floater_search.xml +++ b/indra/newview/skins/default/xui/en/floater_search.xml @@ -38,6 +38,7 @@ user_resize="false" width="630"> <web_browser + tab_stop="true" trusted_content="true" follows="left|right|top|bottom" layout="topleft" diff --git a/indra/newview/skins/default/xui/en/floater_sound_devices.xml b/indra/newview/skins/default/xui/en/floater_sound_devices.xml index 304987c3d59c1470f7820dc744beee4ee8c506f9..74e01f359c6ce29b80bdab6d0f98cb72ebe7e1fb 100644 --- a/indra/newview/skins/default/xui/en/floater_sound_devices.xml +++ b/indra/newview/skins/default/xui/en/floater_sound_devices.xml @@ -15,14 +15,14 @@ layout="topleft" name="floater_sound_devices" title="Sound Devices" - width="315"> + width="490"> <panel layout="topleft" follows="all" filename="panel_sound_devices.xml" name="device_settings_panel" width="400" - left="2" + left="10" top="26" class="panel_voice_device_settings"/> <text diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml index e00586811b3d8188098324b342a92a2d7912f3b6..ab5c5433761e45fd55d60c01438769ec9c425b63 100644 --- a/indra/newview/skins/default/xui/en/menu_viewer.xml +++ b/indra/newview/skins/default/xui/en/menu_viewer.xml @@ -557,6 +557,9 @@ <menu_item_call.on_click function="World.EnvPreset" parameter="delete_water"/> + <menu_item_call.on_enable + function="World.EnableEnvPreset" + parameter="delete_water"/> </menu_item_call> </menu> @@ -583,6 +586,9 @@ <menu_item_call.on_click function="World.EnvPreset" parameter="delete_sky"/> + <menu_item_call.on_enable + function="World.EnableEnvPreset" + parameter="delete_sky"/> </menu_item_call> </menu> @@ -609,6 +615,9 @@ <menu_item_call.on_click function="World.EnvPreset" parameter="delete_day_cycle"/> + <menu_item_call.on_enable + function="World.EnableEnvPreset" + parameter="delete_day_cycle"/> </menu_item_call> </menu> </menu> @@ -2931,18 +2940,6 @@ function="Floater.Toggle" parameter="region_debug_console" /> </menu_item_check> - <menu_item_check - label="Region Debug Console" - name="Region Debug Console" - shortcut="control|shift|`" - use_mac_ctrl="true"> - <menu_item_check.on_check - function="Floater.Visible" - parameter="region_debug_console" /> - <menu_item_check.on_click - function="Floater.Toggle" - parameter="region_debug_console" /> - </menu_item_check> <menu_item_separator /> <menu_item_check diff --git a/indra/newview/skins/default/xui/en/panel_places.xml b/indra/newview/skins/default/xui/en/panel_places.xml index daf571297f29f9a6bf74a02494c7fc2ff9fe0e85..b6b8a337a121d3df9267b6184012f630a4379c63 100644 --- a/indra/newview/skins/default/xui/en/panel_places.xml +++ b/indra/newview/skins/default/xui/en/panel_places.xml @@ -234,7 +234,7 @@ background_visible="true" height="23" layout="topleft" mouse_opaque="false" - name="bottom_bar_ls3" + name="bottom_bar_profile_ls" left="0" orientation="horizontal" top="0" diff --git a/indra/newview/skins/default/xui/en/panel_sound_devices.xml b/indra/newview/skins/default/xui/en/panel_sound_devices.xml index 0a20a4a96569012a13a4ad138e8bda07c91fb3bb..46cbc1e87fdf91c127c8cf898191a5b0a3e0bd1a 100644 --- a/indra/newview/skins/default/xui/en/panel_sound_devices.xml +++ b/indra/newview/skins/default/xui/en/panel_sound_devices.xml @@ -11,6 +11,14 @@ name="default_text"> Default </panel.string> + <string + name="name_no_device"> + No Device + </string> + <string + name="name_default_system_device"> + Default System Device + </string> <icon follows="left|top" height="18" diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index c1c1151eb97a302f6e8cf447d916ac4c93eac399..ee6317f367b676c7e85f06d7870398bae092671f 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -2238,6 +2238,7 @@ Returns a string with the requested data about the region <string name="Unknown">(Unknown)</string> <string name="SummaryForTheWeek" value="Summary for this week, beginning on " /> <string name="NextStipendDay" value="The next stipend day is " /> + <string name="GroupPlanningDate">[mthnum,datetime,utc]/[day,datetime,utc]/[year,datetime,utc]</string> <string name="GroupIndividualShare" value=" Group Individual Share" /> <string name="GroupColumn" value=" Group" /> <string name="Balance">Balance</string> @@ -2394,6 +2395,7 @@ Returns a string with the requested data about the region <string name="GroupMoneyBalance">Balance</string> <string name="GroupMoneyCredits">Credits</string> <string name="GroupMoneyDebits">Debits</string> + <string name="GroupMoneyDate">[weekday,datetime,utc] [mth,datetime,utc] [day,datetime,utc], [year,datetime,utc]</string> <!-- viewer object --> <string name="ViewerObjectContents">Contents</string> 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 1c4b965f4694c805a02c2fdc10f6774a7ae197c5..83749fc5359164220146850268c9c2e650bac8bd 100644 --- a/indra/newview/skins/default/xui/es/floater_about_land.xml +++ b/indra/newview/skins/default/xui/es/floater_about_land.xml @@ -133,12 +133,12 @@ Vaya al menú Mundo > Acerca del terreno o seleccione otra parcela para ver s 0 </text> <button label="Comprar terreno" left="130" name="Buy Land..." width="125"/> + <button label="Venta Linden" name="Linden Sale..." tool_tip="El terreno debe estar en propiedad, con contenido, y no estar en subasta."/> <button label="Información de scripts" name="Scripts..."/> <button label="Comprar para el grupo" name="Buy For Group..."/> <button label="Comprar un pase" left="130" name="Buy Pass..." tool_tip="Un pase le da acceso temporal a este terreno." width="125"/> <button label="Abandonar el terreno" name="Abandon Land..."/> <button label="Reclamar el terreno" name="Reclaim Land..."/> - <button label="Venta Linden" name="Linden Sale..." tool_tip="El terreno debe estar en propiedad, con contenido, y no estar en subasta."/> </panel> <panel label="CONTRATO" name="land_covenant_panel"> <panel.string name="can_resell"> @@ -308,6 +308,9 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda. <panel.string name="push_restrict_region_text"> Sin 'empujones' (prevalece lo marcado en la región) </panel.string> + <panel.string name="see_avs_text"> + Ver a los residentes de esta parcela y chatear con ellos + </panel.string> <text name="allow_label"> Permitir a otros Residentes: </text> @@ -370,6 +373,10 @@ Sólo las parcelas más grandes pueden listarse en la búsqueda. Foto: </text> <texture_picker label="" name="snapshot_ctrl" tool_tip="Pulse para elegir una imagen"/> + <text name="allow_label5"> + Permitir a los residentes de otras parcelas: + </text> + <check_box label="Ver los avatares" name="SeeAvatarsCheck" tool_tip="Permite que los residentes de otras parcelas vean a los residentes de ésta y chateen con ellos, y también que tú puedas verles y chatear con ellos."/> <text name="landing_point"> Punto de llegada: [LANDING] </text> @@ -429,6 +436,11 @@ los media: Sonido: </text> <check_box label="Restringir sonidos de objetos y gestos a esta parcela" name="check sound local"/> + <text name="Avatar Sounds:"> + Sonidos de avatar: + </text> + <check_box label="Todos" name="all av sound check"/> + <check_box label="Grupo" name="group av sound check"/> <text name="Voice settings:"> Voz: </text> diff --git a/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..5e7df8530e198b190902fd58f7d9e3eef79e63dd --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_delete_env_preset.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<floater name="Delete Env Preset" title="ELIMINAR EL ENV PREDEFINIDO"> + <string name="title_water"> + Eliminar el agua predefinida + </string> + <string name="title_sky"> + Eliminar cielo predefinido + </string> + <string name="title_day_cycle"> + Eliminar ciclo del dÃa + </string> + <string name="label_water"> + Predefinido: + </string> + <string name="label_sky"> + Predefinido: + </string> + <string name="label_day_cycle"> + Ciclo del dÃa: + </string> + <string name="msg_confirm_deletion"> + ¿Estás seguro de que quieres eliminar el valor predefinido seleccionado? + </string> + <string name="msg_sky_is_referenced"> + No se puede quitar un valor predefinido al que se hace referencia en otro u otros ciclos del dÃa. + </string> + <string name="combo_label"> + -Selecciona un valor predefinido- + </string> + <text name="label"> + Predefinido: + </text> + <button label="Borrar" name="delete"/> + <button label="Cancelar" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml new file mode 100644 index 0000000000000000000000000000000000000000..6ac46351dbbb681acbbdccab4b7d1c2e1551a480 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_edit_day_cycle.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Day cycle" title="Editar ciclo del dÃa"> + <string name="title_new"> + Crear un ciclo del dÃa nuevo + </string> + <string name="title_edit"> + Editar ciclo del dÃa + </string> + <string name="hint_new"> + Asigna un nombre al ciclo del dÃa, ajusta los controles para crearlo y selecciona "Guardar". + </string> + <string name="hint_edit"> + Para editar el ciclo del dÃa, ajusta los controles siguientes y selecciona "Guardar". + </string> + <string name="combo_label"> + -Selecciona un valor predefinido- + </string> + <text name="label"> + Nombre predefinido: + </text> + <text name="note"> + Nota: Si cambias el nombre del valor predefinido, crearás un predefinido nuevo y el actual no se modificará. + </text> + <text name="hint_item1"> + - Pulsa en una pestaña para editar la configuración y el tiempo de un cielo determinado. + </text> + <text name="hint_item2"> + - Pulsa y arrastra las pestañas para ajustar los tiempos de transición. + </text> + <text name="hint_item3"> + - Usa el depurador para obtener una vista previa del ciclo del dÃa. + </text> + <panel name="day_cycle_slider_panel"> + <multi_slider initial_value="0" name="WLTimeSlider"/> + <multi_slider initial_value="0" name="WLDayCycleKeys"/> + <button label="Añadir clave" label_selected="Añadir clave" name="WLAddKey"/> + <button label="Eliminar clave" label_selected="Eliminar clave" name="WLDeleteKey"/> + <text name="WL12am"> + 12 AM + </text> + <text name="WL3am"> + 3 AM + </text> + <text name="WL6am"> + 6 AM + </text> + <text name="WL9amHash"> + 9 AM + </text> + <text name="WL12pmHash"> + 12 PM + </text> + <text name="WL3pm"> + 3 PM + </text> + <text name="WL6pm"> + 6 PM + </text> + <text name="WL9pm"> + 9 PM + </text> + <text name="WL12am2"> + 12 AM + </text> + <text name="WL12amHash"> + | + </text> + <text name="WL3amHash"> + I + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL9amHash2"> + I + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL3pmHash"> + I + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL9pmHash"> + I + </text> + <text name="WL12amHash2"> + | + </text> + </panel> + <text name="WLCurKeyPresetText"> + Configuración del cielo: + </text> + <combo_box label="Predefinido" name="WLSkyPresets"/> + <text name="WLCurKeyTimeText"> + Hora: + </text> + <time name="time" value="6 AM"/> + <check_box label="Convertir en mi nuevo ciclo del dÃa" name="make_default_cb"/> + <button label="Guardar" name="save"/> + <button label="Cancelar" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..d2197b80fa561063abb061d413336bde6ba46396 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_edit_sky_preset.xml @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Sky Preset" title="Editar cielo predefinido"> + <string name="title_new"> + Crear un nuevo cielo predefinido + </string> + <string name="title_edit"> + Editar cielo predefinido + </string> + <string name="hint_new"> + Asigna un nombre al valor predefinido, ajusta los controles para crearlo y selecciona "Guardar". + </string> + <string name="hint_edit"> + Para editar el cielo predefinido, ajusta los controles y selecciona "Guardar". + </string> + <string name="combo_label"> + -Selecciona un valor predefinido- + </string> + <text name="hint"> + Para editar el valor predefinido, ajusta los controles y selecciona "Guardar". + </text> + <text name="label"> + Nombre predefinido: + </text> + <text name="note"> + Nota: Si cambias el nombre del valor predefinido, crearás un predefinido nuevo y el actual no se modificará. + </text> + <tab_container name="WindLight Tabs"> + <panel label="ATMÓSFERA" name="Atmosphere"> + <text name="BHText"> + Horizonte azul + </text> + <text name="BDensText"> + Cantidad de bruma + </text> + <text name="BDensText2"> + Saturación + </text> + <text name="HDText"> + Densidad de la bruma + </text> + <text name="DensMultText"> + Densidad + </text> + <text name="WLDistanceMultText"> + Distancia + </text> + <text name="MaxAltText"> + Altitud máx. + </text> + </panel> + <panel label="LUZ" name="Lighting"> + <text name="SLCText"> + Color del sol y de la luna + </text> + <text name="WLAmbientText"> + Ambiental + </text> + <text name="SunGlowText"> + Resplandor del sol + </text> + <slider label="Visión" name="WLGlowB"/> + <slider label="Tamaño" name="WLGlowR"/> + <text name="WLStarText"> + Brillo de las estrellas + </text> + <text name="SceneGammaText"> + Gamma de la escena + </text> + <text name="TODText"> + Posición del sol y la luna + </text> + <multi_slider initial_value="0" name="WLSunPos"/> + <text name="WL12amHash"> + | + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL12amHash2"> + | + </text> + <text name="WL12am"> + 12 AM + </text> + <text name="WL6am"> + 6 AM + </text> + <text name="WL12pmHash"> + 12 PM + </text> + <text name="WL6pm"> + 6 PM + </text> + <text name="WL12am2"> + 12 AM + </text> + <time name="WLDayTime" value="6:00 AM"/> + <text name="WLEastAngleText"> + Ãngulo de elevación + </text> + </panel> + <panel label="NUBES" name="Clouds"> + <text name="WLCloudColorText"> + Color de las nubes + </text> + <text name="WLCloudColorText2"> + Posición/Densidad de las nubes + </text> + <slider label="X" name="WLCloudX"/> + <slider label="Y" name="WLCloudY"/> + <slider label="D" name="WLCloudDensity"/> + <text name="WLCloudCoverageText"> + Nubosidad + </text> + <text name="WLCloudScaleText"> + Altitud de las nubes + </text> + <text name="WLCloudDetailText"> + Detalle de las nubes (Posición/Densidad) + </text> + <slider label="X" name="WLCloudDetailX"/> + <slider label="Y" name="WLCloudDetailY"/> + <slider label="D" name="WLCloudDetailDensity"/> + <text name="WLCloudScrollXText"> + Velocidad de las nubes: X + </text> + <check_box label="Lock" name="WLCloudLockX"/> + <text name="WLCloudScrollYText"> + Velocidad de las nubes: Y + </text> + <check_box label="Lock" name="WLCloudLockY"/> + </panel> + </tab_container> + <check_box label="Convertir este valor predefinido en mi nueva configuración de cielo" name="make_default_cb"/> + <button label="Guardar" name="save"/> + <button label="Cancelar" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..f90ad59f781828468bb04452e80784c93aec9585 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_edit_water_preset.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Water Preset" title="Editar el agua predefinida"> + <string name="title_new"> + Crear una nueva agua predefinida + </string> + <string name="title_edit"> + Editar el agua predefinida + </string> + <string name="hint_new"> + Asigna un nombre al valor predefinido, ajusta los controles para crearlo y selecciona "Guardar". + </string> + <string name="hint_edit"> + Para editar el agua predefinida, ajusta los controles y selecciona "Guardar". + </string> + <string name="combo_label"> + -Selecciona un valor predefinido- + </string> + <text name="hint"> + Para editar el valor predefinido, ajusta los controles y selecciona "Guardar". + </text> + <text name="label"> + Nombre predefinido: + </text> + <text name="note"> + Nota: Si cambias el nombre del valor predefinido, crearás un predefinido nuevo y el actual no se modificará. + </text> + <panel name="panel_water_preset"> + <text name="water_color_label"> + Color del agua + </text> + <text name="water_fog_density_label"> + Transparencia + </text> + <text name="underwater_fog_modifier_label"> + Modificar la claridad del agua + </text> + <text name="BHText"> + Sentido de las olas grandes + </text> + <slider label="X" name="WaterWave1DirX"/> + <slider label="Y" name="WaterWave1DirY"/> + <text name="BDensText"> + Tamaño de las ondulaciones + </text> + <text name="HDText"> + Escala de Fresnel + </text> + <text name="FresnelOffsetText"> + Coeficiente de reflexión + </text> + <text name="BHText2"> + Sentido de las olas pequeñas + </text> + <slider label="X" name="WaterWave2DirX"/> + <slider label="Y" name="WaterWave2DirY"/> + <text name="DensMultText"> + Refracción de la superficie + </text> + <text name="WaterScaleBelowText"> + Refracción bajo la superficie + </text> + <text name="MaxAltText"> + Desenfoque + </text> + <text name="BHText3"> + Vista Normal + </text> + </panel> + <check_box label="Convertir este valor predefinido en mi nueva configuración de agua" name="make_default_cb"/> + <button label="Guardar" name="save"/> + <button label="Cancelar" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_environment_settings.xml b/indra/newview/skins/default/xui/es/floater_environment_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..a9c5705d52e104563e1e6c71cbbc51d52cfe6662 --- /dev/null +++ b/indra/newview/skins/default/xui/es/floater_environment_settings.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Environment Editor Floater" title="CONFIGURACIÓN DE ENTORNO"> + <text name="note"> + Puedes personalizar la configuración del entorno de tu visor con las opciones siguientes. + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Usar configuración de región" name="use_region_settings"/> + <radio_item label="Personalizar mi entorno" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="note"> + Nota: La configuración personalizada no estará visible para otros usuarios. + </text> + <text name="water_settings_title"> + Configuración de agua + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="-Selecciona un valor predefinido-" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + Cielo/Ciclo del dÃa + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="Cielo invariable" name="my_sky_settings"/> + <radio_item label="Ciclo del dÃa" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="-Selecciona un valor predefinido-" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="-Selecciona un valor predefinido-" name="item0"/> + </combo_box> + </panel> + <button label="OK" name="ok_btn"/> + <button label="Cancelar" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/es/floater_model_preview.xml b/indra/newview/skins/default/xui/es/floater_model_preview.xml index 6208db75f93fe0205edb8be99079262edff78eff..0af44e1d91ffad42e6a5a3ef18aba4ffb01d2457 100644 --- a/indra/newview/skins/default/xui/es/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/es/floater_model_preview.xml @@ -3,6 +3,9 @@ <string name="status_idle"> Inactivo </string> + <string name="status_parse_error"> + Problema de análisis de DAE - consulta los datos en el registro. + </string> <string name="status_reading_file"> Cargando... </string> @@ -12,6 +15,9 @@ <string name="status_vertex_number_overflow"> Error: El número de intersección es superior a 65534. Cancelado. </string> + <string name="bad_element"> + Error: el elemento no es válido + </string> <string name="high"> Alto </string> diff --git a/indra/newview/skins/default/xui/es/floater_model_wizard.xml b/indra/newview/skins/default/xui/es/floater_model_wizard.xml index 019c2d382909c33c12dea09eaf58a772fe4d7b79..a2c6c456eb2adb00f4e0bcdcf82b8d4b3a458d98 100644 --- a/indra/newview/skins/default/xui/es/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/es/floater_model_wizard.xml @@ -193,6 +193,9 @@ <string name="status_idle"> Inactivo </string> + <string name="status_parse_error"> + Problema de análisis de DAE - consulta los datos en el registro. + </string> <string name="status_reading_file"> Cargando... </string> @@ -202,6 +205,9 @@ <string name="status_vertex_number_overflow"> Error: El número de intersección es superior a 65534. Cancelado. </string> + <string name="bad_element"> + Error: el elemento no es válido + </string> <string name="high"> Alto </string> diff --git a/indra/newview/skins/default/xui/es/floater_tools.xml b/indra/newview/skins/default/xui/es/floater_tools.xml index 78f18b745cabdca2ee78f6969e77e4307c0ef285..70eac1e2c54a215e76082f2f61f9153af3e5860f 100644 --- a/indra/newview/skins/default/xui/es/floater_tools.xml +++ b/indra/newview/skins/default/xui/es/floater_tools.xml @@ -405,7 +405,7 @@ </combo_box> <spinner label="Gravedad" name="Physics Gravity"/> <spinner label="Fricción" name="Physics Friction"/> - <spinner label="Densidad" name="Physics Density"/> + <spinner label="Densidad en 100 kg/m^3" name="Physics Density"/> <spinner label="Reemplazo" name="Physics Restitution"/> </panel> <panel label="Textura" name="Texture"> diff --git a/indra/newview/skins/default/xui/es/menu_login.xml b/indra/newview/skins/default/xui/es/menu_login.xml index c27d6247324206eca98b8f563d0203df1213653f..cabcacaed52295d2e16f5e3e6e306aa2551867dc 100644 --- a/indra/newview/skins/default/xui/es/menu_login.xml +++ b/indra/newview/skins/default/xui/es/menu_login.xml @@ -17,7 +17,7 @@ <menu_item_call label="Mostrar los 'TOS'" name="TOS"/> <menu_item_call label="Mostrar mensaje crÃtico" name="Critical"/> <menu_item_call label="Prueba de navegadores de medios" name="Web Browser Test"/> - <menu_item_call label="Prueba de ventanas de contenidos web" name="Web Content Floater Test"/> + <menu_item_call label="Prueba de depuración de ventanas de contenido web" name="Web Content Floater Debug Test"/> <menu_item_check label="Mostrar el selector de Grid" name="Show Grid Picker"/> <menu_item_call label="Mostrar la consola de notificaciones" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml index f0fe383c0c39c5e11a96d8b6038d719e6c215b31..1403e4db011cee81e24cbe4150c67e193d35bfca 100644 --- a/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/es/menu_people_nearby_view_sort.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="menu_group_plus"> +<toggleable_menu name="menu_group_plus"> <menu_item_check label="Ordenar según las intervenciones recientes" name="sort_by_recent_speakers"/> <menu_item_check label="Ordenar alfabéticamente" name="sort_name"/> <menu_item_check label="Ordenar según distancia" name="sort_distance"/> <menu_item_check label="Ver los iconos de la gente" name="view_icons"/> + <menu_item_check label="Ver mapa" name="view_map"/> <menu_item_call label="Ver la lista de Residentes y Objetos ignorados" name="show_blocked_list"/> -</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 0824e386d5f125a5f85450d1dabdef75a754c446..049a89aa068c2da9df93aaaedc550581a4a49302 100644 --- a/indra/newview/skins/default/xui/es/menu_viewer.xml +++ b/indra/newview/skins/default/xui/es/menu_viewer.xml @@ -31,6 +31,7 @@ <menu_item_call label="Mis grupos" name="My Groups"/> <menu_item_check label="Chat" name="Nearby Chat"/> <menu_item_call label="Gente cerca" name="Active Speakers"/> + <menu_item_check label="Chat de voz" name="Nearby Voice"/> </menu> <menu label="Mundo" name="World"> <menu_item_check label="Minimapa" name="Mini-Map"/> @@ -63,8 +64,24 @@ <menu_item_call label="MediodÃa" name="Noon"/> <menu_item_call label="Atardecer" name="Sunset"/> <menu_item_call label="Medianoche" name="Midnight"/> - <menu_item_call label="Hora del Estado" name="Revert to Region Default"/> - <menu_item_call label="Editor del entorno" name="Environment Editor"/> + </menu> + <menu label="Editor de entorno" name="Enviroment Editor"> + <menu_item_call label="Configuración de entorno..." name="Enviroment Settings"/> + <menu label="Agua predefinida" name="Water Presets"> + <menu_item_call label="Nuevo predefinido..." name="new_water_preset"/> + <menu_item_call label="Editar predefinido..." name="edit_water_preset"/> + <menu_item_call label="Eliminar predefinido..." name="delete_water_preset"/> + </menu> + <menu label="Cielos predefinidos" name="Sky Presets"> + <menu_item_call label="Nuevo predefinido..." name="new_sky_preset"/> + <menu_item_call label="Editar predefinido..." name="edit_sky_preset"/> + <menu_item_call label="Eliminar predefinido..." name="delete_sky_preset"/> + </menu> + <menu label="DÃas predefinidos" name="Day Presets"> + <menu_item_call label="Nuevo predefinido..." name="new_day_preset"/> + <menu_item_call label="Editar predefinido..." name="edit_day_preset"/> + <menu_item_call label="Eliminar predefinido..." name="delete_day_preset"/> + </menu> </menu> </menu> <menu label="Construir" name="BuildTools"> diff --git a/indra/newview/skins/default/xui/es/menu_wearing_gear.xml b/indra/newview/skins/default/xui/es/menu_wearing_gear.xml index 9d9ce75e5390b3958046209acabaf95f819c9e12..ec13f99a0161643010214dc8ab91cb6eca2d5b38 100644 --- a/indra/newview/skins/default/xui/es/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/es/menu_wearing_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Gear Wearing"> +<toggleable_menu name="Gear Wearing"> <menu_item_call label="Editar el vestuario" name="edit"/> <menu_item_call label="Quitarme" name="takeoff"/> -</menu> + <menu_item_call label="Copiar la lista del vestuario al portapapeles" name="copy"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/es/notifications.xml b/indra/newview/skins/default/xui/es/notifications.xml index b2131fc038af04ea8fbdaef97a52eb87a4072fd3..a1cd6761428fe95325f0fd112b0cfe5f2b64ec70 100644 --- a/indra/newview/skins/default/xui/es/notifications.xml +++ b/indra/newview/skins/default/xui/es/notifications.xml @@ -1560,6 +1560,11 @@ Vuelve a intentarlo más tarde. <button name="Cancel" text="Cancelar"/> </form> </notification> + <notification name="TooManyTeleportOffers"> + Has intentado hacer [OFFERS] ofertas de teleporte, +excediendo el lÃmite de [LIMIT]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OfferTeleportFromGod"> ¿Obligar a este Residente a ir a tu localización? <form name="form"> @@ -1980,6 +1985,10 @@ Linden Lab ¿Estás seguro de que quieres borrar tu historial web, de viajes y de búsquedas? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> </notification> + <notification name="ConfirmClearCache"> + ¿Estás seguro de que quieres vaciar la caché del visor? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> <notification name="ConfirmClearCookies"> ¿Estás seguro de que quieres limpiar tus cookies? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="SÃ"/> @@ -2005,48 +2014,30 @@ PublÃcala en una página web para que otros puedan acceder fácilmente a esta p ¿Quieres sobrescribir la preselección guardada? <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> </notification> - <notification name="WLDeletePresetAlert"> - ¿Quieres borrar [SKY]? - <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> - </notification> <notification name="WLNoEditDefault"> No puedes editar ni borrar una preselección por defecto. </notification> <notification name="WLMissingSky"> Este archivo del ciclo de un dÃa se refiere a un archivo perdido de cielo: [SKY]. </notification> - <notification name="PPSaveEffectAlert"> - Ya existe un efecto de procesamiento. ¿Quieres sobreescribirlo? - <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> - </notification> - <notification name="NewSkyPreset"> - Dame un nombre para el cielo nuevo. - <form name="form"> - <input name="message"> - Preselección nueva - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Cancelar"/> - </form> + <notification name="WLRegionApplyFail"> + No se pudo aplicar la configuración a la región. El problema podrÃa solucionarse saliendo de la región y regresando a ella. La razón especificada fue: [FAIL_REASON] </notification> - <notification name="ExistsSkyPresetAlert"> - ¡Esa preselección ya existe! + <notification name="EnvCannotDeleteLastDayCycleKey"> + No se puede eliminar la última clave de este ciclo del dÃa, ya que no puedes vaciar la caché del dÃa. En lugar de intentar eliminar la última clave restante y después intentar crear una nueva, debes modificarla. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="NewWaterPreset"> - Dame un nombre para la nueva preselección de agua. - <form name="form"> - <input name="message"> - Preselección nueva - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Cancelar"/> - </form> + <notification name="DayCycleTooManyKeyframes"> + No se pueden añadir más fotogramas clave a este ciclo del dÃa. El número máximo de fotogramas clave para ciclos del dÃa de alcance [SCOPE] es [MAX]. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="ExistsWaterPresetAlert"> - ¡Esa preselección ya existe! + <notification name="EnvUpdateRate"> + La configuración de entorno de la región sólo puede actualizarse cada [WAIT] segundos. Espera por lo menos este tiempo y vuelve intentarlo. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="WaterNoEditDefault"> - No puedes editar o borrar una preselección por defecto. + <notification name="PPSaveEffectAlert"> + Ya existe un efecto de procesamiento. ¿Quieres sobreescribirlo? + <usetemplate name="okcancelbuttons" notext="No" yestext="SÃ"/> </notification> <notification name="ChatterBoxSessionStartError"> No se puede empezar una nueva sesión de chat con [RECIPIENT]. @@ -2337,6 +2328,9 @@ Aquà no puedes volar. <notification name="NoBuild"> Este terreno tiene desactivado el poder construir. Aquà no puedes ni construir ni crear objetos. </notification> + <notification name="SeeAvatars"> + Esta parcela oculta los avatares y el chat de texto de otras parcelas. No podrás ver a los residentes que estén fuera la parcela ni ellos podrán verte a ti. El chat de texto regular del canal 0 también está bloqueado. + </notification> <notification name="ScriptsStopped"> Un administrador ha detenido temporalmente los scripts en esta región. </notification> @@ -2763,7 +2757,9 @@ Se mostrará cuando haya suficiente espacio. Selecciona los residentes con quienes deseas compartir. </notification> <notification name="MeshUploadError"> - No se ha cargado [ETIQUETA]: [MENSAJE] [IDENTIFICADOR] [IDENTIFICADOR_FALTA_VALIDEZ] + [LABEL] no se pudo subir: [MESSAGE] [IDENTIFIER] + +Consulta los detalles en el archivo de registro. </notification> <notification name="ShareItemsConfirmation"> ¿Estás seguro de que quieres compartir los elementos siguientes? diff --git a/indra/newview/skins/default/xui/es/panel_outfits_list.xml b/indra/newview/skins/default/xui/es/panel_outfits_list.xml index 661b44e419fdc6d068251e9cac214956a804a633..3f8057f242ef62167ca2571b2002478b85b44958 100644 --- a/indra/newview/skins/default/xui/es/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/es/panel_outfits_list.xml @@ -1,7 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Outfits"> + <accordion name="outfits_accordion"> + <no_matched_tabs_text name="no_matched_outfits_msg" value="¿No encuentras lo que buscas? Inténtalo con [secondlife:///app/search/all/[SEARCH_TERM] Buscar]."/> + <no_visible_tabs_text name="no_outfits_msg" value="TodavÃa no tienes vestuario. Inténtalo con [secondlife:///app/search/all/ Buscar]"/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Ver más opciones"/> + <menu_button name="options_gear_btn" tool_tip="Ver más opciones"/> <button name="trash_btn" tool_tip="Eliminar el vestuario seleccionado"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_people.xml b/indra/newview/skins/default/xui/es/panel_people.xml index a9d38dca2502807bae6ed8b37651ad1bf088cdbd..2fcbb00aed1f6d251010f0112cfa80871cf1a1bc 100644 --- a/indra/newview/skins/default/xui/es/panel_people.xml +++ b/indra/newview/skins/default/xui/es/panel_people.xml @@ -76,7 +76,7 @@ <button label="Compartir" name="share_btn" tool_tip="Compartir un objeto del inventario"/> </layout_panel> <layout_panel name="teleport_btn_lp"> - <button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/> + <button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte"/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls1"> diff --git a/indra/newview/skins/default/xui/es/panel_place_profile.xml b/indra/newview/skins/default/xui/es/panel_place_profile.xml index 3c363859a40754b7f5ca4b0d723963fc4616e417..e1cf1332e28515f96092f14fc8a4e700dc285162 100644 --- a/indra/newview/skins/default/xui/es/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/es/panel_place_profile.xml @@ -64,6 +64,8 @@ <text name="scripts_value" value="SÃ"/> <text name="damage_label" value="Daño:"/> <text name="damage_value" value="No"/> + <text name="see_avatars_label" value="Ver los avatares:"/> + <text name="see_avatars_value" value="No"/> <button label="Acerca del terreno" name="about_land_btn"/> </panel> </accordion_tab> diff --git a/indra/newview/skins/default/xui/es/panel_places.xml b/indra/newview/skins/default/xui/es/panel_places.xml index 4c90a7e6b4636318e1022242dd986045aa28acf6..e9984b45123f5383a2a3e875af002ddcc7e08294 100644 --- a/indra/newview/skins/default/xui/es/panel_places.xml +++ b/indra/newview/skins/default/xui/es/panel_places.xml @@ -24,7 +24,7 @@ <menu_button label="â–¼" name="overflow_btn" tool_tip="Ver más opciones"/> </layout_panel> </layout_stack> - <layout_stack name="bottom_bar_ls3"> + <layout_stack name="bottom_bar_profile_ls"> <layout_panel name="profile_btn_lp"> <button label="Perfil" name="profile_btn" tool_tip="Mostrar el perfil del lugar"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml index 96e63e6fa027c0827485e295b726d67f4b27a4a0..620a95de4de5f40f5223ab71d2d63d9153c45ea2 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_advanced.xml @@ -3,6 +3,19 @@ <panel.string name="aspect_ratio_text"> [NUM]:[DEN] </panel.string> + <text name="Cache:"> + Caché: + </text> + <spinner label="Tamaño de la caché (64 - 9984 MB)" name="cachesizespinner"/> + <text name="text_box5"> + MB + </text> + <button label="Vaciar la caché" label_selected="Vaciar la caché" name="clear_cache"/> + <text name="Cache location"> + Localización de la caché: + </text> + <button label="Elegir" label_selected="Elegir" name="set_cache"/> + <button label="Ubicación predeterminada" label_selected="Ubicación predeterminada" name="default_cache_location"/> <text name="UI Size:"> Tamaño de la UI: </text> 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 75d175b262b261881a3b137f4f8a16dd3cdee3fa..5cb1654c70302d8e70c45ff2ddbfdeb41c9cbaa9 100644 --- a/indra/newview/skins/default/xui/es/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/es/panel_preferences_sound.xml @@ -19,6 +19,7 @@ <check_box label="Activado" name="enable_voice_check"/> <check_box label="Permitir la ejecución automática de los media" name="media_auto_play_btn" tool_tip="Marcar esto para permitir la ejecución automática de los media" value="true"/> <check_box label="Ejecutar para otros avatares los media anexados" name="media_show_on_others_btn" tool_tip="Al desmarcar esto se esconderán los media anexados a otros avatares cercanos" value="true"/> + <check_box label="Reproducir sonidos de los gestos" name="gesture_audio_play_btn" tool_tip="Selecciona esta opción para escuchar los sonidos de los gestos" value="verdadero"/> <text name="voice_chat_settings"> Configuración del chat de voz </text> @@ -35,28 +36,5 @@ <button label="Elegir la tecla" name="set_voice_hotkey_button"/> <button name="set_voice_middlemouse_button" tool_tip="Reconfigurarlo al botón medio del ratón"/> <button label="Dispositivos de entrada y salida" name="device_settings_btn" width="210"/> - <panel label="Configuración de dispositivos" name="device_settings_panel"> - <panel.string name="default_text"> - Por defecto - </panel.string> - <panel.string name="default system device"> - Dispositivo del sistema por defecto - </panel.string> - <panel.string name="no device"> - Ningún dispositivo - </panel.string> - <text name="Input"> - Entrada - </text> - <text name="My volume label"> - Mi volumen: - </text> - <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Cambia el volumen usando este deslizable"/> - <text name="wait_text"> - Por favor, espera - </text> - <text name="Output"> - Salida - </text> - </panel> + <panel label="Configuración de dispositivos" name="device_settings_panel"/> </panel> diff --git a/indra/newview/skins/default/xui/es/panel_region_environment.xml b/indra/newview/skins/default/xui/es/panel_region_environment.xml new file mode 100644 index 0000000000000000000000000000000000000000..a73f1deed40dbd0a014c210da6fce226b4cf4342 --- /dev/null +++ b/indra/newview/skins/default/xui/es/panel_region_environment.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Entorno" name="panel_env_info"> + <text name="water_settings_title"> + Selecciona la configuración de agua y cielo/ciclo del dÃa que deseas que vean todos los visitantes de tu región. Más información + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Usar los valores predeterminados de Second Life" name="use_sl_default_settings"/> + <radio_item label="Usar la configuración siguiente" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="water_settings_title"> + Configuración de agua + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="-Selecciona un valor predefinido-" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + Cielo/Ciclo del dÃa + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="Cielo invariable" name="my_sky_settings"/> + <radio_item label="Ciclo del dÃa" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="-Selecciona un valor predefinido-" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="-Selecciona un valor predefinido-" name="item0"/> + </combo_box> + </panel> + <button label="Aplicar" name="apply_btn"/> + <button label="Cancelar" name="cancel_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/es/panel_region_terrain.xml b/indra/newview/skins/default/xui/es/panel_region_terrain.xml index 98b10e4895c8adc191e2c75a52513a6b079ca9e2..cb6c03dbb5fa2f6d67c2fbabf4838d0883115844 100644 --- a/indra/newview/skins/default/xui/es/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/es/panel_region_terrain.xml @@ -7,21 +7,56 @@ desconocida </text> <spinner label="Nivel del agua" name="water_height_spin"/> - <button label="?" name="water_height_help"/> - <spinner label="LÃmite de elevación del terreno" name="terrain_raise_spin"/> - <button label="?" name="terrain_raise_help"/> - <spinner label="LÃmite de bajada del terreno" name="terrain_lower_spin" bottom_delta="-34"/> - <button label="?" name="terrain_lower_help"/> - <check_box label="Usar el Sol del estado" name="use_estate_sun_check"/> - <button label="?" name="use_estate_sun_help"/> - <check_box label="Fijar el Sol" name="fixed_sun_check"/> - <button label="?" name="fixed_sun_help"/> - <slider label="Fase" name="sun_hour_slider"/> + <spinner label="LÃmite de elevación +del terreno" name="terrain_raise_spin"/> + <spinner bottom_delta="-34" label="LÃmite de bajada del +terreno" name="terrain_lower_spin"/> + <text name="detail_texture_text"> + Texturas del terreno (requiere archivos .tga de 512x512, 24 bits) + </text> + <text name="height_text_lbl"> + 1 (bajo) + </text> + <text name="height_text_lbl2"> + 2 + </text> + <text name="height_text_lbl3"> + 3 + </text> + <text name="height_text_lbl4"> + 4 (alto) + </text> + <text name="height_text_lbl5"> + Intervalos de elevación de textura + </text> + <text name="height_text_lbl10"> + Estos valores representan la gama de mezclas para las texturas anteriores. + </text> + <text name="height_text_lbl11"> + El valor BAJA mide en metros la altura MÃXIMA de la textura n.º 1, y el valor ALTA es la altura MÃNIMA de la textura n.º 4. + </text> + <text name="height_text_lbl6"> + Noroeste + </text> + <text name="height_text_lbl7"> + Noreste + </text> + <spinner label="Bajo" name="height_start_spin_1"/> + <spinner label="Bajo" name="height_start_spin_3"/> + <spinner label="Alto" name="height_range_spin_1"/> + <spinner label="Alto" name="height_range_spin_3"/> + <text name="height_text_lbl8"> + Suroeste + </text> + <text name="height_text_lbl9"> + Sureste + </text> + <spinner label="Bajo" name="height_start_spin_0"/> + <spinner label="Bajo" name="height_start_spin_2"/> + <spinner label="Alto" name="height_range_spin_0"/> + <spinner label="Alto" name="height_range_spin_2"/> + <button label="Descargar el RAW del terreno..." name="download_raw_btn" tool_tip="Disponible sólo para los propietarios del estado, no para los administradores" width="230"/> + <button label="Subir un RAW para el terreno..." name="upload_raw_btn" tool_tip="Disponible sólo para los propietarios del estado, no para los administradores" width="230"/> + <button label="Predeterminar este terreno" name="bake_terrain_btn" tool_tip="Definir el terreno actual como punto medio para los lÃmites de elevación/bajada" width="230"/> <button label="Aplicar" name="apply_btn"/> - <button width="230" label="Descargar el RAW del terreno..." name="download_raw_btn" tool_tip="Disponible sólo para los propietarios del estado, no para los administradores"/> - <button left="246" label="?" name="download_raw_help"/> - <button width="230" label="Subir un RAW para el terreno..." name="upload_raw_btn" tool_tip="Disponible sólo para los propietarios del estado, no para los administradores"/> - <button left="246" label="?" name="upload_raw_help"/> - <button width="230" label="Predeterminar este terreno" name="bake_terrain_btn" tool_tip="Definir el terreno actual como punto medio para los lÃmites de elevación/bajada"/> - <button left="246" label="?" name="bake_terrain_help"/> </panel> diff --git a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml index b233fdd7348665f8276fdaea282655683a63db45..84d19c703b101b962b5676a47f4a2234d3bc2bf1 100644 --- a/indra/newview/skins/default/xui/es/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/es/sidepanel_inventory.xml @@ -1,6 +1,38 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Cosas" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> + <layout_stack name="inventory_layout_stack"> + <layout_panel name="inbox_layout_panel"> + <panel label="" name="marketplace_inbox"> + <string name="InboxLabelWithArg"> + Objetos recibidos ([NUM]) + </string> + <string name="InboxLabelNoArg"> + Objetos recibidos + </string> + <button label="Objetos recibidos" name="inbox_btn"/> + <text name="inbox_fresh_new_count"> + [NUM] Nuevos + </text> + <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <text name="inbox_inventory_placeholder"> + Aquà se entregarán las compras realizadas en el mercado. + </text> + </panel> + </panel> + </layout_panel> + <layout_panel name="outbox_layout_panel"> + <panel label="" name="marketplace_outbox"> + <button label="Buzón de salida de comerciante" name="outbox_btn"/> + <button label="" name="outbox_sync_btn" tool_tip="Poner en el escaparate de Mi Mercado"/> + <panel tool_tip="Drag and drop items here to prepare them for sale on your storefront"> + <text name="outbox_inventory_placeholder"> + Configura tu cuenta de comerciante para utilizar esta función. + </text> + </panel> + </panel> + </layout_panel> + </layout_stack> <panel name="button_panel"> <layout_stack name="button_panel_ls"> <layout_panel name="info_btn_lp"> diff --git a/indra/newview/skins/default/xui/es/strings.xml b/indra/newview/skins/default/xui/es/strings.xml index 72d7493a0282efd296e41d8d1c70ea023e45056b..51ac3849edd54901fbe0be4ff52333ee5e679d40 100644 --- a/indra/newview/skins/default/xui/es/strings.xml +++ b/indra/newview/skins/default/xui/es/strings.xml @@ -1171,6 +1171,12 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="InventoryNoTexture"> No tienes en tu inventario una copia de esta textura </string> + <string name="InventoryInboxNoItems"> + Aquà se entregarán los objetos comprados en el mercado. + </string> + <string name="InventoryOutboxNoItems"> + Arrastra objetos aquà para preparar una lista del escaparate de tu mercado. + </string> <string name="no_transfer" value="(no transferible)"/> <string name="no_modify" value="(no modificable)"/> <string name="no_copy" value="(no copiable)"/> @@ -1295,6 +1301,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="InvFolder All"> Todas </string> + <string name="no_attachments"> + No tienes puestos anexos + </string> <string name="Buy"> Comprar </string> @@ -1630,6 +1639,9 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="IMTeen"> teen </string> + <string name="Anyone"> + cualquiera + </string> <string name="RegionInfoError"> error </string> @@ -1846,6 +1858,12 @@ Intenta iniciar sesión de nuevo en unos instantes. <string name="Public"> Público </string> + <string name="LocalSettings"> + Configuración local + </string> + <string name="RegionSettings"> + Configuración de la región + </string> <string name="ClassifiedClicksTxt"> Clics: [TELEPORT] teleportes, [MAP] mapa, [PROFILE] perfil </string> @@ -3637,6 +3655,9 @@ Si sigues recibiendo este mensaje, contacta con [SUPPORT_SITE]. <string name="LocationCtrlGeneralIconTooltip"> Región General </string> + <string name="LocationCtrlSeeAVsTooltip"> + Los avatares están visibles y está permitido el chat fuera de esta parcela + </string> <string name="UpdaterWindowTitle"> Actualizar [APP_NAME] </string> 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 bef41bb1bab19669dc31f3ef7726f6a55384a53b..55dd913a22a27f8ad67a465784ddb5fbbd34023b 100644 --- a/indra/newview/skins/default/xui/fr/floater_about_land.xml +++ b/indra/newview/skins/default/xui/fr/floater_about_land.xml @@ -135,12 +135,12 @@ 0 </text> <button label="Acheter du terrain" label_selected="Acheter le terrain..." left_delta="60" name="Buy Land..." width="125"/> + <button label="Vente Linden" label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d'un résident, avoir un contenu défini et ne pas être aux enchères."/> <button label="Infos sur les scripts" name="Scripts..." width="110"/> <button label="Acheter pour le groupe" label_selected="Acheter pour le groupe..." name="Buy For Group..."/> <button label="Acheter un pass" label_selected="Acheter un pass..." left_delta="-127" name="Buy Pass..." tool_tip="Un pass vous donne un accès temporaire à ce terrain." width="125"/> <button label="Abandonner le terrain" label_selected="Abandonner le terrain..." name="Abandon Land..."/> <button label="Récupérer le terrain" label_selected="Redemander le terrain…" name="Reclaim Land..."/> - <button label="Vente Linden" label_selected="Vente Linden..." name="Linden Sale..." tool_tip="Le terrain doit être la propriété d'un résident, avoir un contenu défini et ne pas être aux enchères."/> </panel> <panel label="RÈGLEMENT" name="land_covenant_panel"> <panel.string name="can_resell"> @@ -312,6 +312,9 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. <panel.string name="push_restrict_region_text"> Pas de bousculades (les règles de la région priment) </panel.string> + <panel.string name="see_avs_text"> + Voir et chatter avec les résidents sur cette parcelle + </panel.string> <text name="allow_label"> Autoriser les autres résidents à : </text> @@ -374,6 +377,10 @@ Seules les parcelles de grande taille peuvent apparaître dans la recherche. Photo : </text> <texture_picker label="" name="snapshot_ctrl" tool_tip="Cliquez pour sélectionner une image"/> + <text name="allow_label5"> + Autoriser les résidents sur les autres parcelles à : + </text> + <check_box label="Voir les avatars" name="SeeAvatarsCheck" tool_tip="Permettre aux résidents présents sur d'autres parcelles de voir et chatter avec les résidents présents sur cette parcelle et vous permettre de les voir et de chatter avec eux."/> <text name="landing_point"> Lieu d'arrivée : [LANDING] </text> @@ -434,6 +441,11 @@ musique : Son : </text> <check_box label="Limiter les gestes et sons d'objet à cette parcelle" name="check sound local"/> + <text name="Avatar Sounds:"> + Sons d'avatar : + </text> + <check_box label="Tout le monde" name="all av sound check"/> + <check_box label="Groupe" name="group av sound check"/> <text name="Voice settings:"> Voix : </text> diff --git a/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..035bdbe5f36679474e4b8411c0cc4e0b6a15332d --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_delete_env_preset.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<floater name="Delete Env Preset" title="SUPPRIMER PRÉRÉGLAGE ENV."> + <string name="title_water"> + Supprimer un préréglage de l'eau + </string> + <string name="title_sky"> + Supprimer un préréglage du ciel + </string> + <string name="title_day_cycle"> + Supprimer un cycle du jour + </string> + <string name="label_water"> + Préréglage : + </string> + <string name="label_sky"> + Préréglage : + </string> + <string name="label_day_cycle"> + Cycle du jour : + </string> + <string name="msg_confirm_deletion"> + Voulez-vous vraiment supprimer le préréglage sélectionné ? + </string> + <string name="msg_sky_is_referenced"> + Impossible de supprimer un préréglage référencé dans un ou plusieurs cycles du jour. + </string> + <string name="combo_label"> + -Effectuer une sélection- + </string> + <text name="label"> + Préréglage : + </text> + <button label="Supprimer" name="delete"/> + <button label="Annuler" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml new file mode 100644 index 0000000000000000000000000000000000000000..0100419bc53d07119bfa4cab227118b0e278fbc3 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_edit_day_cycle.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Day cycle" title="Modifier un cycle du jour"> + <string name="title_new"> + Créer un nouveau cycle du jour + </string> + <string name="title_edit"> + Modifier un cycle du jour + </string> + <string name="hint_new"> + Donnez un nom au cycle du jour, ajustez les contrôles afin de le créer, puis cliquez sur Enregistrer. + </string> + <string name="hint_edit"> + Pour modifier le cycle du jour, ajustez les contrôles ci-dessous, puis cliquez sur Enregistrer. + </string> + <string name="combo_label"> + -Effectuer une sélection- + </string> + <text name="label"> + Nom du préréglage : + </text> + <text name="note"> + Remarque : si vous changez votre préréglage de nom, un nouveau préréglage sera créé et celui existant restera tel quel. + </text> + <text name="hint_item1"> + - Cliquez sur un repère pour modifier le réglage du ciel et l'heure associés. + </text> + <text name="hint_item2"> + - Cliquez sur les repères et faites-les glisser afin de définir les heures de transition. + </text> + <text name="hint_item3"> + - Déplacez le marqueur en forme de triangle pour afficher un aperçu du cycle du jour. + </text> + <panel name="day_cycle_slider_panel"> + <multi_slider initial_value="0" name="WLTimeSlider"/> + <multi_slider initial_value="0" name="WLDayCycleKeys"/> + <button label="Ajouter clé" label_selected="Ajouter clé" name="WLAddKey"/> + <button label="Supprimer clé" label_selected="Supprimer clé" name="WLDeleteKey"/> + <text name="WL12am"> + Min. + </text> + <text name="WL3am"> + 3h + </text> + <text name="WL6am"> + 6h + </text> + <text name="WL9amHash"> + 9h + </text> + <text name="WL12pmHash"> + Midi + </text> + <text name="WL3pm"> + 15h + </text> + <text name="WL6pm"> + 18h + </text> + <text name="WL9pm"> + 21h + </text> + <text name="WL12am2"> + Min. + </text> + <text name="WL12amHash"> + | + </text> + <text name="WL3amHash"> + I + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL9amHash2"> + I + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL3pmHash"> + I + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL9pmHash"> + I + </text> + <text name="WL12amHash2"> + | + </text> + </panel> + <text name="WLCurKeyPresetText"> + Réglage du ciel : + </text> + <combo_box label="Préréglage" name="WLSkyPresets"/> + <text name="WLCurKeyTimeText"> + Heure : + </text> + <time name="time" value="6h"/> + <check_box label="Appliquer ce nouveau cycle du jour" name="make_default_cb"/> + <button label="Enregistrer" name="save"/> + <button label="Annuler" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..4ec9bbb3ddcee156c73df1c00ad8b396a374adb3 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_edit_sky_preset.xml @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Sky Preset" title="Modifier un préréglage du ciel"> + <string name="title_new"> + Créer un nouveau préréglage du ciel + </string> + <string name="title_edit"> + Modifier un préréglage du ciel + </string> + <string name="hint_new"> + Donnez un nom à votre préréglage, ajustez les contrôles afin de le créer, puis cliquez sur Enregistrer. + </string> + <string name="hint_edit"> + Pour modifier le préréglage du ciel, ajustez les contrôles, puis cliquez sur Enregistrer. + </string> + <string name="combo_label"> + -Effectuer une sélection- + </string> + <text name="hint"> + Pour modifier le préréglage, ajustez les contrôles, puis cliquez sur Enregistrer. + </text> + <text name="label"> + Nom du préréglage : + </text> + <text name="note"> + Remarque : si vous changez votre préréglage de nom, un nouveau préréglage sera créé et celui existant restera tel quel. + </text> + <tab_container name="WindLight Tabs"> + <panel label="ATMOSPHÈRE" name="Atmosphere"> + <text name="BHText"> + Bleu de l'horizon + </text> + <text name="BDensText"> + Quantité de brume + </text> + <text name="BDensText2"> + Densité du bleu + </text> + <text name="HDText"> + Densité de la brume + </text> + <text name="DensMultText"> + Multiplicateur de densité + </text> + <text name="WLDistanceMultText"> + Multiplicateur de distance + </text> + <text name="MaxAltText"> + Altitude maximum + </text> + </panel> + <panel label="LUMIÈRE" name="Lighting"> + <text name="SLCText"> + Couleur soleil/lune + </text> + <text name="WLAmbientText"> + Éclairage ambiant + </text> + <text name="SunGlowText"> + Rayonnement du soleil + </text> + <slider label="Netteté" name="WLGlowB"/> + <slider label="Taille" name="WLGlowR"/> + <text name="WLStarText"> + Éclat des étoiles + </text> + <text name="SceneGammaText"> + Gamma de la scène + </text> + <text name="TODText"> + Position soleil/lune + </text> + <multi_slider initial_value="0" name="WLSunPos"/> + <text name="WL12amHash"> + | + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL12amHash2"> + | + </text> + <text name="WL12am"> + Min. + </text> + <text name="WL6am"> + 6h + </text> + <text name="WL12pmHash"> + Midi + </text> + <text name="WL6pm"> + 18h + </text> + <text name="WL12am2"> + Min. + </text> + <time name="WLDayTime" value="6h"/> + <text name="WLEastAngleText"> + Angle du levant + </text> + </panel> + <panel label="NUAGES" name="Clouds"> + <text name="WLCloudColorText"> + Couleur des nuages + </text> + <text name="WLCloudColorText2"> + Nuages - XY/Densité + </text> + <slider label="X" name="WLCloudX"/> + <slider label="Y" name="WLCloudY"/> + <slider label="D" name="WLCloudDensity"/> + <text name="WLCloudCoverageText"> + Couverture nuageuse + </text> + <text name="WLCloudScaleText"> + Altitude des nuages + </text> + <text name="WLCloudDetailText"> + Détails des nuages - XY/Densité + </text> + <slider label="X" name="WLCloudDetailX"/> + <slider label="Y" name="WLCloudDetailY"/> + <slider label="D" name="WLCloudDetailDensity"/> + <text name="WLCloudScrollXText"> + Direction et vitesse X + </text> + <check_box label="Verrouiller" name="WLCloudLockX"/> + <text name="WLCloudScrollYText"> + Direction et vitesse Y + </text> + <check_box label="Verrouiller" name="WLCloudLockY"/> + </panel> + </tab_container> + <check_box label="Appliquer ce nouveau préréglage pour le ciel" name="make_default_cb"/> + <button label="Enregistrer" name="save"/> + <button label="Annuler" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..81d9d34cfb606680cec823af1f31b6a1252ddca1 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_edit_water_preset.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Water Preset" title="Modifier un préréglage de l'eau"> + <string name="title_new"> + Créer un nouveau préréglage de l'eau + </string> + <string name="title_edit"> + Modifier un préréglage de l'eau + </string> + <string name="hint_new"> + Donnez un nom à votre préréglage, ajustez les contrôles afin de le créer, puis cliquez sur Enregistrer. + </string> + <string name="hint_edit"> + Pour modifier le préréglage de l'eau, ajustez les contrôles, puis cliquez sur Enregistrer. + </string> + <string name="combo_label"> + -Effectuer une sélection- + </string> + <text name="hint"> + Pour modifier le préréglage, ajustez les contrôles, puis cliquez sur Enregistrer. + </text> + <text name="label"> + Nom du préréglage : + </text> + <text name="note"> + Remarque : si vous changez votre préréglage de nom, un nouveau préréglage sera créé et celui existant restera tel quel. + </text> + <panel name="panel_water_preset"> + <text name="water_color_label"> + Couleur du brouillard dans l'eau + </text> + <text name="water_fog_density_label"> + Densité du brouillard + </text> + <text name="underwater_fog_modifier_label"> + Brouillard sous-marin + </text> + <text name="BHText"> + Direction grande vague + </text> + <slider label="X" name="WaterWave1DirX"/> + <slider label="Y" name="WaterWave1DirY"/> + <text name="BDensText"> + Échelle des vaguelettes + </text> + <text name="HDText"> + Échelle Fresnel + </text> + <text name="FresnelOffsetText"> + Décalage Fresnel + </text> + <text name="BHText2"> + Direction petite vague + </text> + <slider label="X" name="WaterWave2DirX"/> + <slider label="Y" name="WaterWave2DirY"/> + <text name="DensMultText"> + Réfraction au-dessus + </text> + <text name="WaterScaleBelowText"> + Réfraction en dessous + </text> + <text name="MaxAltText"> + Multiplicateur de flou + </text> + <text name="BHText3"> + Normal Map + </text> + </panel> + <check_box label="Appliquer ce nouveau préréglage pour l'eau" name="make_default_cb"/> + <button label="Enregistrer" name="save"/> + <button label="Annuler" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_environment_settings.xml b/indra/newview/skins/default/xui/fr/floater_environment_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..9ea47a3dd719116335791d2ea1275aca3be805f8 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/floater_environment_settings.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Environment Editor Floater" title="PARAMÈTRES D'ENVIRONNEMENT"> + <text name="note"> + Utilisez les options ci-dessous pour personnaliser l'environnement de votre client. + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Utiliser les réglages de la région" name="use_region_settings"/> + <radio_item label="Personnaliser mon environnement" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="note"> + Remarque : les autres utilisateurs ne pourront pas voir votre configuration personnalisée. + </text> + <text name="water_settings_title"> + Réglage de l'eau + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="-Effectuer une sélection-" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + Ciel / Cycle du jour + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="Ciel fixe" name="my_sky_settings"/> + <radio_item label="Cycle du jour" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="-Effectuer une sélection-" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="-Effectuer une sélection-" name="item0"/> + </combo_box> + </panel> + <button label="OK" name="ok_btn"/> + <button label="Annuler" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/fr/floater_model_preview.xml b/indra/newview/skins/default/xui/fr/floater_model_preview.xml index 213847bbd0b0153fb7bf965a474972d4938fd662..4788f674c889a7fbb8d62a264e5ce08cec5ca5de 100644 --- a/indra/newview/skins/default/xui/fr/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/fr/floater_model_preview.xml @@ -3,6 +3,9 @@ <string name="status_idle"> Inactif </string> + <string name="status_parse_error"> + Problème d'analyse de fichier .dae ; reportez-vous au journal pour plus de détails. + </string> <string name="status_reading_file"> Chargement... </string> @@ -12,6 +15,9 @@ <string name="status_vertex_number_overflow"> Erreur : valeur de sommet supérieure à 65534. Opération abandonnée. </string> + <string name="bad_element"> + Erreur : élément non valide + </string> <string name="high"> Élevé </string> diff --git a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml index bb64361959928686fe178feb4b2756258e345a6b..ebb87f3ba4087f7345c1d44daf38a80d56a3d4a5 100644 --- a/indra/newview/skins/default/xui/fr/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/fr/floater_model_wizard.xml @@ -193,6 +193,9 @@ <string name="status_idle"> Inactif </string> + <string name="status_parse_error"> + Problème d'analyse de fichier .dae ; reportez-vous au journal pour plus de détails. + </string> <string name="status_reading_file"> Chargement... </string> @@ -202,6 +205,9 @@ <string name="status_vertex_number_overflow"> Erreur : valeur de sommet supérieure à 65534. Opération abandonnée. </string> + <string name="bad_element"> + Erreur : élément non valide + </string> <string name="high"> Élevé </string> diff --git a/indra/newview/skins/default/xui/fr/floater_tools.xml b/indra/newview/skins/default/xui/fr/floater_tools.xml index 09d77a8d34ca757309e5d12d4690334d36b39861..908048192e824772ca6649444c1f62af1250904d 100644 --- a/indra/newview/skins/default/xui/fr/floater_tools.xml +++ b/indra/newview/skins/default/xui/fr/floater_tools.xml @@ -405,7 +405,7 @@ </combo_box> <spinner label="Gravité" name="Physics Gravity"/> <spinner label="Friction" name="Physics Friction"/> - <spinner label="Densité" name="Physics Density"/> + <spinner label="Densité en 100 kg/m^3" name="Physics Density"/> <spinner label="Restitution" name="Physics Restitution"/> </panel> <panel label="Texture" name="Texture"> diff --git a/indra/newview/skins/default/xui/fr/menu_login.xml b/indra/newview/skins/default/xui/fr/menu_login.xml index 400c77e51a5746e102d3cd07295a9bfae67e1be4..6b96a16e75b6173f6ff9616b3f971a97dcc949e1 100644 --- a/indra/newview/skins/default/xui/fr/menu_login.xml +++ b/indra/newview/skins/default/xui/fr/menu_login.xml @@ -18,7 +18,7 @@ <menu_item_call label="Afficher les conditions d'utilisation" name="TOS"/> <menu_item_call label="Afficher le message critique" name="Critical"/> <menu_item_call label="Test du navigateur de médias" name="Web Browser Test"/> - <menu_item_call label="Test de la fenêtre flottante du contenu Web" name="Web Content Floater Test"/> + <menu_item_call label="Test de débogage de la fenêtre flottante du contenu Web" name="Web Content Floater Debug Test"/> <menu_item_check label="Afficher le sélecteur de grille" name="Show Grid Picker"/> <menu_item_call label="Afficher la console des notifications" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml index 45f97e062e48271c99c3f22eba1fdd32a0dcd7b4..0aad174fbdb25316f25b7993158dc464c7b589c9 100644 --- a/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/fr/menu_people_nearby_view_sort.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="menu_group_plus"> +<toggleable_menu name="menu_group_plus"> <menu_item_check label="Trier par intervenants récents" name="sort_by_recent_speakers"/> <menu_item_check label="Trier par nom" name="sort_name"/> <menu_item_check label="Trier par distance" name="sort_distance"/> <menu_item_check label="Afficher les icônes des résidents" name="view_icons"/> + <menu_item_check label="Afficher la carte" name="view_map"/> <menu_item_call label="Afficher les résidents et les objets interdits" name="show_blocked_list"/> -</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 d614cfe00c2f69113b31d73f55a6aaf3522b8071..ccea1e45701c96f5bd1b33558f2b871c053bef72 100644 --- a/indra/newview/skins/default/xui/fr/menu_viewer.xml +++ b/indra/newview/skins/default/xui/fr/menu_viewer.xml @@ -31,6 +31,7 @@ <menu_item_call label="Mes groupes" name="My Groups"/> <menu_item_check label="Chat près de moi" name="Nearby Chat"/> <menu_item_call label="Personnes près de moi" name="Active Speakers"/> + <menu_item_check label="Chat vocal près de vous" name="Nearby Voice"/> </menu> <menu label="Monde" name="World"> <menu_item_check label="Mini-carte" name="Mini-Map"/> @@ -63,8 +64,24 @@ <menu_item_call label="Milieu de journée" name="Noon"/> <menu_item_call label="Coucher de soleil" name="Sunset"/> <menu_item_call label="Minuit" name="Midnight"/> - <menu_item_call label="Heure du domaine" name="Revert to Region Default"/> - <menu_item_call label="Éditeur d'environnement" name="Environment Editor"/> + </menu> + <menu label="Éditeur d'environnement" name="Enviroment Editor"> + <menu_item_call label="Paramètres d'environnement..." name="Enviroment Settings"/> + <menu label="Préréglages de l'eau" name="Water Presets"> + <menu_item_call label="Nouveau préréglage..." name="new_water_preset"/> + <menu_item_call label="Modifier un préréglage..." name="edit_water_preset"/> + <menu_item_call label="Supprimer un préréglage..." name="delete_water_preset"/> + </menu> + <menu label="Préréglages du ciel" name="Sky Presets"> + <menu_item_call label="Nouveau préréglage..." name="new_sky_preset"/> + <menu_item_call label="Modifier un préréglage..." name="edit_sky_preset"/> + <menu_item_call label="Supprimer un préréglage..." name="delete_sky_preset"/> + </menu> + <menu label="Préréglages du jour" name="Day Presets"> + <menu_item_call label="Nouveau préréglage..." name="new_day_preset"/> + <menu_item_call label="Modifier un préréglage..." name="edit_day_preset"/> + <menu_item_call label="Supprimer un préréglage..." name="delete_day_preset"/> + </menu> </menu> </menu> <menu label="Construire" name="BuildTools"> diff --git a/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml b/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml index 0ca9fe18791d1bfe68ad9cc02f073fa7ba626fb0..c3d9d908b0e840dfe23ca3456a94c7bd0a363d89 100644 --- a/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/fr/menu_wearing_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Gear Wearing"> +<toggleable_menu name="Gear Wearing"> <menu_item_call label="Modifier la tenue" name="edit"/> <menu_item_call label="Enlever" name="takeoff"/> -</menu> + <menu_item_call label="Copier la liste de la tenue dans le presse-papiers" name="copy"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/fr/notifications.xml b/indra/newview/skins/default/xui/fr/notifications.xml index 6bfab25087a177f65f7051083b3d8e78cbb9b2ae..52b8e8569a0715e6fcae5e210b6dbf0f409cef7d 100644 --- a/indra/newview/skins/default/xui/fr/notifications.xml +++ b/indra/newview/skins/default/xui/fr/notifications.xml @@ -1550,6 +1550,11 @@ Veuillez réessayer ultérieurement. <button name="Cancel" text="Annuler"/> </form> </notification> + <notification name="TooManyTeleportOffers"> + Vous avez essayé d'effectuer [OFFERS] offres de téléportation, +or ce nombre dépasse la limite autorisée fixée à [LIMIT]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OfferTeleportFromGod"> Exiger du résident qu'il vienne vous rejoindre ? <form name="form"> @@ -1971,6 +1976,10 @@ Souhaitez-vous quitter le mode occupé avant de terminer cette transaction ? Êtes-vous certain de vouloir supprimer l'historique de vos visites et recherches ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> </notification> + <notification name="ConfirmClearCache"> + Voulez-vous vraiment vider le cache de votre client ? + <usetemplate name="okcancelbuttons" notext="Annuler" yestext="OK"/> + </notification> <notification name="ConfirmClearCookies"> Êtes-vous certain de vouloir supprimer vos cookies ? <usetemplate name="okcancelbuttons" notext="Annuler" yestext="Oui"/> @@ -1996,48 +2005,30 @@ Liez-la à partir d'une page web pour permettre aux autres résidents d&apo Voulez-vous écraser l'option précédemment enregistrée ? <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> </notification> - <notification name="WLDeletePresetAlert"> - Voulez-vous supprimer [SKY] ? - <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> - </notification> <notification name="WLNoEditDefault"> Vous ne pouvez pas modifier ou supprimer un préréglage par défaut. </notification> <notification name="WLMissingSky"> Une dossier semble manquer au Cycle du jour : [SKY]. </notification> - <notification name="PPSaveEffectAlert"> - Certains effets post-traitement existent. Voulez-vous quand même écraser ce fichier ? - <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> - </notification> - <notification name="NewSkyPreset"> - Nommez le nouveau ciel. - <form name="form"> - <input name="message"> - Nouveau préréglage - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Annuler"/> - </form> + <notification name="WLRegionApplyFail"> + Impossible d'appliquer les réglages à la région. Le problème est parfois résolu en quittant la région puis en y revenant. Motif fourni : [FAIL_REASON] </notification> - <notification name="ExistsSkyPresetAlert"> - Ce préréglage existe déjà  ! + <notification name="EnvCannotDeleteLastDayCycleKey"> + Impossible de supprimer la dernière clé de ce cycle du jour car ce dernier ne peut pas être vide. Modifiez la dernière clé restante au lieu d'essayer de la supprimer puis d'en créer une nouvelle. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="NewWaterPreset"> - Nommez ce nouveau préréglage d'eau. - <form name="form"> - <input name="message"> - Nouveau préréglage - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Annuler"/> - </form> + <notification name="DayCycleTooManyKeyframes"> + Impossible d'ajouter plus d'images-clés à ce cycle du jour. Un maximum de [MAX] images-clés peut être associé aux cycles du jour de type [SCOPE]. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="ExistsWaterPresetAlert"> - Ce préréglage existe déjà  ! + <notification name="EnvUpdateRate"> + Vous ne pouvez mettre à jour les paramètres d'environnement d'une région que toutes les [WAIT] secondes. Veuillez patienter pendant au moins ce délai avant de réessayer. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="WaterNoEditDefault"> - Vous ne pouvez pas modifier ou supprimer un préréglage par défaut. + <notification name="PPSaveEffectAlert"> + Certains effets post-traitement existent. Voulez-vous quand même écraser ce fichier ? + <usetemplate name="okcancelbuttons" notext="Non" yestext="Oui"/> </notification> <notification name="ChatterBoxSessionStartError"> Impossible de démarrer une nouvelle session de chat avec [RECIPIENT]. @@ -2329,6 +2320,9 @@ Vous ne pouvez pas voler ici. <notification name="NoBuild"> La construction est interdite dans cette zone. Vous ne pouvez pas construite ou rezzer d'objets ici. </notification> + <notification name="SeeAvatars"> + Cette parcelle masque les avatars et le chat écrit des autres parcelles. Vous ne pouvez pas voir les résidents qui se trouvent en dehors, et ceux qui se trouvent en dehors ne peuvent pas vous voir. Le chat écrit habituel sur le canal 0 est également bloqué. + </notification> <notification name="ScriptsStopped"> Un administrateur a temporairement stoppé les scripts dans cette région. </notification> @@ -2756,7 +2750,9 @@ Le bouton sera affiché quand il y aura suffisamment de place. Sélectionnez les résidents avec lesquels partager l'élément. </notification> <notification name="MeshUploadError"> - Échec de chargement de [LABEL] : [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + Échec de chargement de [LABEL] : [MESSAGE] [IDENTIFIER] + +Voir le fichier journal pour plus de détails. </notification> <notification name="ShareItemsConfirmation"> Voulez-vous vraiment partager les articles suivants : diff --git a/indra/newview/skins/default/xui/fr/panel_outfits_list.xml b/indra/newview/skins/default/xui/fr/panel_outfits_list.xml index ab352deec49f73460c0dd09300e42f2d5f5913e4..416353e1d4b71c8b1060b77c4742af1c88ee9f25 100644 --- a/indra/newview/skins/default/xui/fr/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/fr/panel_outfits_list.xml @@ -1,7 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Outfits"> + <accordion name="outfits_accordion"> + <no_matched_tabs_text name="no_matched_outfits_msg" value="Vous n'avez pas trouvé ce que vous cherchiez ? Essayez [secondlife:///app/search/all/[SEARCH_TERM] Rechercher]."/> + <no_visible_tabs_text name="no_outfits_msg" value="Aucune tenue n'est actuellement en votre possession. Essayez [secondlife:///app/search/all Rechercher]."/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Afficher d'autres options"/> + <menu_button name="options_gear_btn" tool_tip="Afficher d'autres options"/> <button name="trash_btn" tool_tip="Supprimer la tenue sélectionnée"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_people.xml b/indra/newview/skins/default/xui/fr/panel_people.xml index b24c340708490c1e6d7eaa6d3c4c9730e16c6b0b..f035853efcdb1691bd0c5c0dbbddfed37549e393 100644 --- a/indra/newview/skins/default/xui/fr/panel_people.xml +++ b/indra/newview/skins/default/xui/fr/panel_people.xml @@ -67,16 +67,16 @@ Pour rechercher des résidents avec qui passer du temps, utilisez [secondlife:// <button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/> </layout_panel> <layout_panel name="im_btn_lp"> - <button label="IM" name="im_btn" tool_tip="Ouvrir une session IM"/> + <button label="IM" name="im_btn" tool_tip="Ouvrir une session IM."/> </layout_panel> <layout_panel name="call_btn_lp"> - <button label="Appel" name="call_btn" tool_tip="Appeler ce résident"/> + <button label="Appel" name="call_btn" tool_tip="Appeler ce résident."/> </layout_panel> <layout_panel name="share_btn_lp"> - <button label="Partager" name="share_btn" tool_tip="Partager un article de l'inventaire"/> + <button label="Partager" name="share_btn" tool_tip="Partager un article de l'inventaire."/> </layout_panel> <layout_panel name="teleport_btn_lp"> - <button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation"/> + <button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation."/> </layout_panel> </layout_stack> <layout_stack name="bottom_bar_ls1"> diff --git a/indra/newview/skins/default/xui/fr/panel_place_profile.xml b/indra/newview/skins/default/xui/fr/panel_place_profile.xml index 3c2c1b9d3740da68a70d163fe92fc3d7c16ce30e..30be83889642a81f5a37ca8d413e21aa4aa550c8 100644 --- a/indra/newview/skins/default/xui/fr/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/fr/panel_place_profile.xml @@ -68,6 +68,8 @@ <text name="scripts_value" value="Activé"/> <text name="damage_label" value="Dégâts :"/> <text name="damage_value" value="Désactivé"/> + <text name="see_avatars_label" value="Voir les avatars :"/> + <text name="see_avatars_value" value="Désactivé"/> <button label="À propos du terrain" name="about_land_btn"/> </panel> </accordion_tab> diff --git a/indra/newview/skins/default/xui/fr/panel_places.xml b/indra/newview/skins/default/xui/fr/panel_places.xml index e252c224f83a1308ddc85d9419a13be8d5b4fce6..509d167704870a2801adab0d3125c700c3b51736 100644 --- a/indra/newview/skins/default/xui/fr/panel_places.xml +++ b/indra/newview/skins/default/xui/fr/panel_places.xml @@ -24,7 +24,7 @@ <menu_button label="â–¼" name="overflow_btn" tool_tip="Afficher d'autres options"/> </layout_panel> </layout_stack> - <layout_stack name="bottom_bar_ls3"> + <layout_stack name="bottom_bar_profile_ls"> <layout_panel name="profile_btn_lp"> <button label="Profil" name="profile_btn" tool_tip="Afficher le profil de l'endroit"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml index 3468afbafe1a6bab46bbd8a3279e3441178b1c97..3f3d0f51f45df646499f7b5b02450053329a67a2 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_advanced.xml @@ -3,6 +3,19 @@ <panel.string name="aspect_ratio_text"> [NUM]:[DEN] </panel.string> + <text name="Cache:"> + Cache : + </text> + <spinner label="Taille du cache (64 - 9984 Mo)" name="cachesizespinner"/> + <text name="text_box5"> + Mo + </text> + <button label="Vider le cache" label_selected="Vider le cache" name="clear_cache"/> + <text name="Cache location"> + Emplacement du cache : + </text> + <button label="Parcourir" label_selected="Parcourir" name="set_cache"/> + <button label="Par défaut" label_selected="Par défaut" name="default_cache_location"/> <text name="UI Size:"> Taille d'interface : </text> diff --git a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml index a404aae483f16c4fb303ec670332c0b317235fa4..deaec2e14fa7f46962e8f724aedb8d856e53c52d 100644 --- a/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/fr/panel_preferences_sound.xml @@ -19,6 +19,7 @@ <check_box label="Activé" name="enable_voice_check"/> <check_box label="Autoriser la lecture automatique du média" name="media_auto_play_btn" tool_tip="Cochez pour autoriser la lecture automatique du média" value="true"/> <check_box label="Lecture du média aux autres avatars" name="media_show_on_others_btn" tool_tip="Décochez pour masquer le média aux autres avatars près de vous" value="true"/> + <check_box label="Lire les sons des gestes" name="gesture_audio_play_btn" tool_tip="Cochez cette case pour entendre les sons associés aux gestes." value="true"/> <text name="voice_chat_settings"> Paramètres du chat vocal </text> @@ -35,28 +36,5 @@ <button label="Définir la touche" name="set_voice_hotkey_button"/> <button name="set_voice_middlemouse_button" tool_tip="Réinitialiser sur le bouton central de la souris"/> <button label="Périphériques d'entrée/de sortie" name="device_settings_btn"/> - <panel label="Paramètres du matériel" name="device_settings_panel"> - <panel.string name="default_text"> - Défaut - </panel.string> - <panel.string name="default system device"> - Périphérique système par défaut - </panel.string> - <panel.string name="no device"> - Aucun périphérique - </panel.string> - <text name="Input"> - Entrée - </text> - <text name="My volume label"> - Mon volume : - </text> - <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Régler le volume avec le curseur"/> - <text name="wait_text"> - Veuillez patienter - </text> - <text name="Output"> - Sortie - </text> - </panel> + <panel label="Paramètres du matériel" name="device_settings_panel"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/panel_region_environment.xml b/indra/newview/skins/default/xui/fr/panel_region_environment.xml new file mode 100644 index 0000000000000000000000000000000000000000..d18503db86404a87d1e195ddb2eec3da2e8d7868 --- /dev/null +++ b/indra/newview/skins/default/xui/fr/panel_region_environment.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Environnement" name="panel_env_info"> + <text name="water_settings_title"> + Sélectionnez les réglages d'eau et de ciel/cycle du jour que vous souhaitez afficher pour tous les résidents visitant votre région. En savoir plus + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Utiliser les réglages par défaut de Second Life" name="use_sl_default_settings"/> + <radio_item label="Utiliser les réglages suivants" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="water_settings_title"> + Réglage de l'eau + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="-Effectuer une sélection-" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + Ciel / Cycle du jour + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="Ciel fixe" name="my_sky_settings"/> + <radio_item label="Cycle du jour" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="-Effectuer une sélection-" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="-Effectuer une sélection-" name="item0"/> + </combo_box> + </panel> + <button label="Appliquer" name="apply_btn"/> + <button label="Annuler" name="cancel_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/fr/panel_region_terrain.xml b/indra/newview/skins/default/xui/fr/panel_region_terrain.xml index 4d7652eb6f7d87d433c741e23aee69bdfcf73eb3..d7e321d06d772635ff3d14922471a0dab22c5a30 100644 --- a/indra/newview/skins/default/xui/fr/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/fr/panel_region_terrain.xml @@ -7,21 +7,56 @@ (inconnue) </text> <spinner label="Niveau de l'eau" name="water_height_spin"/> - <button label="?" name="water_height_help"/> - <spinner label="Limite d'élévation du terrain" name="terrain_raise_spin"/> - <button label="?" name="terrain_raise_help"/> - <spinner label="Limite d'abaissement du terrain" name="terrain_lower_spin" bottom_delta="-34"/> - <button label="?" name="terrain_lower_help"/> - <check_box label="Utiliser le soleil du domaine" name="use_estate_sun_check"/> - <button label="?" name="use_estate_sun_help"/> - <check_box label="Soleil fixe" name="fixed_sun_check"/> - <button label="?" name="fixed_sun_help"/> - <slider label="Phase" name="sun_hour_slider"/> - <button label="Appliquer" name="apply_btn"/> + <spinner label="Limite d'élévation du +terrain" name="terrain_raise_spin"/> + <spinner bottom_delta="-34" label="Limite d'abaissement +du terrain" name="terrain_lower_spin"/> + <text name="detail_texture_text"> + Textures du terrain (fichiers .tga 512 x 512, 24 bit requis) + </text> + <text name="height_text_lbl"> + 1 (Bas) + </text> + <text name="height_text_lbl2"> + 2 + </text> + <text name="height_text_lbl3"> + 3 + </text> + <text name="height_text_lbl4"> + 4 (Haut) + </text> + <text name="height_text_lbl5"> + Limites d'élévation de texture + </text> + <text name="height_text_lbl10"> + Ces valeurs représentent les limites de mélange pour les textures ci-dessus. + </text> + <text name="height_text_lbl11"> + En mètres, la valeur BAS correspond à la hauteur MAXIMUM de la texture n°1 et la valeur HAUT à la hauteur MINIMUM de la texture n°4. + </text> + <text name="height_text_lbl6"> + Nord-ouest + </text> + <text name="height_text_lbl7"> + Nord-est + </text> + <spinner label="Bas" name="height_start_spin_1"/> + <spinner label="Bas" name="height_start_spin_3"/> + <spinner label="Haut" name="height_range_spin_1"/> + <spinner label="Haut" name="height_range_spin_3"/> + <text name="height_text_lbl8"> + Sud-ouest + </text> + <text name="height_text_lbl9"> + Sud-est + </text> + <spinner label="Bas" name="height_start_spin_0"/> + <spinner label="Bas" name="height_start_spin_2"/> + <spinner label="Haut" name="height_range_spin_0"/> + <spinner label="Haut" name="height_range_spin_2"/> <button label="Télécharger le terrain au format RAW..." name="download_raw_btn" tool_tip="Réservé aux propriétaires de domaine, pas aux gérants" width="230"/> - <button label="?" name="download_raw_help" left="246" /> <button label="Charger le terrain au format RAW..." name="upload_raw_btn" tool_tip="Réservé aux propriétaires de domaine, pas aux gérants" width="230"/> - <button label="?" name="upload_raw_help" left="246" /> <button label="Figer le terrain" name="bake_terrain_btn" tool_tip="Définir le terrain actuel comme point central pour les limites d'élévation/abaissement"/> - <button label="?" name="bake_terrain_help"/> + <button label="Appliquer" name="apply_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml index 3c4d2626c1d3e2c799c8776fc524bd70d0437bf4..83543e3d0b51a68888bb2ee986f75d696bcbc39f 100644 --- a/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/fr/sidepanel_inventory.xml @@ -1,6 +1,38 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Choses" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> + <layout_stack name="inventory_layout_stack"> + <layout_panel name="inbox_layout_panel"> + <panel label="" name="marketplace_inbox"> + <string name="InboxLabelWithArg"> + Articles reçus ([NUM]) + </string> + <string name="InboxLabelNoArg"> + Articles reçus + </string> + <button label="Articles reçus" name="inbox_btn"/> + <text name="inbox_fresh_new_count"> + [NUM] nouv. + </text> + <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <text name="inbox_inventory_placeholder"> + Ici seront livrés les achats effectués sur la Place du marché. + </text> + </panel> + </panel> + </layout_panel> + <layout_panel name="outbox_layout_panel"> + <panel label="" name="marketplace_outbox"> + <button label="Boîte d'envoi vendeur" name="outbox_btn"/> + <button label="" name="outbox_sync_btn" tool_tip="Vers ma vitrine de la Place du marché"/> + <panel tool_tip="Drag and drop items here to prepare them for sale on your storefront"> + <text name="outbox_inventory_placeholder"> + Configurez votre compte de vendeur de façon à pouvoir utiliser cette fonctionnalité. + </text> + </panel> + </panel> + </layout_panel> + </layout_stack> <panel name="button_panel"> <layout_stack name="button_panel_ls"> <layout_panel name="info_btn_lp"> diff --git a/indra/newview/skins/default/xui/fr/strings.xml b/indra/newview/skins/default/xui/fr/strings.xml index 077e545851ff43f152fb08fbaedc11d226001555..134ea0c6bb0562015bab3d5877e575d7b44f7ab3 100644 --- a/indra/newview/skins/default/xui/fr/strings.xml +++ b/indra/newview/skins/default/xui/fr/strings.xml @@ -1192,6 +1192,12 @@ Veuillez réessayer de vous connecter dans une minute. <string name="InventoryNoTexture"> Vous n'avez pas de copie de cette texture dans votre inventaire </string> + <string name="InventoryInboxNoItems"> + Ici seront livrés les articles achetés sur la Place du marché. + </string> + <string name="InventoryOutboxNoItems"> + Faites glisser des articles ici en vue de les publier sur votre vitrine de la Place du marché. + </string> <string name="no_transfer" value=" (pas de transfert)"/> <string name="no_modify" value=" (pas de modification)"/> <string name="no_copy" value=" (pas de copie)"/> @@ -1322,6 +1328,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="InvFolder All"> Tout </string> + <string name="no_attachments"> + Aucun élément attaché porté + </string> <string name="Buy"> Acheter </string> @@ -1657,6 +1666,9 @@ Veuillez réessayer de vous connecter dans une minute. <string name="IMTeen"> teen </string> + <string name="Anyone"> + n'importe qui + </string> <string name="RegionInfoError"> erreur </string> @@ -1879,6 +1891,12 @@ Veuillez réessayer de vous connecter dans une minute. <string name="Public"> Public </string> + <string name="LocalSettings"> + Réglages locaux + </string> + <string name="RegionSettings"> + Réglages de la région + </string> <string name="ClassifiedClicksTxt"> Clics : [TELEPORT] téléportation, [MAP] carte, [PROFILE] profil </string> @@ -3724,6 +3742,9 @@ Si ce message persiste, veuillez aller sur la page [SUPPORT_SITE]. <string name="LocationCtrlGeneralIconTooltip"> Région de type Général </string> + <string name="LocationCtrlSeeAVsTooltip"> + Avatars visibles et chat autorisé en dehors de cette parcelle + </string> <string name="UpdaterWindowTitle"> [APP_NAME] - Mise à jour </string> diff --git a/indra/newview/skins/default/xui/it/floater_about_land.xml b/indra/newview/skins/default/xui/it/floater_about_land.xml index a96433d7aa97c71aca13d063e554e417369d1c3e..cf0f8f2f6f66d35b9f18b688d84290dce1e50a38 100644 --- a/indra/newview/skins/default/xui/it/floater_about_land.xml +++ b/indra/newview/skins/default/xui/it/floater_about_land.xml @@ -136,12 +136,12 @@ Vai al menu Mondo > Informazioni sul terreno oppure seleziona un altro appezz 0 </text> <button label="Acquista il terreno..." label_selected="Acquista il terreno..." left="130" name="Buy Land..." width="125"/> + <button label="Vendita Linden" name="Linden Sale..." tool_tip="La terra deve essere di proprietà , con contenuto impostato, e non già messa all'asta."/> <button label="Informazioni script" name="Scripts..."/> <button label="Acquista per il gruppo" name="Buy For Group..."/> <button label="Compra Pass..." label_selected="Compra Pass..." left="130" name="Buy Pass..." tool_tip="Un pass ti da un accesso temporaneo in questo territorio." width="125"/> <button label="Abbandona la terra" name="Abandon Land..."/> <button label="Reclama la terra" name="Reclaim Land..."/> - <button label="Vendita Linden" name="Linden Sale..." tool_tip="La terra deve essere di proprietà , con contenuto impostato, e non già messa all'asta."/> </panel> <panel label="REGOLAMENTO" name="land_covenant_panel"> <panel.string name="can_resell"> @@ -313,6 +313,9 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. <panel.string name="push_restrict_region_text"> Nessuna spinta (Impostazione regionale) </panel.string> + <panel.string name="see_avs_text"> + Vedi i residenti in questo lotto e chatta con loro + </panel.string> <text name="allow_label"> Permetti ad altri residenti di: </text> @@ -375,6 +378,10 @@ Solamente terreni più grandi possono essere abilitati nella ricerca. Fotografia: </text> <texture_picker label="" name="snapshot_ctrl" tool_tip="Clicca per scegliere una immagine"/> + <text name="allow_label5"> + Permetti ai residenti in altri lotti di: + </text> + <check_box label="Vedi avatar" name="SeeAvatarsCheck" tool_tip="Consente ai residenti in altri lotti di vedere i residenti in questo lotto e chattare con loro, e ti consente di vederli e chattare con loro."/> <text name="landing_point"> Punto di atterraggio: [LANDING] </text> @@ -434,6 +441,11 @@ Media: Audio: </text> <check_box label="Limita l'audio per oggetti e gesture a questo lotto" name="check sound local"/> + <text name="Avatar Sounds:"> + Suoni avatar: + </text> + <check_box label="Tutti" name="all av sound check"/> + <check_box label="Gruppo" name="group av sound check"/> <text name="Voice settings:"> Voce: </text> diff --git a/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..71071825af7c4bf03835fe8bcc37daf10a1fef0a --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_delete_env_preset.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<floater name="Delete Env Preset" title="CANCELLA PREDEFINITO AMB"> + <string name="title_water"> + Cancella valore predefinito acqua + </string> + <string name="title_sky"> + Cancella valore predefinito cielo + </string> + <string name="title_day_cycle"> + Cancella ciclo giornata + </string> + <string name="label_water"> + Valori predefiniti: + </string> + <string name="label_sky"> + Valori predefiniti: + </string> + <string name="label_day_cycle"> + Ciclo giornata: + </string> + <string name="msg_confirm_deletion"> + Sei sicuro di volere eliminare il valore predefinito selezionato? + </string> + <string name="msg_sky_is_referenced"> + Impossibile rimuovere un valore predefinito che viene utilizzato in uno o più cicli di giornata. + </string> + <string name="combo_label"> + -Seleziona un valore predefinito- + </string> + <text name="label"> + Valori predefiniti: + </text> + <button label="Elimina" name="delete"/> + <button label="Annulla" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml new file mode 100644 index 0000000000000000000000000000000000000000..c922b2e4f767fc2303b19d8609dcbf863291caca --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_edit_day_cycle.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Day cycle" title="Modifica ciclo giornata"> + <string name="title_new"> + Crea un nuovo ciclo giornata + </string> + <string name="title_edit"> + Modifica ciclo giornata + </string> + <string name="hint_new"> + Dai un nome al ciclo della giornata, modifica i controlli per crearlo e fai clic su "Salva". + </string> + <string name="hint_edit"> + Per modificare il ciclo della giornata, modifica i controlli seguenti e fai clic su "Salva". + </string> + <string name="combo_label"> + -Seleziona un valore predefinito- + </string> + <text name="label"> + Nome predefinito: + </text> + <text name="note"> + Nota: se cambi il nome del valore predefinito, in realtà ne crei uno nuovo e quello esistente non viene cambiato. + </text> + <text name="hint_item1"> + - Fai clic su una scheda per modificare gli orari e le impostazioni cielo specifiche. + </text> + <text name="hint_item2"> + - Fai clic e trascina le schede per impostare i tempi di transizione. + </text> + <text name="hint_item3"> + - Usa lo scrubber per visualizzare in anteprima il ciclo giornata. + </text> + <panel name="day_cycle_slider_panel"> + <multi_slider initial_value="0" name="WLTimeSlider"/> + <multi_slider initial_value="0" name="WLDayCycleKeys"/> + <button label="Aggiungi chiave" label_selected="Aggiungi chiave" name="WLAddKey"/> + <button label="Tasto cancella" label_selected="Tasto cancella" name="WLDeleteKey"/> + <text name="WL12am"> + 00:00 + </text> + <text name="WL3am"> + 03:00:00 + </text> + <text name="WL6am"> + 06:00:00 + </text> + <text name="WL9amHash"> + 09:00:00 + </text> + <text name="WL12pmHash"> + 12:00:00 + </text> + <text name="WL3pm"> + 15:00:00 + </text> + <text name="WL6pm"> + 18:00:00 + </text> + <text name="WL9pm"> + 21:00:00 + </text> + <text name="WL12am2"> + 00:00 + </text> + <text name="WL12amHash"> + | + </text> + <text name="WL3amHash"> + I + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL9amHash2"> + I + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL3pmHash"> + I + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL9pmHash"> + I + </text> + <text name="WL12amHash2"> + | + </text> + </panel> + <text name="WLCurKeyPresetText"> + Impostazioni cielo: + </text> + <combo_box label="Valori predefiniti" name="WLSkyPresets"/> + <text name="WLCurKeyTimeText"> + Giorno/ora: + </text> + <time name="time" value="06:00:00"/> + <check_box label="Usa come nuovo ciclo giornata" name="make_default_cb"/> + <button label="Salva" name="save"/> + <button label="Annulla" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..571027fd2949ccb69cf1a089dc47e992619ae165 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_edit_sky_preset.xml @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Sky Preset" title="Modifica predefiniti cielo"> + <string name="title_new"> + Crea un nuovo valore predefinito per il cielo + </string> + <string name="title_edit"> + Modifica predefiniti cielo + </string> + <string name="hint_new"> + Dai un nome al valore predefinito, modifica i controlli per crearlo e fai clic su "Salva". + </string> + <string name="hint_edit"> + Per modificare il valore predefinito per il cielo, modifica i controlli e fai clic su "Salva". + </string> + <string name="combo_label"> + -Seleziona un valore predefinito- + </string> + <text name="hint"> + Per modificare i valori predefiniti, modifica i controlli e quindi fai clic su "Salva" + </text> + <text name="label"> + Nome predefinito: + </text> + <text name="note"> + Nota: se cambi il nome del valore predefinito, in realtà ne crei uno nuovo e quello esistente non viene cambiato. + </text> + <tab_container name="WindLight Tabs"> + <panel label="ATMOSFERA" name="Atmosphere"> + <text name="BHText"> + Orizzonte blu + </text> + <text name="BDensText"> + Orizzonte foschia + </text> + <text name="BDensText2"> + Densità blu + </text> + <text name="HDText"> + Densità foschia + </text> + <text name="DensMultText"> + Fattore moltiplicativo densità + </text> + <text name="WLDistanceMultText"> + Fattore moltiplicativo distanza + </text> + <text name="MaxAltText"> + Altitudine massima + </text> + </panel> + <panel label="ILLUMINAZIONE" name="Lighting"> + <text name="SLCText"> + Colore sole/luna + </text> + <text name="WLAmbientText"> + Ambiente + </text> + <text name="SunGlowText"> + Bagliore sole + </text> + <slider label="Centro focale" name="WLGlowB"/> + <slider label="Dimensioni" name="WLGlowR"/> + <text name="WLStarText"> + Luminosità cielo + </text> + <text name="SceneGammaText"> + Gamma scena + </text> + <text name="TODText"> + Posizione sole/luna + </text> + <multi_slider initial_value="0" name="WLSunPos"/> + <text name="WL12amHash"> + | + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL12amHash2"> + | + </text> + <text name="WL12am"> + 00:00 + </text> + <text name="WL6am"> + 06:00:00 + </text> + <text name="WL12pmHash"> + 12:00:00 + </text> + <text name="WL6pm"> + 18:00:00 + </text> + <text name="WL12am2"> + 00:00 + </text> + <time name="WLDayTime" value="06:00:00"/> + <text name="WLEastAngleText"> + Angolo est + </text> + </panel> + <panel label="NUVOLE" name="Clouds"> + <text name="WLCloudColorText"> + Colore nuvole + </text> + <text name="WLCloudColorText2"> + XY/Densità nuvole + </text> + <slider label="X" name="WLCloudX"/> + <slider label="Y" name="WLCloudY"/> + <slider label="D" name="WLCloudDensity"/> + <text name="WLCloudCoverageText"> + Copertura nuvole + </text> + <text name="WLCloudScaleText"> + Scala nuvole + </text> + <text name="WLCloudDetailText"> + Dettaglio nuvole (XY/Densità ) + </text> + <slider label="X" name="WLCloudDetailX"/> + <slider label="Y" name="WLCloudDetailY"/> + <slider label="D" name="WLCloudDetailDensity"/> + <text name="WLCloudScrollXText"> + Scorrimento nuvole X + </text> + <check_box label="Blocca" name="WLCloudLockX"/> + <text name="WLCloudScrollYText"> + Scorrimento nuvole Y + </text> + <check_box label="Blocca" name="WLCloudLockY"/> + </panel> + </tab_container> + <check_box label="Usa questo valore predefinito come nuova impostazione per il cielo" name="make_default_cb"/> + <button label="Salva" name="save"/> + <button label="Annulla" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..7bffc60ba288267b4842e7a031be4d04c0a9a6db --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_edit_water_preset.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Water Preset" title="Modifica un valore predefinito acqua"> + <string name="title_new"> + Crea un nuovo valore predefinito per l'acqua + </string> + <string name="title_edit"> + Modifica un valore predefinito per l'acqua + </string> + <string name="hint_new"> + Dai un nome al valore predefinito, modifica i controlli per crearlo e fai clic su "Salva". + </string> + <string name="hint_edit"> + Per modificare il valore predefinito per l'acqua, modifica i controlli e fai clic su "Salva". + </string> + <string name="combo_label"> + -Seleziona un valore predefinito- + </string> + <text name="hint"> + Per modificare i valori predefiniti, modifica i controlli e quindi fai clic su "Salva" + </text> + <text name="label"> + Nome predefinito: + </text> + <text name="note"> + Nota: se cambi il nome del valore predefinito, in realtà ne crei uno nuovo e quello esistente non viene cambiato. + </text> + <panel name="panel_water_preset"> + <text name="water_color_label"> + Colore nebbia acqua + </text> + <text name="water_fog_density_label"> + Esponente densità nebbia + </text> + <text name="underwater_fog_modifier_label"> + Modificatore nebbia sott'acqua + </text> + <text name="BHText"> + Direzione onda grande + </text> + <slider label="X" name="WaterWave1DirX"/> + <slider label="Y" name="WaterWave1DirY"/> + <text name="BDensText"> + Scala wavelet riflesso + </text> + <text name="HDText"> + Scala Fresnel + </text> + <text name="FresnelOffsetText"> + Spostamento Fresnel + </text> + <text name="BHText2"> + Direzione onda piccola + </text> + <slider label="X" name="WaterWave2DirX"/> + <slider label="Y" name="WaterWave2DirY"/> + <text name="DensMultText"> + Scala wavelet sopra + </text> + <text name="WaterScaleBelowText"> + Scala wavelet sotto + </text> + <text name="MaxAltText"> + Fattore moltiplicativo blu + </text> + <text name="BHText3"> + Mappa normale + </text> + </panel> + <check_box label="Usa questo valore predefinito come nuova impostazione per l'acqua" name="make_default_cb"/> + <button label="Salva" name="save"/> + <button label="Annulla" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_environment_settings.xml b/indra/newview/skins/default/xui/it/floater_environment_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..f191078fad54e5babce8f6551ff44de4c254bb21 --- /dev/null +++ b/indra/newview/skins/default/xui/it/floater_environment_settings.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Environment Editor Floater" title="IMPOSTAZIONI AMBIENTE"> + <text name="note"> + Usa le opzioni seguenti per personalizzare le impostazioni dell'ambiente per il tuo viewer. + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Usa impostazioni regione" name="use_region_settings"/> + <radio_item label="Personalizza il mio ambiente" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="note"> + Nota: gli altri utenti non vedranno le tue impostazioni personalizzate. + </text> + <text name="water_settings_title"> + Impostazione Acqua + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="-Seleziona un valore predefinito-" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + Ciclo giornata / cielo + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="Cielo fisso" name="my_sky_settings"/> + <radio_item label="Ciclo giornata" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="-Seleziona un valore predefinito-" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="-Seleziona un valore predefinito-" name="item0"/> + </combo_box> + </panel> + <button label="OK" name="ok_btn"/> + <button label="Annulla" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/it/floater_model_preview.xml b/indra/newview/skins/default/xui/it/floater_model_preview.xml index a17b8b36c2674a97231122addae15a4c39986558..69245f0755161befc3648248c6e277fd75e1c70a 100644 --- a/indra/newview/skins/default/xui/it/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/it/floater_model_preview.xml @@ -3,6 +3,9 @@ <string name="status_idle"> Pausa </string> + <string name="status_parse_error"> + Problema nell'elaborazione DAE - vedi il registro per informazioni al riguardo. + </string> <string name="status_reading_file"> Caricamento in corso... </string> @@ -12,6 +15,9 @@ <string name="status_vertex_number_overflow"> Errore: numero di vertici maggiore di 65534, annullato. </string> + <string name="bad_element"> + Errore: elemento non valido + </string> <string name="high"> Alto </string> diff --git a/indra/newview/skins/default/xui/it/floater_model_wizard.xml b/indra/newview/skins/default/xui/it/floater_model_wizard.xml index b17f731089d85e3b2a6d566b77daca912a56982d..67ba452ce5248fd97120a9c88f9cefd363d5b166 100644 --- a/indra/newview/skins/default/xui/it/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/it/floater_model_wizard.xml @@ -193,6 +193,9 @@ <string name="status_idle"> Pausa </string> + <string name="status_parse_error"> + Problema nell'elaborazione DAE - vedi il registro per informazioni al riguardo. + </string> <string name="status_reading_file"> Caricamento in corso... </string> @@ -202,6 +205,9 @@ <string name="status_vertex_number_overflow"> Errore: numero di vertici maggiore di 65534, annullato. </string> + <string name="bad_element"> + Errore: elemento non valido + </string> <string name="high"> Alto </string> diff --git a/indra/newview/skins/default/xui/it/floater_tools.xml b/indra/newview/skins/default/xui/it/floater_tools.xml index 23e01a3943d8d4ed218636f0f5a037d7e9a1bfb4..f7c83c9e0f41d60eaeb6b8d3512e4124686888cb 100644 --- a/indra/newview/skins/default/xui/it/floater_tools.xml +++ b/indra/newview/skins/default/xui/it/floater_tools.xml @@ -412,7 +412,7 @@ </combo_box> <spinner label="Gravità " name="Physics Gravity"/> <spinner label="Frizione" name="Physics Friction"/> - <spinner label="Densità " name="Physics Density"/> + <spinner label="Densità in 100 kg/m^3" name="Physics Density"/> <spinner label="Restituzione" name="Physics Restitution"/> </panel> <panel label="Texture" name="Texture"> diff --git a/indra/newview/skins/default/xui/it/menu_login.xml b/indra/newview/skins/default/xui/it/menu_login.xml index bdf7d2094ff8e3bdef6d5714a8d1bad75bbbbdce..fe8bf703aa8d7eddbb461204af0195d373c6233c 100644 --- a/indra/newview/skins/default/xui/it/menu_login.xml +++ b/indra/newview/skins/default/xui/it/menu_login.xml @@ -17,7 +17,7 @@ <menu_item_call label="Mostra i Termini del servizio (TOS)" name="TOS"/> <menu_item_call label="Mostra messaggio critico" name="Critical"/> <menu_item_call label="Test browser multimedia" name="Web Browser Test"/> - <menu_item_call label="Test finestra contenuti Web" name="Web Content Floater Test"/> + <menu_item_call label="Test debug finestra contenuti Web" name="Web Content Floater Debug Test"/> <menu_item_check label="Mostra selettore griglia" name="Show Grid Picker"/> <menu_item_call label="Mostra Console notifiche" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml index aae23137028ad6b447454338da82b11d83d84070..2b5c235706561fd7c825d0f12e0ad5b0f536bb4a 100644 --- a/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/it/menu_people_nearby_view_sort.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="menu_group_plus"> +<toggleable_menu name="menu_group_plus"> <menu_item_check label="Ordina in base a intervenuti recenti" name="sort_by_recent_speakers"/> <menu_item_check label="Ordina in base al nome" name="sort_name"/> <menu_item_check label="Ordina in base alla distanza" name="sort_distance"/> <menu_item_check label="Icone persone" name="view_icons"/> + <menu_item_check label="Visualizza mappa" name="view_map"/> <menu_item_call label="Mostra oggetti e residenti bloccati" name="show_blocked_list"/> -</menu> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/menu_viewer.xml b/indra/newview/skins/default/xui/it/menu_viewer.xml index e4df0630d927001dbd7c4cd34dcd244c90ebe9d5..daeda576ccf2eddca60ed06ca66becb3c2e697f5 100644 --- a/indra/newview/skins/default/xui/it/menu_viewer.xml +++ b/indra/newview/skins/default/xui/it/menu_viewer.xml @@ -31,6 +31,7 @@ <menu_item_call label="I miei gruppi" name="My Groups"/> <menu_item_check label="Chat nei dintorni" name="Nearby Chat"/> <menu_item_call label="Persone vicine" name="Active Speakers"/> + <menu_item_check label="Voce nei dintorni" name="Nearby Voice"/> </menu> <menu label="Mondo" name="World"> <menu_item_check label="Mini mappa" name="Mini-Map"/> @@ -63,8 +64,24 @@ <menu_item_call label="Mezzogiorno" name="Noon"/> <menu_item_call label="Tramonto" name="Sunset"/> <menu_item_call label="Mezzanotte" name="Midnight"/> - <menu_item_call label="Orario della proprietà " name="Revert to Region Default"/> - <menu_item_call label="Editor dell'ambiente" name="Environment Editor"/> + </menu> + <menu label="Editor ambiente" name="Enviroment Editor"> + <menu_item_call label="Impostazioni ambiente..." name="Enviroment Settings"/> + <menu label="Valori predefiniti acqua" name="Water Presets"> + <menu_item_call label="Nuovo valore predefinito..." name="new_water_preset"/> + <menu_item_call label="Modifica valori predefiniti..." name="edit_water_preset"/> + <menu_item_call label="Cancella valore predefinito..." name="delete_water_preset"/> + </menu> + <menu label="Valori predefiniti cielo" name="Sky Presets"> + <menu_item_call label="Nuovo valore predefinito..." name="new_sky_preset"/> + <menu_item_call label="Modifica valori predefiniti..." name="edit_sky_preset"/> + <menu_item_call label="Cancella valore predefinito..." name="delete_sky_preset"/> + </menu> + <menu label="Valori predefiniti giornata" name="Day Presets"> + <menu_item_call label="Nuovo valore predefinito..." name="new_day_preset"/> + <menu_item_call label="Modifica valori predefiniti..." name="edit_day_preset"/> + <menu_item_call label="Cancella valore predefinito..." name="delete_day_preset"/> + </menu> </menu> </menu> <menu label="Costruisci" name="BuildTools"> diff --git a/indra/newview/skins/default/xui/it/menu_wearing_gear.xml b/indra/newview/skins/default/xui/it/menu_wearing_gear.xml index 7c8eef64e5df1e71093777864ce0f2eed5687711..de25f88acacb309a8c6f614841a75a9219a6eff8 100644 --- a/indra/newview/skins/default/xui/it/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/it/menu_wearing_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Gear Wearing"> +<toggleable_menu name="Gear Wearing"> <menu_item_call label="Modifica vestiario" name="edit"/> <menu_item_call label="Togli" name="takeoff"/> -</menu> + <menu_item_call label="Copia gruppo vestiti negli Appunti" name="copy"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/it/notifications.xml b/indra/newview/skins/default/xui/it/notifications.xml index f50051c00449daa3f1248da182e682c92d4404d8..2d5c8e3522c42555dc912bf60d580e45b9ef66a7 100644 --- a/indra/newview/skins/default/xui/it/notifications.xml +++ b/indra/newview/skins/default/xui/it/notifications.xml @@ -1555,6 +1555,11 @@ Riprova più tardi. <button name="Cancel" text="Annulla"/> </form> </notification> + <notification name="TooManyTeleportOffers"> + Hai cercato di fare [OFFERS] offerte di teleport, +più del limite [LIMIT]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OfferTeleportFromGod"> Chiedere, in qualità di Admin, al residente di raggiungerti? <form name="form"> @@ -1977,6 +1982,10 @@ Desideri abbandonare la modalità 'Occupato' prima di completare quest Vuoi veramente eliminare la cronologia viaggi, web e ricerche fatte? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> </notification> + <notification name="ConfirmClearCache"> + Sei sicuro di volere cancellare la cache del viewer? + <usetemplate name="okcancelbuttons" notext="Annulla" yestext="OK"/> + </notification> <notification name="ConfirmClearCookies"> Confermi di volere cancellare i tuoi cookie? <usetemplate name="okcancelbuttons" notext="Annulla" yestext="Si"/> @@ -2002,48 +2011,30 @@ Inseriscilo in una pagina web per dare ad altri un accesso facile a questa ubica Vuoi sovrascrivere le preimpostazioni salvate? <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> </notification> - <notification name="WLDeletePresetAlert"> - Vuoi cancellare [SKY]? - <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> - </notification> <notification name="WLNoEditDefault"> Non puoi modificare o cancellare una preimpostazione di fabbrica. </notification> <notification name="WLMissingSky"> Questo file di ciclo giornaliero fa riferimento ad un file di cielo mancante: [SKY]. </notification> - <notification name="PPSaveEffectAlert"> - Effetto di post elaborazione già presente. Vuoi sovrascrivere? - <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> - </notification> - <notification name="NewSkyPreset"> - Fornisci il nome per il nuovo cielo. - <form name="form"> - <input name="message"> - Nuova preimpostazione - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Annulla"/> - </form> + <notification name="WLRegionApplyFail"> + Queste impostazioni non possono essere applicare alla regione. Uscendo dalla regione e ritornandoci potrebbe risolvere il problema. Il motivo fornito: [FAIL_REASON] </notification> - <notification name="ExistsSkyPresetAlert"> - La preimpostazione esiste già ! + <notification name="EnvCannotDeleteLastDayCycleKey"> + Impossibile cancellare l'ultima chiave in questo ciclo giornata. Il ciclo giornata non può essere vuoto. Invece di cancellare la chiave restante, modificala e quindi creane una nuova. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="NewWaterPreset"> - Fornisci il nome per la nuova preregolazione del livello dell'acqua. - <form name="form"> - <input name="message"> - Nuova preimpostazione - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Annulla"/> - </form> + <notification name="DayCycleTooManyKeyframes"> + Non puoi aggiungere altri frame chiave a questo ciclo giornata. Il numero massimo di frame chiave per i cicli giornata nell'ambito [SCOPE] è [MAX]. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="ExistsWaterPresetAlert"> - La preimpostazione esiste già ! + <notification name="EnvUpdateRate"> + Puoi aggiornare le impostazioni dell'ambiente della regione ogni [WAIT] secondi. Attendi e riprova. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="WaterNoEditDefault"> - Non puoi modificare o cancellare una preimpostazione. + <notification name="PPSaveEffectAlert"> + Effetto di post elaborazione già presente. Vuoi sovrascrivere? + <usetemplate name="okcancelbuttons" notext="No" yestext="Si"/> </notification> <notification name="ChatterBoxSessionStartError"> Impossibile iniziare una nuova sessione di chat con [RECIPIENT]. @@ -2334,6 +2325,9 @@ Qui non puoi volare. <notification name="NoBuild"> In questa zona è proibita la costruzione. Qui non puoi costruire né rezzare oggetti. </notification> + <notification name="SeeAvatars"> + In questo lotto non si possono vedere avatar e chat di testo presenti in altri lotti. Non puoi vedere altri residenti fuori dal lotto e loro non possono vederti. Viene bloccata anche la normale chat di testo sul canale 0. + </notification> <notification name="ScriptsStopped"> Un amministratore ha temporaneamente disabilitato gli script in questa regione. </notification> @@ -2758,7 +2752,9 @@ Il pulsante verrà visualizzato quando lo spazio sarà sufficiente. Scegli i residenti con i quali condividere. </notification> <notification name="MeshUploadError"> - [LABEL] non è stato caricato: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + [LABEL] non è stato caricato: [MESSAGE] [IDENTIFIER] + +Per informazioni dettagliate, vedi il file del registro. </notification> <notification name="ShareItemsConfirmation"> Sei sicuro di volere condividere gli oggetti diff --git a/indra/newview/skins/default/xui/it/panel_outfits_list.xml b/indra/newview/skins/default/xui/it/panel_outfits_list.xml index e5194e95d7b83c9f83b892c8710bdfc6a30a2259..d0c275e29fe028a661ddb50d9d88c55351a4173f 100644 --- a/indra/newview/skins/default/xui/it/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/it/panel_outfits_list.xml @@ -1,7 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Outfits"> + <accordion name="outfits_accordion"> + <no_matched_tabs_text name="no_matched_outfits_msg" value="Non riesci a trovare quello che cerchi? Prova [secondlife:///app/search/all/[SEARCH_TERM] Cerca]."/> + <no_visible_tabs_text name="no_outfits_msg" value="Non hai ancora vestiario da indossare. Prova [secondlife:///app/search/all Cerca]."/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Mostra ulteriori opzioni"/> + <menu_button name="options_gear_btn" tool_tip="Mostra ulteriori opzioni"/> <button name="trash_btn" tool_tip="Elimina il vestiario selezionato"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_place_profile.xml b/indra/newview/skins/default/xui/it/panel_place_profile.xml index c4ffe6af85ac79f820c7fd60bfd1d7550d37ee25..890dfc24587da62afbee5cd798377f6a98e2b507 100644 --- a/indra/newview/skins/default/xui/it/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/it/panel_place_profile.xml @@ -64,6 +64,8 @@ <text name="scripts_value" value="Attivo"/> <text name="damage_label" value="Danni:"/> <text name="damage_value" value="Disattivato"/> + <text name="see_avatars_label" value="Vedi avatar:"/> + <text name="see_avatars_value" value="Disattiva"/> <button label="Informazioni sui terreni" name="about_land_btn"/> </panel> </accordion_tab> diff --git a/indra/newview/skins/default/xui/it/panel_places.xml b/indra/newview/skins/default/xui/it/panel_places.xml index 61830f186f0cd5ae01849984963e8c713c726cf3..69995fb5de29623de0c250d11d51c9bec753d0dc 100644 --- a/indra/newview/skins/default/xui/it/panel_places.xml +++ b/indra/newview/skins/default/xui/it/panel_places.xml @@ -24,7 +24,7 @@ <menu_button label="â–¼" name="overflow_btn" tool_tip="Mostra ulteriori opzioni"/> </layout_panel> </layout_stack> - <layout_stack name="bottom_bar_ls3"> + <layout_stack name="bottom_bar_profile_ls"> <layout_panel name="profile_btn_lp"> <button label="Profilo" name="profile_btn" tool_tip="Mostra il profilo del luogo"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml index b628a29206642dc39accc866848be51fdc4837a0..224780f2348c7b7d3aa0be1593782a406c590666 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_advanced.xml @@ -3,6 +3,19 @@ <panel.string name="aspect_ratio_text"> [NUM]:[DEN] </panel.string> + <text name="Cache:"> + Cache: + </text> + <spinner label="Dimensione cache (64 - 9984 MB)" name="cachesizespinner"/> + <text name="text_box5"> + MB + </text> + <button label="Pulizia della cache" label_selected="Pulizia della cache" name="clear_cache"/> + <text name="Cache location"> + Ubicazione della cache: + </text> + <button label="Sfoglia" label_selected="Sfoglia" name="set_cache"/> + <button label="Posizione predefinita" label_selected="Posizione predefinita" name="default_cache_location"/> <text name="UI Size:"> Dimensioni UI: </text> diff --git a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml index bbfae5e9e84e28cef22cb38ea71ea6dae63c2cfb..d00512aaf7488317d47c1e3dc2a4c95d53326465 100644 --- a/indra/newview/skins/default/xui/it/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/it/panel_preferences_sound.xml @@ -19,6 +19,7 @@ <check_box label="Abilitato" name="enable_voice_check"/> <check_box label="Consenti riproduzione multimediale automatica" name="media_auto_play_btn" tool_tip="Seleziona qui per consentire la riproduzione multimediale automatica" value="true"/> <check_box label="Riproduci media in uso da altri avatar" name="media_show_on_others_btn" tool_tip="Deseleziona qui per nascondere i media in uso dagli altri avatar nei dintorni" value="true"/> + <check_box label="Riproduci suoni dai gesti" name="gesture_audio_play_btn" tool_tip="Seleziona per ascoltare i suoni dai gesti" value="true"/> <text name="voice_chat_settings"> Impostazioni Chat vocale </text> @@ -35,28 +36,5 @@ <button label="Imposta tasto" name="set_voice_hotkey_button"/> <button name="set_voice_middlemouse_button" tool_tip="Reimposta sul pulsante centrale del mouse"/> <button label="Dispositivi di Input/Output" name="device_settings_btn" width="165"/> - <panel label="Impostazioni del dispositivo" name="device_settings_panel"> - <panel.string name="default_text"> - Predefinito - </panel.string> - <panel.string name="default system device"> - Dispositivo di sistema predefinito - </panel.string> - <panel.string name="no device"> - Nessun dispositivo - </panel.string> - <text name="Input"> - Input - </text> - <text name="My volume label"> - Il mio volume: - </text> - <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Cambia il volume utilizzando questa barra"/> - <text name="wait_text"> - Attendi - </text> - <text name="Output"> - Output - </text> - </panel> + <panel label="Impostazioni del dispositivo" name="device_settings_panel"/> </panel> diff --git a/indra/newview/skins/default/xui/it/panel_region_environment.xml b/indra/newview/skins/default/xui/it/panel_region_environment.xml new file mode 100644 index 0000000000000000000000000000000000000000..81bc8253f425c74dad094650b337dcad0d983700 --- /dev/null +++ b/indra/newview/skins/default/xui/it/panel_region_environment.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Ambiente" name="panel_env_info"> + <text name="water_settings_title"> + Seleziona le impostazioni del ciclo dell'acqua e del cielo/giornata che vuoi che vedano tutti coloro che visitano la tua regione. Maggiori informazioni + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Usa valori predefiniti di Second Life" name="use_sl_default_settings"/> + <radio_item label="Usa le impostazioni seguenti" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="water_settings_title"> + Impostazione Acqua + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="-Seleziona un valore predefinito-" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + Ciclo cielo / giornata + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="Cielo fisso" name="my_sky_settings"/> + <radio_item label="Ciclo giornata" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="-Seleziona un valore predefinito-" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="-Seleziona un valore predefinito-" name="item0"/> + </combo_box> + </panel> + <button label="Applica" name="apply_btn"/> + <button label="Annulla" name="cancel_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/it/panel_region_terrain.xml b/indra/newview/skins/default/xui/it/panel_region_terrain.xml index 92044bae115e0154b3a56a43a6aa0d0e1e509ae8..c61ac3eccecac77b4a9433210d33498e9293c366 100644 --- a/indra/newview/skins/default/xui/it/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/it/panel_region_terrain.xml @@ -7,21 +7,56 @@ sconosciuto </text> <spinner label="Altezza dell'acqua" name="water_height_spin"/> - <button label="?" name="water_height_help"/> - <spinner label="Limite di altezza del terreno" name="terrain_raise_spin"/> - <button label="?" name="terrain_raise_help"/> - <spinner label="Limite di abbassamento del terreno" name="terrain_lower_spin" bottom_delta="-34"/> - <button label="?" name="terrain_lower_help"/> - <check_box label="Usa il sole della regione" name="use_estate_sun_check"/> - <button label="?" name="use_estate_sun_help"/> - <check_box label="Sole fisso" name="fixed_sun_check"/> - <button label="?" name="fixed_sun_help"/> - <slider label="Fase" name="sun_hour_slider"/> - <button label="Applica" name="apply_btn"/> + <spinner label="Limite di altezza del +terreno" name="terrain_raise_spin"/> + <spinner bottom_delta="-34" label="Limite di abbassamento +del terreno" name="terrain_lower_spin"/> + <text name="detail_texture_text"> + Texture terreno (richiede file 512x512, 24 bit .tga) + </text> + <text name="height_text_lbl"> + 1 (basso) + </text> + <text name="height_text_lbl2"> + 2 + </text> + <text name="height_text_lbl3"> + 3 + </text> + <text name="height_text_lbl4"> + 4 (Alto) + </text> + <text name="height_text_lbl5"> + Intervalli altitudine texture + </text> + <text name="height_text_lbl10"> + Questi valori indicano la gamma di miscele per le texture di cui sopra. + </text> + <text name="height_text_lbl11"> + Misurato in metri, il valore BASSO è la MASSIMA altezza della texture n. 1, e il valore ALTO è l'altezza MINIMA della texture n. 4. + </text> + <text name="height_text_lbl6"> + Nordovest + </text> + <text name="height_text_lbl7"> + Nordest + </text> + <spinner label="Basso" name="height_start_spin_1"/> + <spinner label="Basso" name="height_start_spin_3"/> + <spinner label="Alto" name="height_range_spin_1"/> + <spinner label="Alto" name="height_range_spin_3"/> + <text name="height_text_lbl8"> + Sudovest + </text> + <text name="height_text_lbl9"> + Sudest + </text> + <spinner label="Basso" name="height_start_spin_0"/> + <spinner label="Basso" name="height_start_spin_2"/> + <spinner label="Alto" name="height_range_spin_0"/> + <spinner label="Alto" name="height_range_spin_2"/> <button label="Scarica terreno RAW..." name="download_raw_btn" tool_tip="Disponibile solo per i proprietari del terreno, non per i manager"/> - <button label="?" name="download_raw_help"/> <button label="Carica terreno RAW..." name="upload_raw_btn" tool_tip="Disponibile solo per i proprietari del terreno, non per i manager"/> - <button label="?" name="upload_raw_help"/> - <button width="170" label="Trasforma il terreno" name="bake_terrain_btn" tool_tip="Imposta il terreno corrente come punto medio per i limiti di innalzamento/abbassamento"/> - <button left="190" label="?" name="bake_terrain_help"/> + <button label="Trasforma il terreno" name="bake_terrain_btn" tool_tip="Imposta il terreno corrente come punto medio per i limiti di innalzamento/abbassamento" width="170"/> + <button label="Applica" name="apply_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml index 1c1744d94b0fd10b1607a289ce8da744f8d4819c..72ca2f6d680db262021a92da8844ff9058c48408 100644 --- a/indra/newview/skins/default/xui/it/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/it/sidepanel_inventory.xml @@ -1,6 +1,38 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Cose" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> + <layout_stack name="inventory_layout_stack"> + <layout_panel name="inbox_layout_panel"> + <panel label="" name="marketplace_inbox"> + <string name="InboxLabelWithArg"> + Elementi ricevuti ([NUM]) + </string> + <string name="InboxLabelNoArg"> + Elementi ricevuti + </string> + <button label="Elementi ricevuti" name="inbox_btn"/> + <text name="inbox_fresh_new_count"> + [NUM] nuovi + </text> + <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <text name="inbox_inventory_placeholder"> + Gli acquisti dal mercato verranno consegnati qui. + </text> + </panel> + </panel> + </layout_panel> + <layout_panel name="outbox_layout_panel"> + <panel label="" name="marketplace_outbox"> + <button label="Casella uscita commercianti" name="outbox_btn"/> + <button label="" name="outbox_sync_btn" tool_tip="Sposta al mercato"/> + <panel tool_tip="Drag and drop items here to prepare them for sale on your storefront"> + <text name="outbox_inventory_placeholder"> + Imposta il tuo account commercianti per usare questa funzione. + </text> + </panel> + </panel> + </layout_panel> + </layout_stack> <panel name="button_panel"> <layout_stack name="button_panel_ls"> <layout_panel name="info_btn_lp"> diff --git a/indra/newview/skins/default/xui/it/strings.xml b/indra/newview/skins/default/xui/it/strings.xml index 6af515d82d0b10fe5184ea27ad30a4c5a2a4e721..4bcb4dd88f6eb11d08aa9d6f510c77db89544ada 100644 --- a/indra/newview/skins/default/xui/it/strings.xml +++ b/indra/newview/skins/default/xui/it/strings.xml @@ -1177,6 +1177,12 @@ Prova ad accedere nuovamente tra un minuto. <string name="InventoryNoTexture"> Non hai una copia di questa texture nel tuo inventario </string> + <string name="InventoryInboxNoItems"> + Gli elementi acquistati attraverso il mercato verranno consegnati qui + </string> + <string name="InventoryOutboxNoItems"> + Trascina gli elementi qui per poi elencarli nel tuo mercato. + </string> <string name="no_transfer" value="(nessun trasferimento)"/> <string name="no_modify" value="(nessuna modifica)"/> <string name="no_copy" value="(nessuna copia)"/> @@ -1301,6 +1307,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="InvFolder All"> Tutto </string> + <string name="no_attachments"> + Nessun allegato indossato + </string> <string name="Buy"> Acquista </string> @@ -1636,6 +1645,9 @@ Prova ad accedere nuovamente tra un minuto. <string name="IMTeen"> teen </string> + <string name="Anyone"> + chiunque + </string> <string name="RegionInfoError"> errore </string> @@ -1852,6 +1864,12 @@ Prova ad accedere nuovamente tra un minuto. <string name="Public"> Pubblica </string> + <string name="LocalSettings"> + Impostazioni locali + </string> + <string name="RegionSettings"> + Impostazioni regione + </string> <string name="ClassifiedClicksTxt"> Clicca: [TELEPORT] teleport, [MAP] mappa, [PROFILE] profilo </string> @@ -3640,6 +3658,9 @@ Se il messaggio persiste, contatta [SUPPORT_SITE]. <string name="LocationCtrlGeneralIconTooltip"> Regione generale </string> + <string name="LocationCtrlSeeAVsTooltip"> + Avatar visibili e chat consentita fuori di questo lotto + </string> <string name="UpdaterWindowTitle"> Aggiornamento [APP_NAME] </string> diff --git a/indra/newview/skins/default/xui/ja/floater_about_land.xml b/indra/newview/skins/default/xui/ja/floater_about_land.xml index 2f578862d34880b0b34c21d6cc84e2b7b67c6d8f..e870a8ace931b22b1c5719c7f928d5e3c63f21c6 100644 --- a/indra/newview/skins/default/xui/ja/floater_about_land.xml +++ b/indra/newview/skins/default/xui/ja/floater_about_land.xml @@ -133,12 +133,12 @@ 誤 </text> <button label="土地ã®è³¼å…¥" label_selected="土地を購入..." left="130" name="Buy Land..." width="100"/> + <button label="リンデンセール" label_selected="Linden セール..." name="Linden Sale..." tool_tip="土地ãŒæ‰€æœ‰ã•ã‚Œã¦ãŠã‚Šã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚オークションã®å¯¾è±¡ã«ãªã£ã¦ã„ãªã„ã“ã¨ã‚‚å¿…è¦æ¡ä»¶ã§ã™ã€‚"/> <button label="ã‚¹ã‚¯ãƒªãƒ—ãƒˆæƒ…å ±" name="Scripts..." width="100"/> <button label="グループã«è³¼å…¥" label_selected="グループ用ã«è³¼å…¥..." name="Buy For Group..."/> <button label="å…¥å ´è¨±å¯ã‚’購入" label_selected="å…¥å ´è¨±å¯ã‚’購入..." left="130" name="Buy Pass..." tool_tip="ã“ã®åœŸåœ°ã¸ã®ä¸€æ™‚çš„ãªã‚¢ã‚¯ã‚»ã‚¹ã‚’許å¯ã—ã¾ã™ã€‚" width="100"/> <button label="土地ã®æ”¾æ£„" label_selected="土地を放棄..." name="Abandon Land..."/> <button label="土地をå–り戻ã™" label_selected="土地ã®è¿”é‚„ã‚’è¦æ±‚..." name="Reclaim Land..."/> - <button label="リンデンセール" label_selected="Linden セール..." name="Linden Sale..." tool_tip="土地ãŒæ‰€æœ‰ã•ã‚Œã¦ãŠã‚Šã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ãŒè¨å®šã•ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚オークションã®å¯¾è±¡ã«ãªã£ã¦ã„ãªã„ã“ã¨ã‚‚å¿…è¦æ¡ä»¶ã§ã™ã€‚"/> </panel> <panel label="約款" name="land_covenant_panel"> <panel.string name="can_resell"> @@ -310,6 +310,9 @@ <panel.string name="push_restrict_region_text"> プッシュç¦æ¢ (地域è¨å®šå„ªå…ˆï¼‰ </panel.string> + <panel.string name="see_avs_text"> + ã“ã®åŒºç”»ã«ã„ã‚‹ä½äººã¨ä¼šã£ã¦ãƒãƒ£ãƒƒãƒˆã™ã‚‹ + </panel.string> <text name="allow_label"> ä»–ã®ä½äººã¸ã®è¨±å¯ï¼š </text> @@ -372,6 +375,10 @@ スナップショット: </text> <texture_picker label="" name="snapshot_ctrl" tool_tip="写真をクリックã—ã¦é¸æŠž"/> + <text name="allow_label5"> + ä»–ã®åŒºç”»ã«ã„ã‚‹ä½äººã¸ã®è¨±å¯ï¼š + </text> + <check_box label="ã‚¢ãƒã‚¿ãƒ¼ã‚’表示" name="SeeAvatarsCheck" tool_tip="ä»–ã®åŒºç”»ã®ä½äººãŒã€ã“ã®åŒºç”»ã«ã„ã‚‹ä½äººã«ä¼šã£ã¦ãƒãƒ£ãƒƒãƒˆã™ã‚‹ã“ã¨ã‚’許å¯ã—ã€ã‚ãªãŸã‚‚ãれらä½äººã«ä¼šã£ã¦ãƒãƒ£ãƒƒãƒˆã§ãるよã†ã«ã—ã¾ã™ã€‚"/> <text name="landing_point"> ç€åœ°ç‚¹: [LANDING] </text> @@ -428,6 +435,11 @@ サウンド: </text> <check_box label="ジェスãƒãƒ£ãƒ¼ã¨ã‚ªãƒ–ジェクトã®éŸ³ã‚’ã“ã®åŒºç”»ã ã‘ã«é™å®šã™ã‚‹" name="check sound local"/> + <text name="Avatar Sounds:"> + ã‚¢ãƒã‚¿ãƒ¼ã®ã‚µã‚¦ãƒ³ãƒ‰ï¼š + </text> + <check_box label="全員" name="all av sound check"/> + <check_box label="グループ" name="group av sound check"/> <text name="Voice settings:"> ボイス: </text> diff --git a/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..eb39d1b3361c38bc8c214d0bddca66988fdd0bf8 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_delete_env_preset.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<floater name="Delete Env Preset" title="環境ã®äº‹å‰è¨å®šã‚’削除"> + <string name="title_water"> + æ°´ã®äº‹å‰è¨å®šã‚’削除 + </string> + <string name="title_sky"> + 空ã®äº‹å‰è¨å®šã‚’削除 + </string> + <string name="title_day_cycle"> + デイサイクルを削除 + </string> + <string name="label_water"> + 事å‰è¨å®šï¼š + </string> + <string name="label_sky"> + 事å‰è¨å®šï¼š + </string> + <string name="label_day_cycle"> + デイサイクル: + </string> + <string name="msg_confirm_deletion"> + é¸æŠžã•ã‚ŒãŸäº‹å‰è¨å®šã‚’削除ã—ã¾ã™ã‹ï¼Ÿ + </string> + <string name="msg_sky_is_referenced"> + デイサイクルã®å‚照先ã¨ã—ã¦ä½¿ã‚ã‚Œã¦ã„る事å‰è¨å®šã¯å‰Šé™¤ã§ãã¾ã›ã‚“。 + </string> + <string name="combo_label"> + - 事å‰è¨å®šã‚’é¸æŠž - + </string> + <text name="label"> + 事å‰è¨å®šï¼š + </text> + <button label="削除" name="delete"/> + <button label="å–り消ã—" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd601672b68e37b451c85c1ec20cec7810861d8f --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_edit_day_cycle.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Day cycle" title="デイサイクルを編集"> + <string name="title_new"> + æ–°ãŸãªãƒ‡ã‚¤ã‚µã‚¤ã‚¯ãƒ«ã‚’ä½œæˆ + </string> + <string name="title_edit"> + デイサイクルを編集 + </string> + <string name="hint_new"> + æ–°ã—ã„デイサイクルã«åå‰ã‚’ã¤ã‘ã€å¸Œæœ›ã®è¨å®šã«èª¿ç¯€ã—ã¦ã€ã€Œä¿å˜ã€ã‚’クリックã—ã¾ã™ã€‚ + </string> + <string name="hint_edit"> + 自分ã§ä½œæˆã—ãŸãƒ‡ã‚¤ã‚µã‚¤ã‚¯ãƒ«ã‚’編集ã™ã‚‹ã«ã¯ã€å¸Œæœ›ã®è¨å®šã«èª¿ç¯€ã—ã¦ã€ã€Œä¿å˜ã€ã‚’クリックã—ã¾ã™ã€‚ + </string> + <string name="combo_label"> + - 事å‰è¨å®šã‚’é¸æŠž - + </string> + <text name="label"> + 事å‰è¨å®šã®åå‰ï¼š + </text> + <text name="note"> + 注æ„:自分ã§ä½œæˆã—ãŸäº‹å‰è¨å®šã®åå‰ã‚’変更ã™ã‚‹ã¨ã€æ–°ã—ã„事å‰è¨å®šãŒåˆ¥ã«ä½œæˆã•ã‚Œã‚‹ã ã‘ã§ã€å…ƒã®äº‹å‰è¨å®šã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“。 + </text> + <text name="hint_item1"> + - 特定ã®ç©ºã®è¨å®šã‚„時間を編集ã™ã‚‹ã«ã¯ã‚¿ãƒ–ã‚’1ã¤ã‚¯ãƒªãƒƒã‚¯ã—ã¾ã™ã€‚ + </text> + <text name="hint_item2"> + - 移行時間をè¨å®šã™ã‚‹ã«ã¯ã‚¿ãƒ–をクリックã—ã¦ãƒ‰ãƒ©ãƒƒã‚°ã—ã¾ã™ã€‚ + </text> + <text name="hint_item3"> + - デイサイクルをプレビューã™ã‚‹ã«ã¯ã‚¹ã‚¯ãƒ©ãƒãƒ¼ã‚’使ã„ã¾ã™ã€‚ + </text> + <panel name="day_cycle_slider_panel"> + <multi_slider initial_value="0" name="WLTimeSlider"/> + <multi_slider initial_value="0" name="WLDayCycleKeys"/> + <button label="ã‚ーã®è¿½åŠ " label_selected="ã‚ーã®è¿½åŠ " name="WLAddKey"/> + <button label="ã‚ーã®å‰Šé™¤" label_selected="ã‚ーã®å‰Šé™¤" name="WLDeleteKey"/> + <text name="WL12am"> + 12am + </text> + <text name="WL3am"> + 3am + </text> + <text name="WL6am"> + 6am + </text> + <text name="WL9amHash"> + 9am + </text> + <text name="WL12pmHash"> + 12pm + </text> + <text name="WL3pm"> + 3pm + </text> + <text name="WL6pm"> + 6pm + </text> + <text name="WL9pm"> + 9pm + </text> + <text name="WL12am2"> + 12am + </text> + <text name="WL12amHash"> + | + </text> + <text name="WL3amHash"> + I + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL9amHash2"> + I + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL3pmHash"> + I + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL9pmHash"> + I + </text> + <text name="WL12amHash2"> + | + </text> + </panel> + <text name="WLCurKeyPresetText"> + 空ã®è¨å®šï¼š + </text> + <combo_box label="事å‰è¨å®š" name="WLSkyPresets"/> + <text name="WLCurKeyTimeText"> + 時間: + </text> + <time name="time" value="6:00 AM"/> + <check_box label="ã“れを新ã—ã„デイサイクルã«ã™ã‚‹" name="make_default_cb"/> + <button label="ä¿å˜" name="save"/> + <button label="å–り消ã—" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..68d0c70baa51c291d6af5db4ab8a170153003824 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_edit_sky_preset.xml @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Sky Preset" title="空ã®äº‹å‰è¨å®šã‚’編集"> + <string name="title_new"> + æ–°ã—ã„空ã®äº‹å‰è¨å®šã‚’ä½œæˆ + </string> + <string name="title_edit"> + 空ã®äº‹å‰è¨å®šã‚’編集 + </string> + <string name="hint_new"> + æ–°ã—ã„事å‰è¨å®šã«åå‰ã‚’ã¤ã‘ã€å¸Œæœ›ã®è¨å®šã«èª¿ç¯€ã—ã¦ã€ã€Œä¿å˜ã€ã‚’クリックã—ã¾ã™ã€‚ + </string> + <string name="hint_edit"> + 空ã®äº‹å‰è¨å®šã‚’編集ã™ã‚‹ã«ã¯ã€å¸Œæœ›ã®è¨å®šã«èª¿ç¯€ã—ã¦ã€ã€Œä¿å˜ã€ã‚’クリックã—ã¾ã™ã€‚ + </string> + <string name="combo_label"> + - 事å‰è¨å®šã‚’é¸æŠž - + </string> + <text name="hint"> + 事å‰è¨å®šã‚’編集ã™ã‚‹ã«ã¯ã€å¸Œæœ›ã®è¨å®šã«èª¿ç¯€ã—ã¦ã€ã€Œä¿å˜ã€ã‚’クリックã—ã¾ã™ã€‚ + </text> + <text name="label"> + 事å‰è¨å®šã®åå‰ï¼š + </text> + <text name="note"> + 注æ„:自分ã§ä½œæˆã—ãŸäº‹å‰è¨å®šã®åå‰ã‚’変更ã™ã‚‹ã¨ã€æ–°ã—ã„事å‰è¨å®šãŒåˆ¥ã«ä½œæˆã•ã‚Œã‚‹ã ã‘ã§ã€å…ƒã®äº‹å‰è¨å®šã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“。 + </text> + <tab_container name="WindLight Tabs"> + <panel label="大気" name="Atmosphere"> + <text name="BHText"> + 空ã®é…色 + </text> + <text name="BDensText"> + 空ã¨é 景ã®éœ²å…‰ + </text> + <text name="BDensText2"> + 空ã®é…色ã¨æ¿ƒåº¦ + </text> + <text name="HDText"> + 大気ã®ä¸é€æ˜Žåº¦ + </text> + <text name="DensMultText"> + 大気ã®ä¸é€æ˜Žåº¦ã®å¢—å¹… + </text> + <text name="WLDistanceMultText"> + 視界ã®å¢—å¹… + </text> + <text name="MaxAltText"> + 最大高度 + </text> + </panel> + <panel label="ライティング" name="Lighting"> + <text name="SLCText"> + 太陽/月ã®è‰² + </text> + <text name="WLAmbientText"> + 風 + </text> + <text name="SunGlowText"> + 太陽ã®è¼ã + </text> + <slider label="焦点" name="WLGlowB"/> + <slider label="サイズ" name="WLGlowR"/> + <text name="WLStarText"> + 星ã®è¼ã + </text> + <text name="SceneGammaText"> + 風景ガンマ + </text> + <text name="TODText"> + 太陽/月ã®ä½ç½® + </text> + <multi_slider initial_value="0" name="WLSunPos"/> + <text name="WL12amHash"> + | + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL12amHash2"> + | + </text> + <text name="WL12am"> + 12am + </text> + <text name="WL6am"> + 6am + </text> + <text name="WL12pmHash"> + 12pm + </text> + <text name="WL6pm"> + 6pm + </text> + <text name="WL12am2"> + 12am + </text> + <time name="WLDayTime" value="6:00 AM"/> + <text name="WLEastAngleText"> + æ±ã®è§’度 + </text> + </panel> + <panel label="雲" name="Clouds"> + <text name="WLCloudColorText"> + 雲ã®è‰² + </text> + <text name="WLCloudColorText2"> + 雲ã®XY/密度 + </text> + <slider label="X" name="WLCloudX"/> + <slider label="Y" name="WLCloudY"/> + <slider label="D" name="WLCloudDensity"/> + <text name="WLCloudCoverageText"> + 雲ã®é‡ + </text> + <text name="WLCloudScaleText"> + 雲ã®ã‚¹ã‚±ãƒ¼ãƒ« + </text> + <text name="WLCloudDetailText"> + 雲ã®è©³ç´°ï¼ˆXY/密度) + </text> + <slider label="X" name="WLCloudDetailX"/> + <slider label="Y" name="WLCloudDetailY"/> + <slider label="D" name="WLCloudDetailDensity"/> + <text name="WLCloudScrollXText"> + 雲ã®ç§»å‹•é€Ÿåº¦ï¼ˆXæ–¹å‘) + </text> + <check_box label="ãƒãƒƒã‚¯" name="WLCloudLockX"/> + <text name="WLCloudScrollYText"> + 雲ã®ç§»å‹•é€Ÿåº¦ï¼ˆY æ–¹å‘) + </text> + <check_box label="ãƒãƒƒã‚¯" name="WLCloudLockY"/> + </panel> + </tab_container> + <check_box label="ã“ã®äº‹å‰è¨å®šã‚’æ–°ã—ã„空ã®è¨å®šã«ã™ã‚‹" name="make_default_cb"/> + <button label="ä¿å˜" name="save"/> + <button label="å–り消ã—" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..eddfbd4298dc950a4d444aef1a9173a6897b7865 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_edit_water_preset.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Water Preset" title="æ°´ã®äº‹å‰è¨å®šã‚’編集"> + <string name="title_new"> + æ–°ã—ã„æ°´ã®äº‹å‰è¨å®šã‚’ä½œæˆ + </string> + <string name="title_edit"> + æ°´ã®äº‹å‰è¨å®šã‚’編集 + </string> + <string name="hint_new"> + æ–°ã—ã„事å‰è¨å®šã«åå‰ã‚’ã¤ã‘ã€å¸Œæœ›ã®è¨å®šã«èª¿ç¯€ã—ã¦ã€ã€Œä¿å˜ã€ã‚’クリックã—ã¾ã™ã€‚ + </string> + <string name="hint_edit"> + æ°´ã®äº‹å‰è¨å®šã‚’編集ã™ã‚‹ã«ã¯ã€å¸Œæœ›ã®è¨å®šã«èª¿ç¯€ã—ã¦ã€ã€Œä¿å˜ã€ã‚’クリックã—ã¾ã™ã€‚ + </string> + <string name="combo_label"> + - 事å‰è¨å®šã‚’é¸æŠž - + </string> + <text name="hint"> + 事å‰è¨å®šã‚’編集ã™ã‚‹ã«ã¯ã€å¸Œæœ›ã®è¨å®šã«èª¿ç¯€ã—ã¦ã€ã€Œä¿å˜ã€ã‚’クリックã—ã¾ã™ã€‚ + </text> + <text name="label"> + 事å‰è¨å®šã®åå‰ï¼š + </text> + <text name="note"> + 注æ„:自分ã§ä½œæˆã—ãŸäº‹å‰è¨å®šã®åå‰ã‚’変更ã™ã‚‹ã¨ã€æ–°ã—ã„事å‰è¨å®šãŒåˆ¥ã«ä½œæˆã•ã‚Œã‚‹ã ã‘ã§ã€å…ƒã®äº‹å‰è¨å®šã¯å¤‰æ›´ã•ã‚Œã¾ã›ã‚“。 + </text> + <panel name="panel_water_preset"> + <text name="water_color_label"> + æ°´ä¸ã®ãƒ•ã‚©ã‚°åŠ¹æžœã®è‰² + </text> + <text name="water_fog_density_label"> + æ°´ä¸ã®é€æ˜Žåº¦æŒ‡æ•° + </text> + <text name="underwater_fog_modifier_label"> + æ°´ä¸ã®ãƒ•ã‚©ã‚°åŠ¹æžœåŠ 減 + </text> + <text name="BHText"> + 大波ã®æ–¹å‘ + </text> + <slider label="X" name="WaterWave1DirX"/> + <slider label="Y" name="WaterWave1DirY"/> + <text name="BDensText"> + ã•ã–æ³¢ã®å射スケール + </text> + <text name="HDText"> + フレãƒãƒ«ãƒ»ã‚¹ã‚±ãƒ¼ãƒ« + </text> + <text name="FresnelOffsetText"> + フレãƒãƒ«ãƒ»ã‚ªãƒ•ã‚»ãƒƒãƒˆ + </text> + <text name="BHText2"> + å°æ³¢ã®æ–¹å‘ + </text> + <slider label="X" name="WaterWave2DirX"/> + <slider label="Y" name="WaterWave2DirY"/> + <text name="DensMultText"> + æ°´é¢ã®å±ˆæŠ˜ã‚¹ã‚±ãƒ¼ãƒ« + </text> + <text name="WaterScaleBelowText"> + æ°´ä¸ã®å±ˆæŠ˜ã‚¹ã‚±ãƒ¼ãƒ« + </text> + <text name="MaxAltText"> + ä¸é€æ˜Žåº¦ã®å¢—å¹… + </text> + <text name="BHText3"> + ノーマル・マップ + </text> + </panel> + <check_box label="ã“ã®äº‹å‰è¨å®šã‚’æ–°ã—ã„æ°´ã®è¨å®šã«ã™ã‚‹" name="make_default_cb"/> + <button label="ä¿å˜" name="save"/> + <button label="å–り消ã—" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_environment_settings.xml b/indra/newview/skins/default/xui/ja/floater_environment_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..0e3803119f11e68026069814d7aa23edfef2b4ea --- /dev/null +++ b/indra/newview/skins/default/xui/ja/floater_environment_settings.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Environment Editor Floater" title="自然環境ã®è¨å®š"> + <text name="note"> + ビューワã®è‡ªç„¶ç’°å¢ƒã®è¨å®šã¯ä»¥ä¸‹ã®ã‚ªãƒ—ションを使ã£ã¦ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºã§ãã¾ã™ã€‚ + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="リージョンã®è¨å®šã‚’使用" name="use_region_settings"/> + <radio_item label="自然環境をカスタマイズ" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="note"> + 注æ„:カスタムè¨å®šã¯ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã¯è¦‹ãˆã¾ã›ã‚“。 + </text> + <text name="water_settings_title"> + æ°´ã®è¨å®š + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="- 事å‰è¨å®šã‚’é¸æŠž -" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + 空 / デイサイクル + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="空ã®å›ºå®š" name="my_sky_settings"/> + <radio_item label="デイサイクル" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="- 事å‰è¨å®šã‚’é¸æŠž -" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="- 事å‰è¨å®šã‚’é¸æŠž -" name="item0"/> + </combo_box> + </panel> + <button label="OK" name="ok_btn"/> + <button label="å–り消ã—" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/ja/floater_model_preview.xml b/indra/newview/skins/default/xui/ja/floater_model_preview.xml index 5eb141a28cf994e219e1b7c583f2bb36e3087d98..d0580b752c71393d0a4dca9735660e3fd7fc934d 100644 --- a/indra/newview/skins/default/xui/ja/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/ja/floater_model_preview.xml @@ -3,6 +3,9 @@ <string name="status_idle"> 待機状態 </string> + <string name="status_parse_error"> + Dae ã«å•é¡ŒãŒè¦‹ã¤ã‹ã‚Šã¾ã—㟠- 詳細ã«ã¤ã„ã¦ã¯ãƒã‚°ã‚’ã”å‚ç…§ãã ã•ã„。 + </string> <string name="status_reading_file"> ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°... </string> @@ -12,6 +15,9 @@ <string name="status_vertex_number_overflow"> ã‚¨ãƒ©ãƒ¼ï¼šé ‚ç‚¹ã®æ•°ãŒ65534を超éŽã—ãŸã®ã§ä¸æ¢ã•ã‚Œã¾ã—ãŸã€‚ </string> + <string name="bad_element"> + エラー:è¦ç´ ãŒç„¡åŠ¹ã§ã™ + </string> <string name="high"> 高 </string> diff --git a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml index a785172f20c064fd0e52bc2e03351cee652d4c1b..249d9f22b9aa20849b2c7822f0ab78698685f71c 100644 --- a/indra/newview/skins/default/xui/ja/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/ja/floater_model_wizard.xml @@ -193,6 +193,9 @@ <string name="status_idle"> 待機状態 </string> + <string name="status_parse_error"> + Dae ã«å•é¡ŒãŒè¦‹ã¤ã‹ã‚Šã¾ã—㟠- 詳細ã«ã¤ã„ã¦ã¯ãƒã‚°ã‚’ã”å‚ç…§ãã ã•ã„。 + </string> <string name="status_reading_file"> ãƒãƒ¼ãƒ‡ã‚£ãƒ³ã‚°... </string> @@ -202,6 +205,9 @@ <string name="status_vertex_number_overflow"> ã‚¨ãƒ©ãƒ¼ï¼šé ‚ç‚¹ã®æ•°ãŒ65534を超éŽã—ãŸã®ã§ä¸æ¢ã•ã‚Œã¾ã—ãŸã€‚ </string> + <string name="bad_element"> + エラー:è¦ç´ ãŒç„¡åŠ¹ã§ã™ + </string> <string name="high"> 高 </string> diff --git a/indra/newview/skins/default/xui/ja/floater_tools.xml b/indra/newview/skins/default/xui/ja/floater_tools.xml index f7d77d351edda100c1e392d15f3b5996e88fd01d..0cb5c2d8bbc45e52bee21bd82982b294eee13a78 100644 --- a/indra/newview/skins/default/xui/ja/floater_tools.xml +++ b/indra/newview/skins/default/xui/ja/floater_tools.xml @@ -75,7 +75,7 @@ </text> <check_box initial_value="true" label="テクスãƒãƒ£ã‚’引ã延ã°ã™" name="checkbox stretch textures"/> <check_box initial_value="true" label="グリッドã«ã‚¹ãƒŠãƒƒãƒ—" name="checkbox snap to grid"/> - <combo_box name="combobox grid mode" tool_tip="オブジェクトã®é…ç½®ã«ä½¿ã†ã‚°ãƒªãƒƒãƒ‰ãƒ«ãƒ¼ãƒ©ã‚’é¸æŠžã—ã¾ã™" > + <combo_box name="combobox grid mode" tool_tip="オブジェクトã®é…ç½®ã«ä½¿ã†ã‚°ãƒªãƒƒãƒ‰ãƒ«ãƒ¼ãƒ©ã‚’é¸æŠžã—ã¾ã™"> <combo_box.item label="インワールドグリッド" name="World"/> <combo_box.item label="ãƒãƒ¼ã‚«ãƒ«ã‚°ãƒªãƒƒãƒ‰" name="Local"/> <combo_box.item label="リファレンスグリッド" name="Reference"/> @@ -137,7 +137,7 @@ <text name="object_cost" tool_tip="[prims] / [physics complexity] ã¨ã—ã¦ç¾åœ¨é¸æŠžã•ã‚Œã¦ã„るオブジェクトã®ã‚³ã‚¹ãƒˆ"> 料金: [COST] / [PHYSICS] </text> - <tab_container name="Object Info Tabs" > + <tab_container name="Object Info Tabs"> <panel label="一般" name="General"> <panel.string name="text deed continued"> è²æ¸¡ @@ -379,22 +379,22 @@ オブジェクトã®ç‰¹å¾´ã‚’編集: </text> <check_box label="フレã‚シブルパス" name="Flexible1D Checkbox Ctrl" tool_tip="Z 軸をä¸å¿ƒã«ã‚ªãƒ–ジェクトã®å±ˆæ›²ã‚’有効ã«ã—ã¾ã™ï¼ˆã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆå´ã®ã¿ï¼‰"/> - <spinner label="柔軟性" name="FlexNumSections" /> - <spinner label="é‡åŠ›" name="FlexGravity" /> - <spinner label="ドラッグ" name="FlexFriction" /> - <spinner label="風" name="FlexWind" /> - <spinner label="ç·Šå¼µ" name="FlexTension" /> - <spinner label="X 軸方å‘ã®åŠ›" name="FlexForceX" /> - <spinner label="Y 軸方å‘ã®åŠ›" name="FlexForceY" /> - <spinner label="Z 軸方å‘ã®åŠ›" name="FlexForceZ" /> + <spinner label="柔軟性" name="FlexNumSections"/> + <spinner label="é‡åŠ›" name="FlexGravity"/> + <spinner label="ドラッグ" name="FlexFriction"/> + <spinner label="風" name="FlexWind"/> + <spinner label="ç·Šå¼µ" name="FlexTension"/> + <spinner label="X 軸方å‘ã®åŠ›" name="FlexForceX"/> + <spinner label="Y 軸方å‘ã®åŠ›" name="FlexForceY"/> + <spinner label="Z 軸方å‘ã®åŠ›" name="FlexForceZ"/> <check_box label="å…‰" name="Light Checkbox Ctrl" tool_tip="オブジェクトãŒç™ºå…‰ã—ã¾ã™"/> <color_swatch label="" name="colorswatch" tool_tip="クリックã—ã¦ã‚«ãƒ©ãƒ¼ãƒ”ッカーを開ãã¾ã™"/> <texture_picker label="" name="light texture control" tool_tip="クリックã§æŠ•å½±ç”»ã‚’é¸æŠžã—ã¾ã™ï¼ˆé…延レンダリング有効時ã®ã¿ï¼‰"/> - <spinner label="è¼åº¦" name="Light Intensity" /> + <spinner label="è¼åº¦" name="Light Intensity"/> <spinner label="FOV" name="Light FOV"/> - <spinner label="åŠå¾„" name="Light Radius" /> + <spinner label="åŠå¾„" name="Light Radius"/> <spinner label="焦点" name="Light Focus"/> - <spinner label="å¼±ã¾ã‚‹" name="Light Falloff" /> + <spinner label="å¼±ã¾ã‚‹" name="Light Falloff"/> <spinner label="環境" name="Light Ambiance"/> <text name="label physicsshapetype"> 実åƒã®ç¨®é¡žï¼š @@ -411,7 +411,7 @@ </combo_box> <spinner label="é‡åŠ›" name="Physics Gravity"/> <spinner label="摩擦" name="Physics Friction"/> - <spinner label="密度" name="Physics Density"/> + <spinner label="密度(100 kg/m^3)" name="Physics Density"/> <spinner label="復元" name="Physics Restitution"/> </panel> <panel label="æ質" name="Texture"> @@ -496,18 +496,18 @@ </panel> </panel> <panel label="ä¸èº«" name="Contents"> - <button label="æ–°ã—ã„スクリプト" label_selected="æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト" name="button new script" /> - <button label="権é™" name="button permissions" /> + <button label="æ–°ã—ã„スクリプト" label_selected="æ–°è¦ã‚¹ã‚¯ãƒªãƒ—ト" name="button new script"/> + <button label="権é™" name="button permissions"/> </panel> </tab_container> <panel name="land info panel"> <text name="label_parcel_info"> åŒºç”»æƒ…å ± </text> - <text name="label_area_price" > + <text name="label_area_price"> ä¾¡æ ¼ï¼š [AREA] 平方メートル L$ [PRICE] </text> - <text name="label_area" > + <text name="label_area"> é¢ç©ï¼š [AREA] 平方メートル </text> <button label="åœŸåœ°æƒ…å ±" label_selected="åœŸåœ°æƒ…å ±" name="button about land"/> diff --git a/indra/newview/skins/default/xui/ja/menu_login.xml b/indra/newview/skins/default/xui/ja/menu_login.xml index 265f3ebcd0dc884d03bf3ba72fe46d168205f61b..dca872e9b8d01bd9e882b041d48e353cd76fa0e7 100644 --- a/indra/newview/skins/default/xui/ja/menu_login.xml +++ b/indra/newview/skins/default/xui/ja/menu_login.xml @@ -18,7 +18,7 @@ <menu_item_call label="利用è¦ç´„を表示" name="TOS"/> <menu_item_call label="クリティカルメッセージを表示" name="Critical"/> <menu_item_call label="メディアブラウザã®ãƒ†ã‚¹ãƒˆ" name="Web Browser Test"/> - <menu_item_call label="Web コンテンツフãƒãƒ¼ã‚¿ãƒ¼ã®ãƒ†ã‚¹ãƒˆ" name="Web Content Floater Test"/> + <menu_item_call label="Web コンテンツフãƒãƒ¼ã‚¿ãƒ¼ã®ãƒ‡ãƒãƒƒã‚°ãƒ†ã‚¹ãƒˆ" name="Web Content Floater Debug Test"/> <menu_item_check label="グリッドピッカーを表示ã™ã‚‹" name="Show Grid Picker"/> <menu_item_call label="通知コンソールを表示ã™ã‚‹" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml index a31480158a86ec7226e65438bff1c7ed6b4ce86e..44c543850958f18c7dfa4584c952724fe97179a3 100644 --- a/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/ja/menu_people_nearby_view_sort.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="menu_group_plus"> +<toggleable_menu name="menu_group_plus"> <menu_item_check label="最近ã®ç™ºè¨€è€…ã§ä¸¦ã¹æ›¿ãˆ" name="sort_by_recent_speakers"/> <menu_item_check label="åå‰ã§ä¸¦ã¹æ›¿ãˆ" name="sort_name"/> <menu_item_check label="è·é›¢ã§ä¸¦ã¹æ›¿ãˆ" name="sort_distance"/> <menu_item_check label="人ã®ã‚¢ã‚¤ã‚³ãƒ³è¡¨ç¤º" name="view_icons"/> + <menu_item_check label="地図を表示" name="view_map"/> <menu_item_call label="ブãƒãƒƒã‚¯ã•ã‚ŒãŸä½äººã¨ã‚ªãƒ–ジェクトを表示" name="show_blocked_list"/> -</menu> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/menu_viewer.xml b/indra/newview/skins/default/xui/ja/menu_viewer.xml index ec9db02522bc67e86699278e8753f9b5015eb108..09b315b02601d6a3b586b94fa4604e6a87988553 100644 --- a/indra/newview/skins/default/xui/ja/menu_viewer.xml +++ b/indra/newview/skins/default/xui/ja/menu_viewer.xml @@ -31,6 +31,7 @@ <menu_item_call label="所属グループ" name="My Groups"/> <menu_item_check label="è¿‘ãã®ãƒãƒ£ãƒƒãƒˆ" name="Nearby Chat"/> <menu_item_call label="è¿‘ãã«ã„る人" name="Active Speakers"/> + <menu_item_check label="è¿‘ãã®ãƒœã‚¤ã‚¹" name="Nearby Voice"/> </menu> <menu label="世界" name="World"> <menu_item_check label="ミニマップ" name="Mini-Map"/> @@ -63,8 +64,24 @@ <menu_item_call label="æ£åˆ" name="Noon"/> <menu_item_call label="日没" name="Sunset"/> <menu_item_call label="深夜" name="Midnight"/> - <menu_item_call label="エステートタイム" name="Revert to Region Default"/> - <menu_item_call label="自然環境エディター" name="Environment Editor"/> + </menu> + <menu label="自然環境エディター" name="Enviroment Editor"> + <menu_item_call label="環境ã®è¨å®š..." name="Enviroment Settings"/> + <menu label="æ°´ã®äº‹å‰è¨å®š" name="Water Presets"> + <menu_item_call label="æ–°ã—ã„事å‰è¨å®š..." name="new_water_preset"/> + <menu_item_call label="事å‰è¨å®šã‚’編集..." name="edit_water_preset"/> + <menu_item_call label="事å‰è¨å®šã‚’削除..." name="delete_water_preset"/> + </menu> + <menu label="空ã®äº‹å‰è¨å®š" name="Sky Presets"> + <menu_item_call label="æ–°ã—ã„事å‰è¨å®š..." name="new_sky_preset"/> + <menu_item_call label="事å‰è¨å®šã‚’編集..." name="edit_sky_preset"/> + <menu_item_call label="事å‰è¨å®šã‚’削除..." name="delete_sky_preset"/> + </menu> + <menu label="デイã®äº‹å‰è¨å®š" name="Day Presets"> + <menu_item_call label="æ–°ã—ã„事å‰è¨å®š..." name="new_day_preset"/> + <menu_item_call label="事å‰è¨å®šã‚’編集..." name="edit_day_preset"/> + <menu_item_call label="事å‰è¨å®šã‚’削除..." name="delete_day_preset"/> + </menu> </menu> </menu> <menu label="制作" name="BuildTools"> diff --git a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml index 7a97538117311823ec6676c3a5ce1127bff656b7..5334042dc9a135d821c5f7cdecb71333ddebfbf8 100644 --- a/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/ja/menu_wearing_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Gear Wearing"> +<toggleable_menu name="Gear Wearing"> <menu_item_call label="アウトフットã®ç·¨é›†" name="edit"/> <menu_item_call label="å–り外ã™" name="takeoff"/> -</menu> + <menu_item_call label="アウトフィットã®ãƒªã‚¹ãƒˆã‚’クリップボードã«ã‚³ãƒ”ー" name="copy"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/ja/notifications.xml b/indra/newview/skins/default/xui/ja/notifications.xml index d63ca8403513552dc42fbc88bc210221ab467baf..a471e4941da0fd6d6b49ea81f966204d0ea4c5bc 100644 --- a/indra/newview/skins/default/xui/ja/notifications.xml +++ b/indra/newview/skins/default/xui/ja/notifications.xml @@ -1590,6 +1590,11 @@ http://wiki.secondlife.com/wiki/Setting_your_display_name ã‚’å‚ç…§ã—ã¦ãã <button name="Cancel" text="å–り消ã—"/> </form> </notification> + <notification name="TooManyTeleportOffers"> + [OFFERS] 回ã«ã‚ãŸã£ã¦ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’é€ã‚ã†ã¨ã—ã¾ã—ãŸãŒã€ +ãã‚Œã¯é™åº¦æ•° [LIMIT] を超ãˆã¦ã„ã¾ã™ã€‚ + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OfferTeleportFromGod"> ç¾åœ¨åœ°ã«ä½äººã‚’ゴッドサモンã—ã¾ã™ã‹ï¼Ÿ <form name="form"> @@ -2018,6 +2023,10 @@ Linden Lab トラベルã€Webã€æ¤œç´¢ã®å±¥æ´ã‚’ã™ã¹ã¦å‰Šé™¤ã—ã¾ã™ã‹ï¼Ÿ <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="OK"/> </notification> + <notification name="ConfirmClearCache"> + ビューワã®ã‚ャッシュをクリアã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="å–り消ã—" yestext="OK"/> + </notification> <notification name="ConfirmClearCookies"> 本当ã«ã‚¯ãƒƒã‚ーをクリアã—ã¾ã™ã‹ï¼Ÿ <usetemplate name="okcancelbuttons" notext="ã‚ャンセル" yestext="ã¯ã„"/> @@ -2043,48 +2052,30 @@ Web ページã«ãƒªãƒ³ã‚¯ã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã«ã‚¢ã‚¯ã‚» ä¿å˜ã•ã‚ŒãŸäº‹å‰è¨å®šã‚’上書ãã—ã¾ã™ã‹ï¼Ÿ <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> </notification> - <notification name="WLDeletePresetAlert"> - 「 [SKY] ã€ã‚’削除ã—ã¾ã™ã‹ï¼Ÿ - <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> - </notification> <notification name="WLNoEditDefault"> デフォルトã®è¨å®šã‚’編集ã—ãŸã‚Šå‰Šé™¤ã—ãŸã‚Šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 </notification> <notification name="WLMissingSky"> ã“ã®ãƒ‡ã‚¤ã‚µã‚¤ã‚¯ãƒ«ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ¬¡ã®å˜åœ¨ã—ãªã„「空ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’å‚ç…§ã—ã¦ã„ã¾ã™ï¼š [SKY]。 </notification> - <notification name="PPSaveEffectAlert"> - ãƒã‚¹ãƒˆãƒ—ãƒã‚»ã‚¹åŠ¹æžœãŒå˜åœ¨ã—ã¾ã™ã€‚ 上書ãã—ã¾ã™ã‹ï¼Ÿ - <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> - </notification> - <notification name="NewSkyPreset"> - æ–°ã—ã„空ã®åå‰ã‚’指定ã—ã¦ãã ã•ã„。 - <form name="form"> - <input name="message"> - æ–°ã—ã„事å‰è¨å®š - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="ã‚ャンセル"/> - </form> + <notification name="WLRegionApplyFail"> + 申ã—訳ã”ã–ã„ã¾ã›ã‚“ãŒã€è¨å®šã‚’リージョンã«é©ç”¨ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚一度リージョンを出ã¦ã‹ã‚‰æˆ»ã‚‹ã¨ã€å•é¡ŒãŒè§£æ±ºã•ã‚Œã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。å•é¡Œã®ç™ºç”Ÿã—ãŸç†ç”±ï¼š[FAIL_REASON] </notification> - <notification name="ExistsSkyPresetAlert"> - 事å‰è¨å®šãŒã™ã§ã«å˜åœ¨ã—ã¾ã™ï¼ + <notification name="EnvCannotDeleteLastDayCycleKey"> + デイサイクルを空ã«ã¯ã§ããªã„ã®ã§ã€ã“ã®ãƒ‡ã‚¤ã‚µã‚¤ã‚¯ãƒ«ã®æœ€å¾Œã®ã‚ーを削除ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。最後ã®ã‚ーを削除ã—ã¦æ–°ã—ã„ã‚ーを作æˆã™ã‚‹ã®ã§ã¯ãªãã€æœ€å¾Œã®ã‚ーを変更ã—ã¦ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="NewWaterPreset"> - æ–°ã—ã„æ°´ã®äº‹å‰è¨å®šã®åå‰ã‚’指定ã—ã¦ãã ã•ã„。 - <form name="form"> - <input name="message"> - æ–°ã—ã„事å‰è¨å®š - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="ã‚ャンセル"/> - </form> + <notification name="DayCycleTooManyKeyframes"> + ã“ã®ãƒ‡ã‚¤ã‚µã‚¤ã‚¯ãƒ«ã«ã¯ã“れ以上ã‚ãƒ¼ãƒ•ãƒ¬ãƒ¼ãƒ ã‚’è¿½åŠ ã§ãã¾ã›ã‚“。[SCOPE] ã®ç¯„囲ã®ãƒ‡ã‚¤ã‚µã‚¤ã‚¯ãƒ«ã«è¿½åŠ ã§ãã‚‹ã‚ーフレーム数ã¯æœ€é«˜ [MAX] ã§ã™ã€‚ + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="ExistsWaterPresetAlert"> - 事å‰è¨å®šãŒã™ã§ã«å˜åœ¨ã—ã¾ã™ï¼ + <notification name="EnvUpdateRate"> + リージョンã®è‡ªç„¶ç’°å¢ƒã®è¨å®šã¯ [WAIT] 秒ã”ã¨ã«ã—ã‹æ›´æ–°ã§ãã¾ã›ã‚“。ãã®é–“隔を置ã„ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„。 + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="WaterNoEditDefault"> - デフォルトã®è¨å®šã‚’編集ã—ãŸã‚Šå‰Šé™¤ã—ãŸã‚Šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 + <notification name="PPSaveEffectAlert"> + ãƒã‚¹ãƒˆãƒ—ãƒã‚»ã‚¹åŠ¹æžœãŒå˜åœ¨ã—ã¾ã™ã€‚ 上書ãã—ã¾ã™ã‹ï¼Ÿ + <usetemplate name="okcancelbuttons" notext="ã„ã„ãˆ" yestext="ã¯ã„"/> </notification> <notification name="ChatterBoxSessionStartError"> [RECIPIENT] ã¨æ–°ã—ã„ãƒãƒ£ãƒƒãƒˆã‚’開始ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 @@ -2378,6 +2369,9 @@ Web ページã«ãƒªãƒ³ã‚¯ã™ã‚‹ã¨ã€ä»–人ãŒã“ã®å ´æ‰€ã«ç°¡å˜ã«ã‚¢ã‚¯ã‚» <notification name="NoBuild"> ã“ã®ã‚¨ãƒªã‚¢ã§ã¯åˆ¶ä½œãŒç¦æ¢ã•ã‚Œã¦ã„ã¾ã™ã€‚ オブジェクトを制作ã—ãŸã‚Š Rez ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。 </notification> + <notification name="SeeAvatars"> + ã“ã®åŒºç”»ã«ã„ã‚‹ã‚¢ãƒã‚¿ãƒ¼ã‚„ã“ã®åŒºç”»å†…ã§è¡Œã‚れる文å—ãƒãƒ£ãƒƒãƒˆã¯ã€ä»–ã®åŒºç”»ã‹ã‚‰è¦‹ãˆã¾ã›ã‚“。ã‚ãªãŸã«ã¯ã€ã“ã®åŒºç”»å¤–ã«ã„ã‚‹ä½äººãŒè¦‹ãˆãšã€å¤–ã®ä½äººã«ã¯ã‚ãªãŸã®å§¿ãŒè¦‹ãˆã¾ã›ã‚“。ãƒãƒ£ãƒ³ãƒãƒ« 0 ã§ã®é€šå¸¸ã®æ–‡å—ãƒãƒ£ãƒƒãƒˆã‚‚ブãƒãƒƒã‚¯ã•ã‚Œã¾ã™ã€‚ + </notification> <notification name="ScriptsStopped"> 管ç†è€…ãŒã“ã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚¹ã‚¯ãƒªãƒ—トを一時åœæ¢ã—ã¾ã—ãŸã€‚ </notification> @@ -2802,7 +2796,9 @@ M ã‚ーを押ã—ã¦å¤‰æ›´ã—ã¾ã™ã€‚ 共有ã™ã‚‹ä½äººã‚’é¸æŠžã—ã¾ã™ã€‚ </notification> <notification name="MeshUploadError"> - [LABEL] をアップãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸï¼š [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + [LABEL] をアップãƒãƒ¼ãƒ‰ã§ãã¾ã›ã‚“ã§ã—ãŸï¼š[MESSAGE] [IDENTIFIER] + +詳細ã«ã¤ã„ã¦ã¯ãƒã‚°ã‚’ã”覧ãã ã•ã„。 </notification> <notification name="ShareItemsConfirmation"> 次ã®ã‚¢ã‚¤ãƒ†ãƒ を共有ã—ã¾ã™ã‹ï¼Ÿ diff --git a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml index e9e36e4842dc7fb0c94b8db8c33a372295b55b9e..df9ef40113bf212e4ee287dc557ea22a0d2dca7c 100644 --- a/indra/newview/skins/default/xui/ja/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/ja/panel_outfits_list.xml @@ -1,7 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Outfits"> + <accordion name="outfits_accordion"> + <no_matched_tabs_text name="no_matched_outfits_msg" value="ãŠæŽ¢ã—ã®ã‚‚ã®ã¯è¦‹ã¤ã‹ã‚Šã¾ã—ãŸã‹ï¼Ÿ[secondlife:///app/search/all/[SEARCH_TERM] 検索] ã‚’ãŠè©¦ã—ãã ã•ã„。"/> + <no_visible_tabs_text name="no_outfits_msg" value="アウトフィットãŒã¾ã ã‚ã‚Šã¾ã›ã‚“。[secondlife:///app/search/all 検索] ã‚’ãŠè©¦ã—ãã ã•ã„。"/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="オプションを表示ã—ã¾ã™"/> + <menu_button name="options_gear_btn" tool_tip="オプションを表示ã—ã¾ã™"/> <button name="trash_btn" tool_tip="é¸æŠžã—ãŸã‚¢ã‚¦ãƒˆãƒ•ã‚£ãƒƒãƒˆã‚’削除ã™ã‚‹"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_place_profile.xml b/indra/newview/skins/default/xui/ja/panel_place_profile.xml index 8a40d7aa5a7334dc708f94109db86a106596cf18..7235bc0f18f80d99d9b7ff68627129df93e50092 100644 --- a/indra/newview/skins/default/xui/ja/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/ja/panel_place_profile.xml @@ -68,6 +68,8 @@ <text name="scripts_value" value="オン"/> <text name="damage_label" value="ダメージ:"/> <text name="damage_value" value="オフ"/> + <text name="see_avatars_label" value="ã‚¢ãƒã‚¿ãƒ¼ã‚’表示:"/> + <text name="see_avatars_value" value="オフ"/> <button label="åœŸåœ°æƒ…å ±" name="about_land_btn"/> </panel> </accordion_tab> diff --git a/indra/newview/skins/default/xui/ja/panel_places.xml b/indra/newview/skins/default/xui/ja/panel_places.xml index e19b86e55231ed6e898b227af5d6fd7cd90e8176..9d3925afdcf60c5e5199296a4439adcde659f3d0 100644 --- a/indra/newview/skins/default/xui/ja/panel_places.xml +++ b/indra/newview/skins/default/xui/ja/panel_places.xml @@ -24,7 +24,7 @@ <menu_button label="â–¼" name="overflow_btn" tool_tip="オプションを表示ã—ã¾ã™"/> </layout_panel> </layout_stack> - <layout_stack name="bottom_bar_ls3"> + <layout_stack name="bottom_bar_profile_ls"> <layout_panel name="profile_btn_lp"> <button label="プãƒãƒ•ã‚£ãƒ¼ãƒ«" name="profile_btn" tool_tip="å ´æ‰€ã®ãƒ—ãƒãƒ•ã‚£ãƒ¼ãƒ«ã‚’表示"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml index ccc5c3908b578f8434dc59dc1e6bc196864bffd7..dcaa23fee51e3e91c1ea75cf34a1caffba0fdae3 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_advanced.xml @@ -3,6 +3,19 @@ <panel.string name="aspect_ratio_text"> [NUM]:[DEN] </panel.string> + <text name="Cache:"> + ã‚ャッシュ: + </text> + <spinner label="ã‚ャッシュサイズ(64~9,984MB)" name="cachesizespinner"/> + <text name="text_box5"> + MB + </text> + <button label="ã‚ャッシュをクリア" label_selected="ã‚ャッシュをクリア" name="clear_cache"/> + <text name="Cache location"> + ã‚ャッシュã®ä¿å˜å ´æ‰€ï¼š + </text> + <button label="å‚ç…§" label_selected="å‚ç…§" name="set_cache"/> + <button label="デフォルトã®å ´æ‰€" label_selected="デフォルトã®å ´æ‰€" name="default_cache_location"/> <text name="UI Size:"> UI サイズ: </text> diff --git a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml index c11e636875b0c886ac808a73ec85266bd91ad677..3a4c360ccc32b4ff0ba5b9a4f21168a55d68c042 100644 --- a/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/ja/panel_preferences_sound.xml @@ -19,6 +19,7 @@ <check_box label="有効" name="enable_voice_check"/> <check_box label="メディアを自動å†ç”Ÿã™ã‚‹" name="media_auto_play_btn" tool_tip="ã“ã“ã«ãƒã‚§ãƒƒã‚¯ã‚’入れã¦ãƒ¡ãƒ‡ã‚£ã‚¢ã®è‡ªå‹•å†ç”Ÿã‚’許å¯ã—ã¾ã™" value="true"/> <check_box label="ä»–ã®ã‚¢ãƒã‚¿ãƒ¼ã«å–り付ã‘られãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’å†ç”Ÿã™ã‚‹" name="media_show_on_others_btn" tool_tip="ã“ã®ãƒã‚§ãƒƒã‚¯ã‚’外ã™ã¨ã€è¿‘ãã«ã„ã‚‹ä»–ã®ã‚¢ãƒã‚¿ãƒ¼ã«å–り付ã‘られãŸãƒ¡ãƒ‡ã‚£ã‚¢ã‚’éžè¡¨ç¤ºã«ã—ã¾ã™" value="true"/> + <check_box label="ジェスãƒãƒ£ãƒ¼ã®éŸ³ã‚’å†ç”Ÿ" name="gesture_audio_play_btn" tool_tip="ジェスãƒãƒ£ãƒ¼ã®éŸ³ã‚’èžãã«ã¯ã“れをé¸æŠž" value="true"/> <text name="voice_chat_settings"> ボイスãƒãƒ£ãƒƒãƒˆã®è¨å®š </text> @@ -35,28 +36,5 @@ <button label="ã‚ーè¨å®š" name="set_voice_hotkey_button"/> <button name="set_voice_middlemouse_button" tool_tip="マウスã®ä¸å¤®ãƒœã‚¿ãƒ³ã«ãƒªã‚»ãƒƒãƒˆ"/> <button label="入力・出力機器" name="device_settings_btn"/> - <panel label="機器ã®è¨å®š" name="device_settings_panel"> - <panel.string name="default_text"> - デフォルト - </panel.string> - <panel.string name="default system device"> - デフォルトã®ã‚·ã‚¹ãƒ†ãƒ 機器 - </panel.string> - <panel.string name="no device"> - 機器ãŒè¨å®šã•ã‚Œã¦ã„ã¾ã›ã‚“ - </panel.string> - <text name="Input"> - 入力 - </text> - <text name="My volume label"> - ç§ã®éŸ³é‡ï¼š - </text> - <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="スライダーを使ã£ã¦éŸ³é‡ã‚’調節ã—ã¾ã™"/> - <text name="wait_text"> - ã—ã°ã‚‰ããŠå¾…ã¡ãã ã•ã„。 - </text> - <text name="Output"> - 出力 - </text> - </panel> + <panel label="機器ã®è¨å®š" name="device_settings_panel"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_environment.xml b/indra/newview/skins/default/xui/ja/panel_region_environment.xml new file mode 100644 index 0000000000000000000000000000000000000000..f6ef3f09348b232449cbd1c4dc7f7cbde4d78226 --- /dev/null +++ b/indra/newview/skins/default/xui/ja/panel_region_environment.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="環境" name="panel_env_info"> + <text name="water_settings_title"> + ã‚ãªãŸã®ãƒªãƒ¼ã‚¸ãƒ§ãƒ³ã‚’訪れるユーザーã«è¦‹ã›ãŸã„ã€æ°´ã¨ç©º/デイサイクルã®è¨å®šã‚’é¸æŠžã—ã¾ã™ã€‚詳細 + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Second Life ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆè¨å®šã‚’使用" name="use_sl_default_settings"/> + <radio_item label="次ã®è¨å®šã‚’使用" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="water_settings_title"> + æ°´ã®è¨å®š + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="- 事å‰è¨å®šã‚’é¸æŠž -" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + 空 / デイサイクル + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="空ã®å›ºå®š" name="my_sky_settings"/> + <radio_item label="デイサイクル" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="- 事å‰è¨å®šã‚’é¸æŠž -" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="- 事å‰è¨å®šã‚’é¸æŠž -" name="item0"/> + </combo_box> + </panel> + <button label="é©ç”¨" name="apply_btn"/> + <button label="å–り消ã—" name="cancel_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/ja/panel_region_terrain.xml b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml index 8df803b2dce487598527727b2104b9443b050c7c..fb853c1925cd73f043dc941339b29ab5a96fb4cf 100644 --- a/indra/newview/skins/default/xui/ja/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/ja/panel_region_terrain.xml @@ -1,4 +1,4 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> +<?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="地形" name="Terrain"> <text name="region_text_lbl"> 地域: @@ -6,25 +6,55 @@ <text name="region_text"> 未知 </text> - <spinner label="æ°´é¢ã®é«˜ã•" name="water_height_spin" /> - <button label="?" name="water_height_help" /> - <spinner label="地形ã®ä¸Šæ˜‡é™åº¦" name="terrain_raise_spin" /> - <button label="?" name="terrain_raise_help" /> - <spinner label="地形ã®ä¸‹é™é™åº¦" name="terrain_lower_spin" /> - <button label="?" name="terrain_lower_help" /> - <check_box label="ä¸å‹•ç”£å¤ªé™½ä½¿ç”¨" name="use_estate_sun_check" /> - <button label="?" name="use_estate_sun_help" /> - <check_box label="太陽固定" name="fixed_sun_check" /> - <button label="?" name="fixed_sun_help" /> - <slider label="段階" name="sun_hour_slider" /> - <button label="é©ç”¨" name="apply_btn" /> - <button label="RAW 地形ダウンãƒãƒ¼ãƒ‰..." name="download_raw_btn" - tool_tip="ä¸å‹•ç”£ã‚ªãƒ¼ãƒŠãƒ¼ã®ã¿åˆ©ç”¨å¯èƒ½ã€ç®¡ç†è€…ã¯åˆ©ç”¨ä¸å¯ã§ã™" /> - <button label="?" name="download_raw_help" /> - <button label="RAW 地形アップãƒãƒ¼ãƒ‰..." name="upload_raw_btn" - tool_tip="ä¸å‹•ç”£ã‚ªãƒ¼ãƒŠãƒ¼ã®ã¿åˆ©ç”¨å¯èƒ½ã€ç®¡ç†è€…ã¯åˆ©ç”¨ä¸å¯ã§ã™" /> - <button label="?" name="upload_raw_help" /> - <button label="地形ã®æ§‹ç¯‰" name="bake_terrain_btn" - tool_tip="ç¾åœ¨ã®åœ°å½¢ã‚’上昇・下é™ç¯„囲ã®ä¸é–“点ã¨ã—ã¦è¨å®šã—ã¾ã™" /> - <button label="?" name="bake_terrain_help" /> + <spinner label="æ°´é¢ã®é«˜ã•" name="water_height_spin"/> + <spinner label="地形ã®ä¸Šæ˜‡é™åº¦" name="terrain_raise_spin"/> + <spinner label="地形ã®ä¸‹é™é™åº¦" name="terrain_lower_spin"/> + <text name="detail_texture_text"> + 地形テクスãƒãƒ£ï¼ˆ512x512 ã® 24 bit .tga ファイル) + </text> + <text name="height_text_lbl"> + 1(低) + </text> + <text name="height_text_lbl2"> + 2 + </text> + <text name="height_text_lbl3"> + 3 + </text> + <text name="height_text_lbl4"> + 4(高) + </text> + <text name="height_text_lbl5"> + 地形ã®éš†èµ·ç¯„囲 + </text> + <text name="height_text_lbl10"> + 数値ã¯ä¸Šã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ãƒ–レンド範囲を示ã—ã¾ã™ã€‚ + </text> + <text name="height_text_lbl11"> + 計測å˜ä½ã¯ãƒ¡ãƒ¼ãƒˆãƒ«ã§ã€ã€Œä½Žã€ã®å€¤ã¯ã€1番ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®é«˜ã•ã®ã€Œæœ€å¤§å€¤ã€ã§ã™ã€‚「高ã€ã®å€¤ã¯ã€4番ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®é«˜ã•ã®ã€Œæœ€ä½Žå€¤ã€ã§ã™ã€‚ + </text> + <text name="height_text_lbl6"> + 北西 + </text> + <text name="height_text_lbl7"> + åŒ—æ± + </text> + <spinner label="低" name="height_start_spin_1"/> + <spinner label="低" name="height_start_spin_3"/> + <spinner label="高" name="height_range_spin_1"/> + <spinner label="高" name="height_range_spin_3"/> + <text name="height_text_lbl8"> + å—西 + </text> + <text name="height_text_lbl9"> + å—æ± + </text> + <spinner label="低" name="height_start_spin_0"/> + <spinner label="低" name="height_start_spin_2"/> + <spinner label="高" name="height_range_spin_0"/> + <spinner label="高" name="height_range_spin_2"/> + <button label="RAW 地形ダウンãƒãƒ¼ãƒ‰..." name="download_raw_btn" tool_tip="ä¸å‹•ç”£ã‚ªãƒ¼ãƒŠãƒ¼ã®ã¿åˆ©ç”¨å¯èƒ½ã€ç®¡ç†è€…ã¯åˆ©ç”¨ä¸å¯ã§ã™"/> + <button label="RAW 地形アップãƒãƒ¼ãƒ‰..." name="upload_raw_btn" tool_tip="ä¸å‹•ç”£ã‚ªãƒ¼ãƒŠãƒ¼ã®ã¿åˆ©ç”¨å¯èƒ½ã€ç®¡ç†è€…ã¯åˆ©ç”¨ä¸å¯ã§ã™"/> + <button label="地形ã®æ§‹ç¯‰" name="bake_terrain_btn" tool_tip="ç¾åœ¨ã®åœ°å½¢ã‚’上昇・下é™ç¯„囲ã®ä¸é–“点ã¨ã—ã¦è¨å®šã—ã¾ã™"/> + <button label="é©ç”¨" name="apply_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml index e26d8717d12d0dcd354294e2d068b1434ad69b92..7edda6e1a3c8790cc40c3c17633a3aef48500af7 100644 --- a/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/ja/sidepanel_inventory.xml @@ -1,6 +1,38 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="ã‚‚ã®" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> + <layout_stack name="inventory_layout_stack"> + <layout_panel name="inbox_layout_panel"> + <panel label="" name="marketplace_inbox"> + <string name="InboxLabelWithArg"> + å—ã‘å–ã£ãŸå•†å“([NUM]) + </string> + <string name="InboxLabelNoArg"> + å—ã‘å–ã£ãŸå•†å“ + </string> + <button label="å—ã‘å–ã£ãŸå•†å“" name="inbox_btn"/> + <text name="inbox_fresh_new_count"> + [NUM] æ–°ç™»å ´ + </text> + <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <text name="inbox_inventory_placeholder"> + マーケットプレイスã‹ã‚‰è³¼å…¥ã—ãŸå•†å“ã¯ã“ã“ã«é…é”ã•ã‚Œã¾ã™ã€‚ + </text> + </panel> + </panel> + </layout_panel> + <layout_panel name="outbox_layout_panel"> + <panel label="" name="marketplace_outbox"> + <button label="マーãƒãƒ£ãƒ³ãƒˆã®ã‚¢ã‚¦ãƒˆãƒœãƒƒã‚¯ã‚¹" name="outbox_btn"/> + <button label="" name="outbox_sync_btn" tool_tip="自分ã®ãƒžãƒ¼ã‚±ãƒƒãƒˆãƒ—レイス店é ã«ç§»å‹•"/> + <panel tool_tip="Drag and drop items here to prepare them for sale on your storefront"> + <text name="outbox_inventory_placeholder"> + ã“ã®æ©Ÿèƒ½ã‚’使用ã™ã‚‹ã«ã¯ã€ãƒžãƒ¼ãƒãƒ£ãƒ³ãƒˆã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’セットアップã—ã¦ãã ã•ã„。 + </text> + </panel> + </panel> + </layout_panel> + </layout_stack> <panel name="button_panel"> <layout_stack name="button_panel_ls"> <layout_panel name="info_btn_lp"> diff --git a/indra/newview/skins/default/xui/ja/strings.xml b/indra/newview/skins/default/xui/ja/strings.xml index fa6d25d238500d97ff37ec3629860fded98dad1d..cb4fb80a55f0c38eda228db49ac6693964af1967 100644 --- a/indra/newview/skins/default/xui/ja/strings.xml +++ b/indra/newview/skins/default/xui/ja/strings.xml @@ -1192,6 +1192,12 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="InventoryNoTexture"> 「æŒã¡ç‰©ã€å†…ã«ã“ã®ãƒ†ã‚¯ã‚¹ãƒãƒ£ã®ã‚³ãƒ”ーãŒã‚ã‚Šã¾ã›ã‚“ </string> + <string name="InventoryInboxNoItems"> + マーケットプレイスã§è³¼å…¥ã—ãŸå•†å“ã¯ã“ã“ã«é…é”ã•ã‚Œã¾ã™ã€‚ + </string> + <string name="InventoryOutboxNoItems"> + マーケットプレイス店é ã«æŽ²è¼‰ã™ã‚‹ãŸã‚ã®æº–å‚™ã¨ã—ã¦ã€ã“ã“ã«å•†å“をドラッグã—ã¾ã™ã€‚ + </string> <string name="no_transfer" value=" (å†è²©ãƒ»ãƒ—レゼントä¸å¯ï¼‰"/> <string name="no_modify" value=" (編集ä¸å¯ï¼‰"/> <string name="no_copy" value=" (コピーä¸å¯ï¼‰"/> @@ -1322,6 +1328,9 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="InvFolder All"> 全員 </string> + <string name="no_attachments"> + ç€ç”¨ã—ã¦ã„るアタッãƒãƒ¡ãƒ³ãƒˆã¯ã‚ã‚Šã¾ã›ã‚“ + </string> <string name="Buy"> 買ㆠ</string> @@ -1657,6 +1666,9 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="IMTeen"> ティーン </string> + <string name="Anyone"> + 全員 + </string> <string name="RegionInfoError"> エラー </string> @@ -1879,6 +1891,12 @@ support@secondlife.com ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。 <string name="Public"> パブリック </string> + <string name="LocalSettings"> + ãƒãƒ¼ã‚«ãƒ«è¨å®š + </string> + <string name="RegionSettings"> + リージョン(地域)ã®è¨å®š + </string> <string name="ClassifiedClicksTxt"> クリック数: [TELEPORT] テレãƒãƒ¼ãƒˆã€ [MAP] 地図〠[PROFILE] プãƒãƒ•ã‚£ãƒ¼ãƒ« </string> @@ -3724,6 +3742,9 @@ www.secondlife.com ã‹ã‚‰æœ€æ–°ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’ダウンãƒãƒ¼ãƒ‰ã—ã¦ãã <string name="LocationCtrlGeneralIconTooltip"> General リージョン </string> + <string name="LocationCtrlSeeAVsTooltip"> + ã“ã®åŒºç”»å¤–ã«ã‚¢ãƒã‚¿ãƒ¼ã‚’見ãˆã‚‹ã‚ˆã†ã«ã—ã¦ã€ãƒãƒ£ãƒƒãƒˆã‚‚è¨±å¯ + </string> <string name="UpdaterWindowTitle"> [APP_NAME] アップデート </string> diff --git a/indra/newview/skins/default/xui/pl/panel_places.xml b/indra/newview/skins/default/xui/pl/panel_places.xml index 34c105225d0774463d7ccc26782337d1099c44bd..d69d137d235755ea5aaf7a4832f925d4f79c6f72 100644 --- a/indra/newview/skins/default/xui/pl/panel_places.xml +++ b/indra/newview/skins/default/xui/pl/panel_places.xml @@ -24,7 +24,7 @@ <menu_button label="â–¼" name="overflow_btn" tool_tip="Pokaż opcje dodatkowe"/> </layout_panel> </layout_stack> - <layout_stack name="bottom_bar_ls3"> + <layout_stack name="bottom_bar_profile_ls"> <layout_panel name="profile_btn_lp"> <button label="Profil" name="profile_btn" tool_tip="Pokaż profil miejsca"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/pt/floater_about_land.xml b/indra/newview/skins/default/xui/pt/floater_about_land.xml index e48cac7d1fe13f7c345cdad2f1c3b8f442cbf9ee..514c7382f83d92faabe369e915ae21fa8e5e0cab 100644 --- a/indra/newview/skins/default/xui/pt/floater_about_land.xml +++ b/indra/newview/skins/default/xui/pt/floater_about_land.xml @@ -133,12 +133,12 @@ Vá para o menu Mundo > Sobre o terreno ou selecione outro lote para mostrar 0 </text> <button label="Comprar terreno..." label_selected="Comprar terreno..." left="130" name="Buy Land..." width="125"/> + <button label="Venda Linden" name="Linden Sale..." tool_tip="O terreno precisa ser possuÃdo, estar com o conteúdo configurado e não estar pronto para leilão."/> <button label="Dados do script" name="Scripts..."/> <button label="Comprar para o grupo" name="Buy For Group..."/> <button label="Comprar passe..." label_selected="Comprar passe..." left="130" name="Buy Pass..." tool_tip="Um passe concede a você acesso temporário a este terreno." width="125"/> <button label="Abandonar terreno..." label_selected="Abandonar terreno..." name="Abandon Land..."/> <button label="Pedir terreno" name="Reclaim Land..."/> - <button label="Venda Linden" name="Linden Sale..." tool_tip="O terreno precisa ser possuÃdo, estar com o conteúdo configurado e não estar pronto para leilão."/> </panel> <panel label="CONTRATO" name="land_covenant_panel"> <panel.string name="can_resell"> @@ -308,6 +308,9 @@ Apenas lotes maiores podem ser listados na busca. <panel.string name="push_restrict_region_text"> Proibido empurrar (regulamento da região) </panel.string> + <panel.string name="see_avs_text"> + Veja e bata papo com os residentes deste terreno + </panel.string> <text name="allow_label"> Autorizar outros residentes a: </text> @@ -370,6 +373,10 @@ Apenas lotes maiores podem ser listados na busca. Foto: </text> <texture_picker label="" name="snapshot_ctrl" tool_tip="Clique para escolher uma imagem"/> + <text name="allow_label5"> + Permitir que residentes de outros terrenos: + </text> + <check_box label="Ver avatares" name="SeeAvatarsCheck" tool_tip="Permite que residentes de outros terrenos vejam e conversem com os residentes deste terreno e vice-versa."/> <text name="landing_point"> Ponto de Aterrissagem: [LANDING] </text> @@ -429,6 +436,11 @@ MÃdia: Som: </text> <check_box label="Limitar sons de gestos e objetos a esta parcela" name="check sound local"/> + <text name="Avatar Sounds:"> + Ãudio de avatares: + </text> + <check_box label="Todos" name="all av sound check"/> + <check_box label="Grupo" name="group av sound check"/> <text name="Voice settings:"> Voz: </text> diff --git a/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml b/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..a8b5d8f67d0bf83bf4a1753daf4726567243cb57 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_delete_env_preset.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<floater name="Delete Env Preset" title="EXCLUIR CONF AMBIENTE"> + <string name="title_water"> + Excluir pré-configuração da água + </string> + <string name="title_sky"> + Excluir pré-configuração de céu + </string> + <string name="title_day_cycle"> + Excluir pré-configuração dos dias + </string> + <string name="label_water"> + Pré-configuração: + </string> + <string name="label_sky"> + Pré-configuração: + </string> + <string name="label_day_cycle"> + Ciclo dia: + </string> + <string name="msg_confirm_deletion"> + Tem certeza de que quer excluir esta pré-configuração? + </string> + <string name="msg_sky_is_referenced"> + ImpossÃvel excluir pré-configuração utilizada por um ou mais ciclos de dia . + </string> + <string name="combo_label"> + -Selecione uma pré-configuração- + </string> + <text name="label"> + Pré-configuração: + </text> + <button label="Excluir" name="delete"/> + <button label="Cancelar" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml b/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e25938986d18410bf94eaafb967a5abac251d86 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_edit_day_cycle.xml @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Day cycle" title="Editar ciclo dos dias"> + <string name="title_new"> + Criar novo ciclo de dias + </string> + <string name="title_edit"> + Editar ciclo dos dias + </string> + <string name="hint_new"> + Dê um nome ao seu ciclo dos dias, ajuste os controles para criá-lo e clique em "Salvar". + </string> + <string name="hint_edit"> + Para editar sua configuração do dia, ajuste os controles e clique em "Salvar". + </string> + <string name="combo_label"> + -Selecione uma pré-configuração- + </string> + <text name="label"> + Nome: + </text> + <text name="note"> + Observação: trocar o nome de uma pré-configuração criará uma nova sem modificar a uma pré-configuração atual. + </text> + <text name="hint_item1"> + - Clique em uma guia para editar as configurações e horário de um céu. + </text> + <text name="hint_item2"> + - Clique e arraste as guias para definir as transições. + </text> + <text name="hint_item3"> + - Use a seta para rever o ciclo dos dias. + </text> + <panel name="day_cycle_slider_panel"> + <multi_slider initial_value="0" name="WLTimeSlider"/> + <multi_slider initial_value="0" name="WLDayCycleKeys"/> + <button label="Adicionar chave" label_selected="Adicionar chave" name="WLAddKey"/> + <button label="Excluir chave" label_selected="Excluir chave" name="WLDeleteKey"/> + <text name="WL12am"> + 24:00 + </text> + <text name="WL3am"> + 03:00 + </text> + <text name="WL6am"> + 06:00 + </text> + <text name="WL9amHash"> + 09:00 + </text> + <text name="WL12pmHash"> + 12:00 + </text> + <text name="WL3pm"> + 15:00 + </text> + <text name="WL6pm"> + 18:00 + </text> + <text name="WL9pm"> + 21:00 + </text> + <text name="WL12am2"> + 24:00 + </text> + <text name="WL12amHash"> + | + </text> + <text name="WL3amHash"> + I + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL9amHash2"> + I + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL3pmHash"> + I + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL9pmHash"> + I + </text> + <text name="WL12amHash2"> + | + </text> + </panel> + <text name="WLCurKeyPresetText"> + Configuração do céu: + </text> + <combo_box label="Pré-configuração" name="WLSkyPresets"/> + <text name="WLCurKeyTimeText"> + Hora: + </text> + <time name="time" value="06:00"/> + <check_box label="Usar como novo ciclo de dias" name="make_default_cb"/> + <button label="Salvar" name="save"/> + <button label="Cancelar" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml b/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..1f1fbcce7e0ed4ffacd8fb1254ab64385027942f --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_edit_sky_preset.xml @@ -0,0 +1,143 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Sky Preset" title="Editar pré-configuração do céu"> + <string name="title_new"> + Criar nova pré-configuração de céu + </string> + <string name="title_edit"> + Editar pré-configuração do céu + </string> + <string name="hint_new"> + Dê um nome à sua pré-configuração, ajuste os controles para criá-la e clique em "Salvar". + </string> + <string name="hint_edit"> + Para editar sua pré-configuração do céu, ajuste os controles e clique em "Salvar". + </string> + <string name="combo_label"> + -Selecione uma pré-configuração- + </string> + <text name="hint"> + Para editar sua pré-configuração do céu, ajuste os controles e clique em "Salvar". + </text> + <text name="label"> + Nome: + </text> + <text name="note"> + Observação: trocar o nome de uma pré-configuração criará uma nova sem modificar a pré-configuração atual. + </text> + <tab_container name="WindLight Tabs"> + <panel label="ATMOSFERA" name="Atmosphere"> + <text name="BHText"> + Horizonte azul + </text> + <text name="BDensText"> + Horizonte com névoa + </text> + <text name="BDensText2"> + Densidade azul + </text> + <text name="HDText"> + Densidade da névoa + </text> + <text name="DensMultText"> + Multiplicador de densidade + </text> + <text name="WLDistanceMultText"> + Multiplicador de distância + </text> + <text name="MaxAltText"> + Altitude máxima + </text> + </panel> + <panel label="ILUMINAÇÃO" name="Lighting"> + <text name="SLCText"> + Cor do sol/lua + </text> + <text name="WLAmbientText"> + Ambiente + </text> + <text name="SunGlowText"> + Brilho do sol + </text> + <slider label="Foco" name="WLGlowB"/> + <slider label="Tamanho" name="WLGlowR"/> + <text name="WLStarText"> + Brilho das estrelas + </text> + <text name="SceneGammaText"> + Raios gama + </text> + <text name="TODText"> + Posição do sol/lua + </text> + <multi_slider initial_value="0" name="WLSunPos"/> + <text name="WL12amHash"> + | + </text> + <text name="WL6amHash"> + | + </text> + <text name="WL12pmHash2"> + | + </text> + <text name="WL6pmHash"> + | + </text> + <text name="WL12amHash2"> + | + </text> + <text name="WL12am"> + 24:00 + </text> + <text name="WL6am"> + 06:00 + </text> + <text name="WL12pmHash"> + 12:00 + </text> + <text name="WL6pm"> + 18:00 + </text> + <text name="WL12am2"> + 24:00 + </text> + <time name="WLDayTime" value="06:00"/> + <text name="WLEastAngleText"> + Ângulo leste + </text> + </panel> + <panel label="NUVENS" name="Clouds"> + <text name="WLCloudColorText"> + Cor das nuvens + </text> + <text name="WLCloudColorText2"> + XY / densidade das nuvens + </text> + <slider label="X" name="WLCloudX"/> + <slider label="Y" name="WLCloudY"/> + <slider label="D" name="WLCloudDensity"/> + <text name="WLCloudCoverageText"> + Cobertura das nuvens + </text> + <text name="WLCloudScaleText"> + Escala das nuvens + </text> + <text name="WLCloudDetailText"> + Detalhe das nuvens (XY / densidade) + </text> + <slider label="X" name="WLCloudDetailX"/> + <slider label="Y" name="WLCloudDetailY"/> + <slider label="D" name="WLCloudDetailDensity"/> + <text name="WLCloudScrollXText"> + Passagem das nuvens X + </text> + <check_box label="Fixar" name="WLCloudLockX"/> + <text name="WLCloudScrollYText"> + Passagem das nuvens Y + </text> + <check_box label="Fixar" name="WLCloudLockY"/> + </panel> + </tab_container> + <check_box label="Usar esta pré-configuração como meu novo céu" name="make_default_cb"/> + <button label="Salvar" name="save"/> + <button label="Cancelar" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml b/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml new file mode 100644 index 0000000000000000000000000000000000000000..7bde22851e3e3c1ceab282455cda937b1726860b --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_edit_water_preset.xml @@ -0,0 +1,72 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Edit Water Preset" title="Editar pré-configuração da água"> + <string name="title_new"> + Criar nova pré-configuração de água + </string> + <string name="title_edit"> + Editar pré-configuração da água + </string> + <string name="hint_new"> + Dê um nome à sua pré-configuração, ajuste os controles para criá-la e clique em "Salvar". + </string> + <string name="hint_edit"> + Para editar sua pré-configuração de água, ajuste os controles e clique em "Salvar". + </string> + <string name="combo_label"> + -Selecione uma pré-configuração- + </string> + <text name="hint"> + Para editar sua pré-configuração, ajuste os controles e clique em "Salvar". + </text> + <text name="label"> + Nome da pré-configuração: + </text> + <text name="note"> + Observação: trocar o nome de uma pré-configuração criará uma nova sem modificar a configuração atual. + </text> + <panel name="panel_water_preset"> + <text name="water_color_label"> + Cor da névoa da água + </text> + <text name="water_fog_density_label"> + Expoente da densidade da névoa + </text> + <text name="underwater_fog_modifier_label"> + Modificador de névoa submerso + </text> + <text name="BHText"> + Direção de onda grande + </text> + <slider label="X" name="WaterWave1DirX"/> + <slider label="Y" name="WaterWave1DirY"/> + <text name="BDensText"> + Escala de ondas de reflexo + </text> + <text name="HDText"> + Escala de Fresnel + </text> + <text name="FresnelOffsetText"> + Recuo de Fresnel + </text> + <text name="BHText2"> + Direção de onda pequena + </text> + <slider label="X" name="WaterWave2DirX"/> + <slider label="Y" name="WaterWave2DirY"/> + <text name="DensMultText"> + Escala de refração acima + </text> + <text name="WaterScaleBelowText"> + Escala de refração abaixo + </text> + <text name="MaxAltText"> + Multiplicador de distorção + </text> + <text name="BHText3"> + Mapa normal + </text> + </panel> + <check_box label="Usar esta pré-configuração na minha água" name="make_default_cb"/> + <button label="Salvar" name="save"/> + <button label="Cancelar" name="cancel"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_environment_settings.xml b/indra/newview/skins/default/xui/pt/floater_environment_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..4055ba97ef3223b92a289ae3caf007eaa9eeec56 --- /dev/null +++ b/indra/newview/skins/default/xui/pt/floater_environment_settings.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<floater name="Environment Editor Floater" title="AMBIENTE"> + <text name="note"> + Use as opções abaixo para personalizar as configurações de ambiente no visualizador. + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Usar configurações da região" name="use_region_settings"/> + <radio_item label="Personalizar meu ambiente" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="note"> + Observação: suas configurações não se aplicam aos outros usuários. + </text> + <text name="water_settings_title"> + Configuração de água + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="-Selecione uma pré-configuração-" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + Ciclo céu / dia + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="Céu fixo" name="my_sky_settings"/> + <radio_item label="Ciclo dia" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="-Selecione uma pré-configuração-" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="-Selecione uma pré-configuração-" name="item0"/> + </combo_box> + </panel> + <button label="OK" name="ok_btn"/> + <button label="Cancelar" name="cancel_btn"/> +</floater> diff --git a/indra/newview/skins/default/xui/pt/floater_model_preview.xml b/indra/newview/skins/default/xui/pt/floater_model_preview.xml index cdad55bded57e8b2d9d1d819b773bc96c2d2186d..fbd88500a894d48842704fc77e59d2f11c635af3 100644 --- a/indra/newview/skins/default/xui/pt/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/pt/floater_model_preview.xml @@ -3,6 +3,9 @@ <string name="status_idle"> Inativo </string> + <string name="status_parse_error"> + Dae parsing - erro, detalhes no log. + </string> <string name="status_reading_file"> Carregando... </string> @@ -12,6 +15,9 @@ <string name="status_vertex_number_overflow"> Erro: Número de Vertex acima de 65534. Abortado. </string> + <string name="bad_element"> + Erro: elemento inválido + </string> <string name="high"> Alto </string> diff --git a/indra/newview/skins/default/xui/pt/floater_model_wizard.xml b/indra/newview/skins/default/xui/pt/floater_model_wizard.xml index 1064e16e8339fa001782c20c52a8465832923d77..e8d5fcdc056b529282f40fa83d97a1d84865afc7 100644 --- a/indra/newview/skins/default/xui/pt/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/pt/floater_model_wizard.xml @@ -193,6 +193,9 @@ <string name="status_idle"> Inativo </string> + <string name="status_parse_error"> + Dae parsing - erro, detalhes no log. + </string> <string name="status_reading_file"> Carregando... </string> @@ -202,6 +205,9 @@ <string name="status_vertex_number_overflow"> Erro: Número de Vertex acima de 65534. Abortado. </string> + <string name="bad_element"> + Erro: elemento inválido + </string> <string name="high"> Alto </string> diff --git a/indra/newview/skins/default/xui/pt/floater_tools.xml b/indra/newview/skins/default/xui/pt/floater_tools.xml index ed273d9f28c55b40410b2d2fc4b117b1be92e0e8..35d9a0ffabb6afb8da2d7ad2dda2c9b83bd558aa 100644 --- a/indra/newview/skins/default/xui/pt/floater_tools.xml +++ b/indra/newview/skins/default/xui/pt/floater_tools.xml @@ -405,7 +405,7 @@ </combo_box> <spinner label="Gravidade" name="Physics Gravity"/> <spinner label="Fricção" name="Physics Friction"/> - <spinner label="Densidade" name="Physics Density"/> + <spinner label="Densidade em 100 kg/m^3" name="Physics Density"/> <spinner label="Restituição" name="Physics Restitution"/> </panel> <panel label="Textura" name="Texture"> diff --git a/indra/newview/skins/default/xui/pt/menu_login.xml b/indra/newview/skins/default/xui/pt/menu_login.xml index 3dff3d7c8a96d76881d90f76718e9526c9572710..1d3fa48fb32137c129fe637c8baadafefd2e187c 100644 --- a/indra/newview/skins/default/xui/pt/menu_login.xml +++ b/indra/newview/skins/default/xui/pt/menu_login.xml @@ -17,7 +17,7 @@ <menu_item_call label="Mostrar TOS" name="TOS"/> <menu_item_call label="Mostrar mensagem crÃtica" name="Critical"/> <menu_item_call label="Teste de mÃdia do navegador" name="Web Browser Test"/> - <menu_item_call label="Teste de conteúdo web" name="Web Content Floater Test"/> + <menu_item_call label="Test de Bugs de Conteúdo Web" name="Web Content Floater Debug Test"/> <menu_item_check label="Exibir seletor da grade" name="Show Grid Picker"/> <menu_item_call label="Exibir painel de notificações" name="Show Notifications Console"/> </menu> diff --git a/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml b/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml index 228ce46a319c9e6909544a3e6c76bdf67ccf2e35..0d32d58de45b8154086c57039991960d18cd727d 100644 --- a/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml +++ b/indra/newview/skins/default/xui/pt/menu_people_nearby_view_sort.xml @@ -1,8 +1,9 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="menu_group_plus"> +<toggleable_menu name="menu_group_plus"> <menu_item_check label="Ordenar por conversas mais recentes" name="sort_by_recent_speakers"/> <menu_item_check label="Ordenar por nome" name="sort_name"/> <menu_item_check label="Ordenar por distância" name="sort_distance"/> <menu_item_check label="Ver Ãcones de pessoas" name="view_icons"/> + <menu_item_check label="Ver Mapa" name="view_map"/> <menu_item_call label="Ver residentes e objetos bloqueados" name="show_blocked_list"/> -</menu> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/menu_viewer.xml b/indra/newview/skins/default/xui/pt/menu_viewer.xml index 4213db7440ccc414b4d9d159f7301f1173e0f055..c184fb0af3ed241ac638ea758c21c94100e6ff5d 100644 --- a/indra/newview/skins/default/xui/pt/menu_viewer.xml +++ b/indra/newview/skins/default/xui/pt/menu_viewer.xml @@ -31,6 +31,7 @@ <menu_item_call label="Meus grupos" name="My Groups"/> <menu_item_check label="Bate-papo local" name="Nearby Chat"/> <menu_item_call label="Pessoas por perto" name="Active Speakers"/> + <menu_item_check label="Voz por perto" name="Nearby Voice"/> </menu> <menu label="Mundo" name="World"> <menu_item_check label="Mini Mapa" name="Mini-Map"/> @@ -63,8 +64,24 @@ <menu_item_call label="Meio-dia" name="Noon"/> <menu_item_call label="Pôr-do-Sol" name="Sunset"/> <menu_item_call label="Meia-noite" name="Midnight"/> - <menu_item_call label="Horário da propriedade" name="Revert to Region Default"/> - <menu_item_call label="Editor de ambiente" name="Environment Editor"/> + </menu> + <menu label="Editor de ambientes" name="Enviroment Editor"> + <menu_item_call label="Configurações de ambiente..." name="Enviroment Settings"/> + <menu label="Pré-configurações de água" name="Water Presets"> + <menu_item_call label="Nova pré-configuração..." name="new_water_preset"/> + <menu_item_call label="Editar pré-configuração..." name="edit_water_preset"/> + <menu_item_call label="Excluir pré-configuração..." name="delete_water_preset"/> + </menu> + <menu label="Pré-configurações de céu" name="Sky Presets"> + <menu_item_call label="Nova pré-configuração..." name="new_sky_preset"/> + <menu_item_call label="Editar pré-configuração..." name="edit_sky_preset"/> + <menu_item_call label="Excluir pré-configuração..." name="delete_sky_preset"/> + </menu> + <menu label="Pré-configurações de dias" name="Day Presets"> + <menu_item_call label="Nova pré-configuração..." name="new_day_preset"/> + <menu_item_call label="Editar pré-configuração..." name="edit_day_preset"/> + <menu_item_call label="Excluir pré-configuração..." name="delete_day_preset"/> + </menu> </menu> </menu> <menu label="Construir" name="BuildTools"> diff --git a/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml b/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml index 7b6ce4d87ec8798c1efd50ad4aebbcddd5f7ce8a..75dca703cb0c39cee995c71fd1cbb6fc68141924 100644 --- a/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml +++ b/indra/newview/skins/default/xui/pt/menu_wearing_gear.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> -<menu name="Gear Wearing"> +<toggleable_menu name="Gear Wearing"> <menu_item_call label="Editar look" name="edit"/> <menu_item_call label="Tirar" name="takeoff"/> -</menu> + <menu_item_call label="Copiar lista do look para a área de transferência" name="copy"/> +</toggleable_menu> diff --git a/indra/newview/skins/default/xui/pt/notifications.xml b/indra/newview/skins/default/xui/pt/notifications.xml index 56a33f51e8cd06cf2febf880afcb5efe7a0b7ad7..ffdaf8a26ff9a9f50e861b823eb32bde0b5b064f 100644 --- a/indra/newview/skins/default/xui/pt/notifications.xml +++ b/indra/newview/skins/default/xui/pt/notifications.xml @@ -1541,6 +1541,10 @@ Por favor volte mais tarde. <button name="Cancel" text="Cancelar"/> </form> </notification> + <notification name="TooManyTeleportOffers"> + Você fez [OFFERS] ofertas de teletransporte, porém o seu limite é [LIMIT]. + <usetemplate name="okbutton" yestext="OK"/> + </notification> <notification name="OfferTeleportFromGod"> Convocar residente à sua localização com poderes de deus? <form name="form"> @@ -1962,6 +1966,10 @@ Você gostaria de deixar o modo Ocupado antes de completar esta transação? Tem certeza de que quer apagar todo o histórico de viagens, web e buscas? <usetemplate name="okcancelbuttons" notext="Não" yestext="OK"/> </notification> + <notification name="ConfirmClearCache"> + Tem certeza que deseja apagar o cache do visualizador? + <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="OK"/> + </notification> <notification name="ConfirmClearCookies"> Você tem certeza de que deseja limpar os cookies? <usetemplate name="okcancelbuttons" notext="Cancelar" yestext="Sim"/> @@ -1987,48 +1995,30 @@ Inclua um link para facilitar o acesso para visitantes. Teste o link na barra de Você deseja substituir a pré-configuração salva? <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> - <notification name="WLDeletePresetAlert"> - Você deseja apagar [SKY]? - <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> - </notification> <notification name="WLNoEditDefault"> Você não pode editar ou excluir um padrão predefinido. </notification> <notification name="WLMissingSky"> Este arquivo de ciclo de dia se refere a um arquivo de céu faltando: [SKY]. </notification> - <notification name="PPSaveEffectAlert"> - Existe efeito de Pós-Processamento. Você deseja substituÃ-lo? - <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> - </notification> - <notification name="NewSkyPreset"> - Me dê o nome para o novo céu. - <form name="form"> - <input name="message"> - Novo padrão - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Cancelar"/> - </form> + <notification name="WLRegionApplyFail"> + As configurações não podem ser aplicadas à região. Talvez sair e votlar à região resolva. Motivo: [FAIL_REASON] </notification> - <notification name="ExistsSkyPresetAlert"> - Este padrão já existe! + <notification name="EnvCannotDeleteLastDayCycleKey"> + ImpossÃvel excluir a última chave do ciclo pois um ciclo não pode ficar vazio. Modifique a última chave em vez de tentar apagá-la, depois crie uma chave nova. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="NewWaterPreset"> - Dê o nome para o novo padrão de água. - <form name="form"> - <input name="message"> - Nova Apresentação - </input> - <button name="OK" text="OK"/> - <button name="Cancel" text="Cancelar"/> - </form> + <notification name="DayCycleTooManyKeyframes"> + Não é possÃvel adicionar mais chaves de quadro a este ciclo. O máximo de chaves de quadro para ciclos de dia de [SCOPE] é [MAX]. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="ExistsWaterPresetAlert"> - Este padrão já existe! + <notification name="EnvUpdateRate"> + Cada configuração de ambiente só pode ser atualizada a cada [WAIT] segundos. Aguarde pelo menos isso e tente novamente. + <usetemplate name="okbutton" yestext="OK"/> </notification> - <notification name="WaterNoEditDefault"> - Você não pode editar ou apagar um padrão predefinido. + <notification name="PPSaveEffectAlert"> + Existe efeito de Pós-Processamento. Você deseja substituÃ-lo? + <usetemplate name="okcancelbuttons" notext="Não" yestext="Sim"/> </notification> <notification name="ChatterBoxSessionStartError"> Não foi possÃvel iniciar uma nova sessão bate-papo com [RECIPIENT]. @@ -2316,6 +2306,9 @@ Logo, não é possÃvel voar aqui. <notification name="NoBuild"> Esta área desativou a opção de construir. Não é possÃvel construir ou fazer rez de objetos nesta área. </notification> + <notification name="SeeAvatars"> + Este terreno oculta os avatares e bate-papo de outro terreno. Não é possÃvel ver residentes fora do terreno e vice-versa. O bate-papo por texto no canal 0 também está bloqueado. + </notification> <notification name="ScriptsStopped"> Um administrador não permitiu scripts temporariamente nesta região. </notification> @@ -2740,7 +2733,9 @@ O botão será exibido quando houver espaço suficente. Selecione os residentes com quem compartilhar. </notification> <notification name="MeshUploadError"> - [LABEL] não foi carregado: [MESSAGE] [IDENTIFIER] [INVALIDITY_IDENTIFIER] + [LABEL] não foi carregado: [MESSAGE] [IDENTIFIER] + +Mais detalhes no log. </notification> <notification name="ShareItemsConfirmation"> Tem certeza de que quer compartilhar os itens abaixo? diff --git a/indra/newview/skins/default/xui/pt/panel_outfits_list.xml b/indra/newview/skins/default/xui/pt/panel_outfits_list.xml index 2b2e7c1dbfddeebd531233bcb6c387c5785e682d..2d74e092a4a210f894a08c9be3264758b9465f78 100644 --- a/indra/newview/skins/default/xui/pt/panel_outfits_list.xml +++ b/indra/newview/skins/default/xui/pt/panel_outfits_list.xml @@ -1,7 +1,11 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="Outfits"> + <accordion name="outfits_accordion"> + <no_matched_tabs_text name="no_matched_outfits_msg" value="Não encontrou o que procura? Tente fazer uma [secondlife:///app/search/people/[SEARCH_TERM] Busca]."/> + <no_visible_tabs_text name="no_outfits_msg" value="Você ainda não tem nenhum look. Tente encontrar um na [secondlife:///app/search/groups Busca]."/> + </accordion> <panel name="bottom_panel"> - <button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> + <menu_button name="options_gear_btn" tool_tip="Mostrar opções adicionais"/> <button name="trash_btn" tool_tip="Excluir o look selecionado"/> </panel> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_place_profile.xml b/indra/newview/skins/default/xui/pt/panel_place_profile.xml index 7fc07483c0ddc87bb2d64285a7ed6a68bc3cc3d2..8abe5797027bcffa3d3b6a3920ac8bbd2223ab35 100644 --- a/indra/newview/skins/default/xui/pt/panel_place_profile.xml +++ b/indra/newview/skins/default/xui/pt/panel_place_profile.xml @@ -64,6 +64,8 @@ <text name="scripts_value" value="Ligado"/> <text name="damage_label" value="Dano:"/> <text name="damage_value" value="Desligado"/> + <text name="see_avatars_label" value="Ver avatares:"/> + <text name="see_avatars_value" value="Desligar"/> <button label="Sobre o terreno" name="about_land_btn"/> </panel> </accordion_tab> diff --git a/indra/newview/skins/default/xui/pt/panel_places.xml b/indra/newview/skins/default/xui/pt/panel_places.xml index 828ef3e4693dff10adadde315f919478c1cf55ff..69f0baf65f24e6382f9a06294ffbec23eedd4716 100644 --- a/indra/newview/skins/default/xui/pt/panel_places.xml +++ b/indra/newview/skins/default/xui/pt/panel_places.xml @@ -24,7 +24,7 @@ <menu_button label="â–¼" name="overflow_btn" tool_tip="Mostrar opções adicionais"/> </layout_panel> </layout_stack> - <layout_stack name="bottom_bar_ls3"> + <layout_stack name="bottom_bar_profile_ls"> <layout_panel name="profile_btn_lp"> <button label="Perfil" name="profile_btn" tool_tip="Mostrar perfil do lugar"/> </layout_panel> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml index bbe7e15ba2edcff4ba33da1f4ce0c91be3da40a3..c72928fc3523e1665c3054bd16b41e3f0c8424db 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_advanced.xml @@ -3,6 +3,19 @@ <panel.string name="aspect_ratio_text"> [NUM]:[DEN] </panel.string> + <text name="Cache:"> + Cache: + </text> + <spinner label="Cache (64 - 9984 MB)" name="cachesizespinner"/> + <text name="text_box5"> + MB + </text> + <button label="Limpar cache" label_selected="Limpar cache" name="clear_cache"/> + <text name="Cache location"> + Localização do cache: + </text> + <button label="Navegar" label_selected="Navegar" name="set_cache"/> + <button label="Localização padrão" label_selected="Localização padrão" name="default_cache_location"/> <text name="UI Size:"> Interface: </text> diff --git a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml index 4164147e5c355486795b83a648cac5e615076ac1..d910a7b812e9a0e782cbad0c27f3d4a0c4de951d 100644 --- a/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml +++ b/indra/newview/skins/default/xui/pt/panel_preferences_sound.xml @@ -19,6 +19,7 @@ <check_box label="Ativado" name="enable_voice_check"/> <check_box label="Autorizar auto-play de mÃdias" name="media_auto_play_btn" tool_tip="Marque esta opção para auto-executar mÃdias, se elas quiserem" value="true"/> <check_box label="Tocar mÃdia anexada em outros avatares" name="media_show_on_others_btn" tool_tip="Desmarque esta opção para ocultar mÃdias anexadas em avatares por perto" value="true"/> + <check_box label="Tocar áudio de gestos" name="gesture_audio_play_btn" tool_tip="Selecione para ouvir o áudio de gestos" value="verdadeiro"/> <text name="voice_chat_settings"> Configuração de bate-papo de voz </text> @@ -35,28 +36,5 @@ <button label="Definir chave" name="set_voice_hotkey_button"/> <button name="set_voice_middlemouse_button" tool_tip="Redefinir como botão do meio do mouse"/> <button label="Controles de entrada/saÃda" name="device_settings_btn" width="180"/> - <panel label="Configuração dos dispositivo" name="device_settings_panel"> - <panel.string name="default_text"> - Padrão - </panel.string> - <panel.string name="default system device"> - Dispositivo padrão do sistema - </panel.string> - <panel.string name="no device"> - Nenhum - </panel.string> - <text name="Input"> - Entrada - </text> - <text name="My volume label"> - Meu volume: - </text> - <slider_bar initial_value="1.0" name="mic_volume_slider" tool_tip="Mude o volume usando o controle deslizante"/> - <text name="wait_text"> - Aguarde - </text> - <text name="Output"> - SaÃda - </text> - </panel> + <panel label="Configuração dos dispositivo" name="device_settings_panel"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/panel_region_environment.xml b/indra/newview/skins/default/xui/pt/panel_region_environment.xml new file mode 100644 index 0000000000000000000000000000000000000000..79eedebe5f3ae716ce1542eb3deb8d3247a1ab8a --- /dev/null +++ b/indra/newview/skins/default/xui/pt/panel_region_environment.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8" standalone="yes"?> +<panel label="Ambiente" name="panel_env_info"> + <text name="water_settings_title"> + Selecione as configurações de Ãgua e céu / Ciclo dos dias que todos os visitantes à sua região verão. Mais informações + </text> + <radio_group name="region_settings_radio_group"> + <radio_item label="Usar o padrão do Second Life" name="use_sl_default_settings"/> + <radio_item label="Usar as seguintes configurações" name="use_my_settings"/> + </radio_group> + <panel name="user_environment_settings"> + <text name="water_settings_title"> + Configuração de água + </text> + <combo_box name="water_settings_preset_combo"> + <combo_box.item label="-Selecione uma pré-configuração-" name="item0"/> + </combo_box> + <text name="sky_dayc_settings_title"> + Ciclo céu / dia + </text> + <radio_group name="sky_dayc_settings_radio_group"> + <radio_item label="Céu fixo" name="my_sky_settings"/> + <radio_item label="Ciclo dia" name="my_dayc_settings"/> + </radio_group> + <combo_box name="sky_settings_preset_combo"> + <combo_box.item label="-Selecione uma pré-configuração-" name="item0"/> + </combo_box> + <combo_box name="dayc_settings_preset_combo"> + <combo_box.item label="-Selecione uma pré-configuração-" name="item0"/> + </combo_box> + </panel> + <button label="Aplicar" name="apply_btn"/> + <button label="Cancelar" name="cancel_btn"/> +</panel> diff --git a/indra/newview/skins/default/xui/pt/panel_region_terrain.xml b/indra/newview/skins/default/xui/pt/panel_region_terrain.xml index b9b0e9d90f758eef100d6962ab0569bd0acba5d9..74330a8946ee626584c145054261954f84acb626 100644 --- a/indra/newview/skins/default/xui/pt/panel_region_terrain.xml +++ b/indra/newview/skins/default/xui/pt/panel_region_terrain.xml @@ -7,21 +7,56 @@ nenhum </text> <spinner label="Altura da água" name="water_height_spin"/> - <button label="?" name="water_height_help"/> - <spinner label="Limite do aumento do terreno" name="terrain_raise_spin"/> - <button label="?" name="terrain_raise_help"/> - <spinner label="Limite mais baixo do terreno" name="terrain_lower_spin" bottom_delta="-34"/> - <button label="?" name="terrain_lower_help"/> - <check_box label="Usar o sol da propriedade" name="use_estate_sun_check"/> - <button label="?" name="use_estate_sun_help"/> - <check_box label="Sol fixo" name="fixed_sun_check"/> - <button label="?" name="fixed_sun_help"/> - <slider label="Fase" name="sun_hour_slider"/> - <button label="Aplicar" name="apply_btn"/> + <spinner label="Limite do aumento do +terreno" name="terrain_raise_spin"/> + <spinner bottom_delta="-34" label="Limite mais baixo do +terreno" name="terrain_lower_spin"/> + <text name="detail_texture_text"> + Texturas de terreno (exige arquivos .tga 512x512, 24 bit) + </text> + <text name="height_text_lbl"> + 1 (Baixo) + </text> + <text name="height_text_lbl2"> + 2 + </text> + <text name="height_text_lbl3"> + 3 + </text> + <text name="height_text_lbl4"> + 4 (Alto) + </text> + <text name="height_text_lbl5"> + Intervalos de elevação de textura + </text> + <text name="height_text_lbl10"> + Os valores representam o intervalo de mistura das texturas acima. + </text> + <text name="height_text_lbl11"> + Em metros, o valor BAIXO é a altura MÃXIMA da Textura 1, e HIGH é a altura MÃNIMA da Textura 4. + </text> + <text name="height_text_lbl6"> + Noroeste + </text> + <text name="height_text_lbl7"> + Nordeste + </text> + <spinner label="Baixo" name="height_start_spin_1"/> + <spinner label="Baixo" name="height_start_spin_3"/> + <spinner label="Alto" name="height_range_spin_1"/> + <spinner label="Alto" name="height_range_spin_3"/> + <text name="height_text_lbl8"> + Sudoeste + </text> + <text name="height_text_lbl9"> + Sudeste + </text> + <spinner label="Baixo" name="height_start_spin_0"/> + <spinner label="Baixo" name="height_start_spin_2"/> + <spinner label="Alto" name="height_range_spin_0"/> + <spinner label="Alto" name="height_range_spin_2"/> <button label="Download de terreno RAW..." name="download_raw_btn" tool_tip="Não disponÃvel aos gerentes, somente aos proprietários."/> - <button label="?" name="download_raw_help"/> <button label="Upload de terreno RAW..." name="upload_raw_btn" tool_tip="Não disponÃvel aos gerentes, somente aos proprietários."/> - <button label="?" name="upload_raw_help"/> - <button width="170" label="Nivelar o terreno" name="bake_terrain_btn" tool_tip="Ajustar terreno atual como o ponto médio para os limites de aumento/decréscimo"/> - <button left="190" label="?" name="bake_terrain_help"/> + <button label="Nivelar o terreno" name="bake_terrain_btn" tool_tip="Ajustar terreno atual como o ponto médio para os limites de aumento/decréscimo" width="170"/> + <button label="Aplicar" name="apply_btn"/> </panel> diff --git a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml index 11ac6c106a3dbfe9693a5e87b8e3f144a127144a..988e7c7076d1d507ad4fc79d9ba45b67ee00d8c7 100644 --- a/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml +++ b/indra/newview/skins/default/xui/pt/sidepanel_inventory.xml @@ -1,6 +1,38 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel label="Coisas" name="objects panel"> <panel label="" name="sidepanel__inventory_panel"> + <layout_stack name="inventory_layout_stack"> + <layout_panel name="inbox_layout_panel"> + <panel label="" name="marketplace_inbox"> + <string name="InboxLabelWithArg"> + Itens recebidos ([NUM]) + </string> + <string name="InboxLabelNoArg"> + Itens recebidos + </string> + <button label="Itens recebidos" name="inbox_btn"/> + <text name="inbox_fresh_new_count"> + [NUM] novos + </text> + <panel tool_tip="Drag and drop items to your inventory to manage and use them"> + <text name="inbox_inventory_placeholder"> + Compras do marketplace serão entregues aqui. + </text> + </panel> + </panel> + </layout_panel> + <layout_panel name="outbox_layout_panel"> + <panel label="" name="marketplace_outbox"> + <button label="Caixa de saÃda de comerciante" name="outbox_btn"/> + <button label="" name="outbox_sync_btn" tool_tip="Enviar para minha vitrine no Marketplace"/> + <panel tool_tip="Drag and drop items here to prepare them for sale on your storefront"> + <text name="outbox_inventory_placeholder"> + Abra uma conta de comerciante para usar este recurso. + </text> + </panel> + </panel> + </layout_panel> + </layout_stack> <panel name="button_panel"> <layout_stack name="button_panel_ls"> <layout_panel name="info_btn_lp"> diff --git a/indra/newview/skins/default/xui/pt/strings.xml b/indra/newview/skins/default/xui/pt/strings.xml index ed93217d597d4c2dbdb6638260fcbc1098d23d44..3b3b7041d76b447b1ed9b65b3cb21d1d49f43682 100644 --- a/indra/newview/skins/default/xui/pt/strings.xml +++ b/indra/newview/skins/default/xui/pt/strings.xml @@ -1132,6 +1132,12 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar <string name="InventoryNoTexture"> Você não possui uma cópia desta textura no seu inventário </string> + <string name="InventoryInboxNoItems"> + Compras do marketplace serão entregues aqui. + </string> + <string name="InventoryOutboxNoItems"> + Arraste seus itens aqui para preparar sua listagem na sua vitrine do Marketplace. + </string> <string name="no_transfer" value="(não transferÃvel)"/> <string name="no_modify" value="(não modificável)"/> <string name="no_copy" value="(não copiável)"/> @@ -1256,6 +1262,9 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar <string name="InvFolder All"> Tudo </string> + <string name="no_attachments"> + Nenhum anexo vestido + </string> <string name="Buy"> Comprar </string> @@ -1591,6 +1600,9 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar <string name="IMTeen"> adolescente </string> + <string name="Anyone"> + qualquer um + </string> <string name="RegionInfoError"> erro </string> @@ -1807,6 +1819,12 @@ Titulares de contas gratuitas não poderão acessar o Second Life para acomodar <string name="Public"> Público </string> + <string name="LocalSettings"> + Configurações locais + </string> + <string name="RegionSettings"> + Configurações da região + </string> <string name="ClassifiedClicksTxt"> Cliques: [TELEPORT] teletransporte, [MAP] mapa, [PROFILE] perfil </string> @@ -3594,6 +3612,9 @@ If you continue to receive this message, contact the [SUPPORT_SITE]. <string name="LocationCtrlGeneralIconTooltip"> Região em geral </string> + <string name="LocationCtrlSeeAVsTooltip"> + Avatar visÃveis e bate-papo permitido fora deste terreno + </string> <string name="UpdaterWindowTitle"> [APP_NAME] Atualização </string> diff --git a/indra/newview/skins/default/xui/zh/panel_places.xml b/indra/newview/skins/default/xui/zh/panel_places.xml index c141201ab2eed953cd1dec9fa5fefb3f8f2d917b..6434a7279c8b5db80501ad7a1ac168e987b13163 100644 --- a/indra/newview/skins/default/xui/zh/panel_places.xml +++ b/indra/newview/skins/default/xui/zh/panel_places.xml @@ -24,7 +24,7 @@ <menu_button name="overflow_btn" tool_tip="顯示é¡å¤–é¸é …"/> </layout_panel> </layout_stack> - <layout_stack name="bottom_bar_ls3"> + <layout_stack name="bottom_bar_profile_ls"> <layout_panel name="profile_btn_lp"> <button label="檔案" name="profile_btn" tool_tip="顯示地點檔案"/> </layout_panel> diff --git a/indra/newview/skins/minimal/xui/da/panel_people.xml b/indra/newview/skins/minimal/xui/da/panel_people.xml index 49cd2c71f2194a364f24c199d29ca15b61077f5a..8be4d695bdeda9b7e88bb991eee7225a642c6f1c 100644 --- a/indra/newview/skins/minimal/xui/da/panel_people.xml +++ b/indra/newview/skins/minimal/xui/da/panel_people.xml @@ -66,16 +66,16 @@ Leder du efter personer at være sammen med? Prøv destinationsknappen nedenfor. <layout_panel name="view_profile_btn_lp"> <button label="Profil" name="view_profile_btn" tool_tip="Vis billeder, grupper og anden beboer information"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="im_btn_lp"> <button label="IM" name="im_btn" tool_tip="Ã…ben session med privat besked (IM)"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="call_btn_lp"> <button label="Opkald" name="call_btn" tool_tip="Kald til denne beboer"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="share_btn_lp"> <button label="Del" name="share_btn" tool_tip="Del en genstand fra beholdning"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="teleport_btn_lp"> <button label="Teleportér" name="teleport_btn" tool_tip="Tilbyd teleport"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml index 0ef2234fecce596f0aded552d34055214657cf29..56c2310f2f9c7fadff889550fde8f0b74ffb512b 100644 --- a/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/de/panel_im_control_panel.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <text name="avatar_name" value="Unbekannt"/> <layout_stack name="button_stack"> <layout_panel name="view_profile_btn_panel"> <button label="Profil" name="view_profile_btn"/> @@ -11,20 +10,20 @@ <layout_panel name="teleport_btn_panel"> <button label="Teleportieren" name="teleport_btn" tool_tip="Dieser Person einen Teleport anbieten"/> </layout_panel> - <layout_panel name="share_btn_panel"> - <button label="Teilen" name="share_btn"/> - </layout_panel> - <layout_panel name="pay_btn_panel"> - <button label="Bezahlen" name="pay_btn"/> - </layout_panel> <layout_panel name="call_btn_panel"> <button label="Anrufen" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> <button label="Anruf beenden" name="end_call_btn"/> </layout_panel> - <layout_panel name="voice_ctrls_btn_panel"> - <button label="Voice-Steuerung" name="voice_ctrls_btn"/> + <layout_panel name="block_btn_panel"> + <button label="Ignorieren" name="block_btn"/> + </layout_panel> + <layout_panel name="unblock_btn_panel"> + <button label="Freischalten" name="unblock_btn"/> + </layout_panel> + <layout_panel name="volume_ctrl_panel"> + <slider name="volume_slider" tool_tip="Anrufvolumen" value="0,5"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/minimal/xui/de/panel_people.xml b/indra/newview/skins/minimal/xui/de/panel_people.xml index 4f8f70ad17a72468668e1a40041aa9b0fb8514dd..a52557236face330c15ed9297dde6ce736928b84 100644 --- a/indra/newview/skins/minimal/xui/de/panel_people.xml +++ b/indra/newview/skins/minimal/xui/de/panel_people.xml @@ -48,13 +48,13 @@ <layout_panel name="view_profile_btn_lp"> <button label="Profil" name="view_profile_btn" tool_tip="Bilder, Gruppen und andere Einwohner-Informationen anzeigen"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="im_btn_lp"> <button label="IM" name="im_btn" tool_tip="Instant Messenger öffnen"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="call_btn_lp"> <button label="Anrufen" name="call_btn" tool_tip="Diesen Einwohner anrufen"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="teleport_btn_lp"> <button label="Teleportieren" name="teleport_btn" tool_tip="Teleport anbieten"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/minimal/xui/en/panel_people.xml b/indra/newview/skins/minimal/xui/en/panel_people.xml index 76baacb0911393eba6703651c5f8f51209637f9e..4739f86e95efd728173335ecf400169275e9f187 100644 --- a/indra/newview/skins/minimal/xui/en/panel_people.xml +++ b/indra/newview/skins/minimal/xui/en/panel_people.xml @@ -428,7 +428,7 @@ Looking for people to hang out with? Try the Destinations button below. height="23" layout="bottomleft" left_pad="3" - name="chat_btn_lp" + name="im_btn_lp" user_resize="false" auto_resize="true" width="41"> @@ -449,7 +449,7 @@ Looking for people to hang out with? Try the Destinations button below. height="23" layout="bottomleft" left_pad="3" - name="chat_btn_lp" + name="call_btn_lp" user_resize="false" auto_resize="true" width="52"> @@ -470,7 +470,7 @@ Looking for people to hang out with? Try the Destinations button below. height="23" layout="bottomleft" left_pad="3" - name="chat_btn_lp" + name="teleport_btn_lp" user_resize="false" auto_resize="true" width="77"> diff --git a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml index 1be6997813ebdb6ece11ffc7bc78825a2d858be1..93b6526f77a7be913da5f255b6bbce48812bf9e7 100644 --- a/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/es/panel_im_control_panel.xml @@ -10,20 +10,20 @@ <layout_panel name="teleport_btn_panel"> <button label="Teleportarte" name="teleport_btn" tool_tip="Ofrecer teleporte a esta persona"/> </layout_panel> - <layout_panel name="share_btn_panel"> - <button label="Compartir" name="share_btn"/> - </layout_panel> - <layout_panel name="pay_btn_panel"> - <button label="Pagar" name="pay_btn"/> - </layout_panel> <layout_panel name="call_btn_panel"> <button label="Llamar" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> <button label="Colgar" name="end_call_btn"/> </layout_panel> - <layout_panel name="voice_ctrls_btn_panel"> - <button label="Controles de la voz" name="voice_ctrls_btn"/> + <layout_panel name="block_btn_panel"> + <button label="Ignorar" name="block_btn"/> + </layout_panel> + <layout_panel name="unblock_btn_panel"> + <button label="No ignorar" name="unblock_btn"/> + </layout_panel> + <layout_panel name="volume_ctrl_panel"> + <slider name="volume_slider" tool_tip="Volumen de la llamada" value="0.5"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/minimal/xui/es/panel_people.xml b/indra/newview/skins/minimal/xui/es/panel_people.xml index 1e1c3411aeb61c09e0e0b012f918497119c989bd..8d3d14fa895cbf6da24c66d8246c451e3b6458a7 100644 --- a/indra/newview/skins/minimal/xui/es/panel_people.xml +++ b/indra/newview/skins/minimal/xui/es/panel_people.xml @@ -49,13 +49,13 @@ <layout_panel name="view_profile_btn_lp"> <button label="Perfil" name="view_profile_btn" tool_tip="Mostrar imágenes, grupos y otra información del Residente"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="im_btn_lp"> <button label="MI" name="im_btn" tool_tip="Abrir una sesión de mensajes instantáneos"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="call_btn_lp"> <button label="Llamar" name="call_btn" tool_tip="Llamar a este Residente"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="teleport_btn_lp"> <button label="Teleporte" name="teleport_btn" tool_tip="Ofrecer teleporte"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml index fdc5aeca4948cf1114b86f9299d23422eeef9733..1643cf3229f7691c0eda72575a7b83f855472672 100644 --- a/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/fr/panel_im_control_panel.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <text name="avatar_name" value="Inconnu"/> <layout_stack name="button_stack"> <layout_panel name="view_profile_btn_panel"> <button label="Profil" name="view_profile_btn"/> @@ -11,20 +10,20 @@ <layout_panel name="teleport_btn_panel"> <button label="Téléporter" name="teleport_btn" tool_tip="Proposer de téléporter cette personne."/> </layout_panel> - <layout_panel name="share_btn_panel"> - <button label="Partager" name="share_btn"/> - </layout_panel> - <layout_panel name="pay_btn_panel"> - <button label="Payer" name="pay_btn"/> - </layout_panel> <layout_panel name="call_btn_panel"> <button label="Appeler" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> <button label="Quitter l'appel" name="end_call_btn"/> </layout_panel> - <layout_panel name="voice_ctrls_btn_panel"> - <button label="Contrôles vocaux" name="voice_ctrls_btn"/> + <layout_panel name="block_btn_panel"> + <button label="Ignorer" name="block_btn"/> + </layout_panel> + <layout_panel name="unblock_btn_panel"> + <button label="Ne plus ignorer" name="unblock_btn"/> + </layout_panel> + <layout_panel name="volume_ctrl_panel"> + <slider name="volume_slider" tool_tip="Volume de l'appel." value="0,5"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/minimal/xui/fr/panel_people.xml b/indra/newview/skins/minimal/xui/fr/panel_people.xml index 72fb4d807ff1f490ba96ffdbe8fef5c881072def..4d6e31d9b534118493a6be223e5b20c3ef09fcf6 100644 --- a/indra/newview/skins/minimal/xui/fr/panel_people.xml +++ b/indra/newview/skins/minimal/xui/fr/panel_people.xml @@ -49,13 +49,13 @@ Vous recherchez des résidents avec qui passer du temps ? Essayez avec le bouto <layout_panel name="view_profile_btn_lp"> <button label="Profil" name="view_profile_btn" tool_tip="Afficher la photo, les groupes et autres infos des résidents"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="im_btn_lp"> <button label="IM" name="im_btn" tool_tip="Ouvrir une session IM"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="call_btn_lp"> <button label="Appeler" name="call_btn" tool_tip="Appeler ce résident."/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="teleport_btn_lp"> <button label="Téléporter" name="teleport_btn" tool_tip="Proposer une téléportation"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml index 756db84c1c718ef45e3f2628df17842ec07a02dd..269931a1a4277c5b9e207f5c4c17d2dbd447655b 100644 --- a/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/it/panel_im_control_panel.xml @@ -10,20 +10,20 @@ <layout_panel name="teleport_btn_panel"> <button label="Teleport" name="teleport_btn" tool_tip="Offri teleport a questa persona"/> </layout_panel> - <layout_panel name="share_btn_panel"> - <button label="Condividi" name="share_btn"/> - </layout_panel> - <layout_panel name="pay_btn_panel"> - <button label="Paga" name="pay_btn"/> - </layout_panel> <layout_panel name="call_btn_panel"> <button label="Chiama" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> <button label="Chiudi chiamata" name="end_call_btn"/> </layout_panel> - <layout_panel name="voice_ctrls_btn_panel"> - <button label="Regolazione voce" name="voice_ctrls_btn"/> + <layout_panel name="block_btn_panel"> + <button label="Blocca" name="block_btn"/> + </layout_panel> + <layout_panel name="unblock_btn_panel"> + <button label="Sblocca" name="unblock_btn"/> + </layout_panel> + <layout_panel name="volume_ctrl_panel"> + <slider name="volume_slider" tool_tip="Volume chiamata" value="0.5"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/minimal/xui/it/panel_people.xml b/indra/newview/skins/minimal/xui/it/panel_people.xml index 068c8bb8082db9f731f67f88d037311509d13b06..81e886acf0d9a393466130d5d78d5b67994ec271 100644 --- a/indra/newview/skins/minimal/xui/it/panel_people.xml +++ b/indra/newview/skins/minimal/xui/it/panel_people.xml @@ -66,16 +66,16 @@ Stai cercando persone da frequentare? Prova il pulsante Destinazioni in basso. <layout_panel name="view_profile_btn_lp"> <button label="Profilo" name="view_profile_btn" tool_tip="Mostra immagine, gruppi e altre informazioni del residente"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="im_btn_lp"> <button label="IM" name="im_btn" tool_tip="Apri una sessione messaggio istantaneo"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="call_btn_lp"> <button label="Chiama" name="call_btn" tool_tip="Chiama questo residente"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="share_btn_lp"> <button label="Condividi" name="share_btn" tool_tip="Condividi un oggetto dell'inventario"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="teleport_btn_lp"> <button label="Teleport" name="teleport_btn" tool_tip="Offri teleport"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml index f2429ac12aaf4e8c239cbdaacb7f17f0992ceb5e..14c38c796f85f8f319219c1eca9cbcb263f8251c 100644 --- a/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/ja/panel_im_control_panel.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8" standalone="yes"?> <panel name="panel_im_control_panel"> - <text name="avatar_name" value="ä¸æ˜Ž"/> <layout_stack name="button_stack"> <layout_panel name="view_profile_btn_panel"> <button label="プãƒãƒ•ã‚£ãƒ¼ãƒ«" name="view_profile_btn"/> @@ -11,20 +10,20 @@ <layout_panel name="teleport_btn_panel"> <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn" tool_tip="ã“ã®äººã«ãƒ†ãƒ¬ãƒãƒ¼ãƒˆã‚’é€ã‚Šã¾ã™"/> </layout_panel> - <layout_panel name="share_btn_panel"> - <button label="共有" name="share_btn"/> - </layout_panel> - <layout_panel name="pay_btn_panel"> - <button label="支払ã†" name="pay_btn"/> - </layout_panel> <layout_panel name="call_btn_panel"> <button label="コール" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> <button label="コール終了" name="end_call_btn"/> </layout_panel> - <layout_panel name="voice_ctrls_btn_panel"> - <button label="ボイスコントãƒãƒ¼ãƒ«" name="voice_ctrls_btn"/> + <layout_panel name="block_btn_panel"> + <button label="ブãƒãƒƒã‚¯" name="block_btn"/> + </layout_panel> + <layout_panel name="unblock_btn_panel"> + <button label="ブãƒãƒƒã‚¯è§£é™¤" name="unblock_btn"/> + </layout_panel> + <layout_panel name="volume_ctrl_panel"> + <slider name="volume_slider" tool_tip="コールã®éŸ³é‡" value="0.5"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/minimal/xui/ja/panel_people.xml b/indra/newview/skins/minimal/xui/ja/panel_people.xml index 9eb45d9a806138f61c39769579b63f6a1f51835a..5caeebc151d9a5ba59f22e3888406beec3e607c7 100644 --- a/indra/newview/skins/minimal/xui/ja/panel_people.xml +++ b/indra/newview/skins/minimal/xui/ja/panel_people.xml @@ -66,16 +66,16 @@ <layout_panel name="view_profile_btn_lp"> <button label="プãƒãƒ•ã‚£ãƒ¼ãƒ«" name="view_profile_btn" tool_tip="写真ã€ã‚°ãƒ«ãƒ¼ãƒ—ã€ãã®ä»–ä½äººæƒ…å ±ã‚’è¡¨ç¤º"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="im_btn_lp"> <button label="IM" name="im_btn" tool_tip="インスタントメッセージを開ãã¾ã™"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="call_btn_lp"> <button label="コール" name="call_btn" tool_tip="ã“ã®ä½äººã«ã‚³ãƒ¼ãƒ«ã™ã‚‹"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="share_btn_lp"> <button label="共有" name="share_btn" tool_tip="「æŒã¡ç‰©ã€ã®ã‚¢ã‚¤ãƒ†ãƒ を共有ã™ã‚‹"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="teleport_btn_lp"> <button label="テレãƒãƒ¼ãƒˆ" name="teleport_btn" tool_tip="テレãƒãƒ¼ãƒˆã‚’é€ã‚Šã¾ã™"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/minimal/xui/pl/panel_people.xml b/indra/newview/skins/minimal/xui/pl/panel_people.xml index dbfee739f4a13e59352379695977f539d22dff99..3b3aaa0987ce7e912470aac45a06230c53a349c2 100644 --- a/indra/newview/skins/minimal/xui/pl/panel_people.xml +++ b/indra/newview/skins/minimal/xui/pl/panel_people.xml @@ -66,16 +66,16 @@ Chcesz spotkać ludzi? Skorzystaj z przycisku "Atrakcje turystyczne" p <layout_panel name="view_profile_btn_lp"> <button label="Profil" name="view_profile_btn" tool_tip="Pokaż zdjÄ™cie, grupy i inne informacje o Rezydencie"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="im_btn_lp"> <button label="IM" name="im_btn" tool_tip="Otwórz wiadomoÅ›ci IM"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="call_btn_lp"> <button label="DzwoÅ„" name="call_btn" tool_tip="ZadzwoÅ„ do tego Rezydenta"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="share_btn_lp"> <button label="UdostÄ™pnij" name="share_btn" tool_tip="UdostÄ™pnij obiekt z Szafy"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="teleport_btn_lp"> <button label="Teleportuj" name="teleport_btn" tool_tip="Zaproponuj teleport"/> </layout_panel> </layout_stack> diff --git a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml b/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml index d223ee9c696d2297eb5f35a8e2999cc27d208d00..190323c3b05e08ddfac36535e3c60d3cf641a164 100644 --- a/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml +++ b/indra/newview/skins/minimal/xui/pt/panel_im_control_panel.xml @@ -10,20 +10,20 @@ <layout_panel name="teleport_btn_panel"> <button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/> </layout_panel> - <layout_panel name="share_btn_panel"> - <button label="Compartilhar" name="share_btn"/> - </layout_panel> - <layout_panel name="pay_btn_panel"> - <button label="Pagar" name="pay_btn"/> - </layout_panel> <layout_panel name="call_btn_panel"> <button label="Ligar" name="call_btn"/> </layout_panel> <layout_panel name="end_call_btn_panel"> <button label="Encerrar ligação" name="end_call_btn"/> </layout_panel> - <layout_panel name="voice_ctrls_btn_panel"> - <button label="Controles de voz" name="voice_ctrls_btn"/> + <layout_panel name="block_btn_panel"> + <button label="Bloquear" name="block_btn"/> + </layout_panel> + <layout_panel name="unblock_btn_panel"> + <button label="Desbloquear" name="unblock_btn"/> + </layout_panel> + <layout_panel name="volume_ctrl_panel"> + <slider name="volume_slider" tool_tip="Volume da ligação" value="0.5"/> </layout_panel> </layout_stack> </panel> diff --git a/indra/newview/skins/minimal/xui/pt/panel_people.xml b/indra/newview/skins/minimal/xui/pt/panel_people.xml index d46c440eb966d738d2f86635de8a4c101ade417f..0e98c586c65554a896a78b860f42271d845e4686 100644 --- a/indra/newview/skins/minimal/xui/pt/panel_people.xml +++ b/indra/newview/skins/minimal/xui/pt/panel_people.xml @@ -49,13 +49,13 @@ Em busca de alguém para conversar? Confira o botão Destinos abaixo. <layout_panel name="view_profile_btn_lp"> <button label="Perfil" name="view_profile_btn" tool_tip="Exibir fotografia, grupos e outras informações dos residentes"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="im_btn_lp"> <button label="MI" name="im_btn" tool_tip="Abrir sessão de mensagem instantânea"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="call_btn_lp"> <button label="Ligar" name="call_btn" tool_tip="Ligar para este residente"/> </layout_panel> - <layout_panel name="chat_btn_lp"> + <layout_panel name="teleport_btn_lp"> <button label="Teletransportar" name="teleport_btn" tool_tip="Oferecer teletransporte"/> </layout_panel> </layout_stack> diff --git a/shining-fixes_rev18977.patch b/shining-fixes_rev18977.patch new file mode 100644 index 0000000000000000000000000000000000000000..b711da870a951304979f5d0045253f82d0765185 --- /dev/null +++ b/shining-fixes_rev18977.patch @@ -0,0 +1,41 @@ +# HG changeset patch +# User Dave Parks <davep@lindenlab.com> +# Date 1308673064 18000 +# Node ID 95c5639a3f80920e8dc54703d894517dd7694edf +# Parent 6af10678de4736222b2c3f7e010e984fb5b327de +SH-208 Disable VBO on all intel graphics chips (stability improvement). + +diff -r 6af10678de47 -r 95c5639a3f80 indra/newview/featuretable.txt +--- a/indra/newview/featuretable.txt Mon Jun 20 16:42:31 2011 -0700 ++++ b/indra/newview/featuretable.txt Tue Jun 21 11:17:44 2011 -0500 +@@ -1,4 +1,4 @@ +-version 29 ++version 30 + + // NOTE: This is mostly identical to featuretable_mac.txt with a few differences + // Should be combined into one table +@@ -297,6 +297,7 @@ + + list Intel + RenderAnisotropic 1 0 ++RenderVBOEnable 1 0 + + list GeForce2 + RenderAnisotropic 1 0 +diff -r 6af10678de47 -r 95c5639a3f80 indra/newview/featuretable_xp.txt +--- a/indra/newview/featuretable_xp.txt Mon Jun 20 16:42:31 2011 -0700 ++++ b/indra/newview/featuretable_xp.txt Tue Jun 21 11:17:44 2011 -0500 +@@ -1,4 +1,4 @@ +-version 29 ++version 30 + + // NOTE: This is mostly identical to featuretable_mac.txt with a few differences + // Should be combined into one table +@@ -295,6 +295,7 @@ + + list Intel + RenderAnisotropic 1 0 ++RenderVBOEnable 1 0 + + list GeForce2 + RenderAnisotropic 1 0